发送邮件
- 使用注解标记该类
让该类继承
Mailer.Util
类或者使用静态引入import static act.mail.Mailer.Util.*
src/main/resources/rythm/com/mycom/myprj/PostOffice/sendWelcome.html
:<html>
<head></head>
<body>
@args com.mycom.myprj.Contact who
<h1>Welcome @who.getFirstName()!</h1>
<p>Blah Blah</p>
</body>
</html>
src/main/resources/rythm/com/mycom/myprj/PostOffice/sendBye.html
:
public class MyController {
@PostAction("/contact")
public void createContact(Contact contact) {
contactDao.save(contact);
postOffice.sendWelcome(contact);
}
@PutAction("/contact/{contactId}/signOff")
public void signOff(String contactId) {
Contact contact = contactDao.findById(contactId);
contact.signOff();
contactDao.save(contact);
postOffice.sendBye(contact);
}
}
因为涉及远程通信,邮件发送通常来讲是比较耗时的操作。如果在控制器中调用邮件发送会造成结果返回延时。通常的做法是采用异步方式发送邮件,在ActFramework中,你可以通过事件分派来实现:
使用
act.event.On
注解将邮件发送方法标注为异步事件响应器-
@Inject
EventBus eventBus;
@PostAction("/contact")
public void createContact(Contact contact) {
contactDao.save(contact);
eventBus.trigger("contact-created", contact);
}
@PutAction("/contact/{contactId}/signOff")
public void signOff(String contactId) {
Contact contact = contactDao.findById(contactId);
contact.signOff();
contactDao.save(contact);
eventBus.trigger("contact-signed-off", contact);
}
}