发送邮件

    1. 使用注解标记该类
    2. 让该类继承Mailer.Util类或者使用静态引入

      import static act.mail.Mailer.Util.*

    1. src/main/resources/rythm/com/mycom/myprj/PostOffice/sendWelcome.html:

      1. <html>
      2. <head></head>
      3. <body>
      4. @args com.mycom.myprj.Contact who
      5. <h1>Welcome @who.getFirstName()!</h1>
      6. <p>Blah Blah</p>
      7. </body>
      8. </html>
    2. src/main/resources/rythm/com/mycom/myprj/PostOffice/sendBye.html:

    1. public class MyController {
    2. @PostAction("/contact")
    3. public void createContact(Contact contact) {
    4. contactDao.save(contact);
    5. postOffice.sendWelcome(contact);
    6. }
    7. @PutAction("/contact/{contactId}/signOff")
    8. public void signOff(String contactId) {
    9. Contact contact = contactDao.findById(contactId);
    10. contact.signOff();
    11. contactDao.save(contact);
    12. postOffice.sendBye(contact);
    13. }
    14. }

    因为涉及远程通信,邮件发送通常来讲是比较耗时的操作。如果在控制器中调用邮件发送会造成结果返回延时。通常的做法是采用异步方式发送邮件,在ActFramework中,你可以通过事件分派来实现:

    1. 使用act.event.On注解将邮件发送方法标注为异步事件响应器

      1. @Inject
      2. EventBus eventBus;
      3. @PostAction("/contact")
      4. public void createContact(Contact contact) {
      5. contactDao.save(contact);
      6. eventBus.trigger("contact-created", contact);
      7. }
      8. @PutAction("/contact/{contactId}/signOff")
      9. public void signOff(String contactId) {
      10. Contact contact = contactDao.findById(contactId);
      11. contact.signOff();
      12. contactDao.save(contact);
      13. eventBus.trigger("contact-signed-off", contact);
      14. }
      15. }

    返回目录