集成JavaMail

    因为在服务器端,主要以发送邮件为主,例如在注册成功、登录时、购物付款后通知用户,基本上不会遇到接收用户邮件的情况,所以本节我们只讨论如何在Spring中发送邮件。

    在Spring中,发送邮件最终也是需要JavaMail,Spring只对JavaMail做了一点简单的封装,目的是简化代码。为了在Spring中集成JavaMail,我们在中添加以下依赖:

    • javax.mail:javax.mail-api:1.6.2

    以及其他Web相关依赖。

    我们希望用户在注册成功后能收到注册邮件,为此,我们先定义一个JavaMailSender的Bean:

    另外注意到需要注入的属性是从smtp.properties中读取的,因此,导入的就不止一个.properties文件,可以导入多个:

    下一步是封装一个MailService,并定义sendRegistrationMail()方法:

    观察上述代码,MimeMessage是JavaMail的邮件对象,而是Spring提供的用于简化设置MimeMessage的类,比如我们设置HTML邮件就可以直接调用setText(String text, boolean html)方法,而不必再调用比较繁琐的JavaMail接口方法。

    最后一步是调用JavaMailSender.send()方法把邮件发送出去。

    因为发送邮件是一种耗时的任务,从几秒到几分钟不等,因此,异步发送是保证页面能快速显示的必要措施。这里我们直接启动了一个新的线程,但实际上还有更优化的方法,我们在下一节讨论。

    从下载练习:使用Spring发送邮件 (推荐使用快速下载)

    Spring可以集成JavaMail,通过简单的封装,能简化邮件发送代码。其核心是定义一个JavaMailSender的Bean,然后调用其send()方法。

    集成JavaMail - 图1