/* * created on 2005/1/3 * * $Author$ * $Revision$ * $Date$ */ package io.kaif.mail; import java.util.Locale; import java.util.concurrent.CompletableFuture; import org.springframework.mail.MailException; import com.google.common.collect.ImmutableMap; import io.kaif.model.account.Account; /** * @author ingramchen */ public interface MailAgent { CompletableFuture<Boolean> send(Mail mailMessage) throws MailException; MailComposer mailComposer(); default CompletableFuture<Boolean> sendAccountActivation(Locale locale, Account account, String activationId) { Mail mail = mailComposer().createMail(); mail.setTo(account.getEmail()); mail.setSubject(mailComposer().i18n(locale, "email.activation.title")); String body = mailComposer().compose(locale, "/account-activation.ftl", ImmutableMap.of("account", account, "activationId", activationId)); mail.setText(body); return send(mail); } default CompletableFuture<Boolean> sendPasswordWasReset(Locale locale, Account account) { Mail mail = mailComposer().createMail(); mail.setTo(account.getEmail()); mail.setSubject(mailComposer().i18n(locale, "email.password-was-reset.title")); String body = mailComposer().compose(locale, "/account-password-was-reset.ftl", ImmutableMap.of("account", account)); mail.setText(body); return send(mail); } default CompletableFuture<Boolean> sendResetPassword(Locale locale, Account account, String onceToken) { Mail mail = mailComposer().createMail(); mail.setTo(account.getEmail()); mail.setSubject(mailComposer().i18n(locale, "email.reset-password.title")); String body = mailComposer().compose(locale, "/account-reset-password.ftl", ImmutableMap.of("account", account, "token", onceToken)); mail.setText(body); return send(mail); } }