Java Mail 发送邮件

2018-12-13  本文已影响0人  berger_w

转自梁桂钊的博客 

Spring 对 Java Mail 有很好的支持。因此,Spring Boot 也提供了自动配置的支持。

Spring Boot 集成 Java Mail

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-mail</artifactId>

</dependency>

在 src/main/resources/application.properties 中配置邮件信息,网易邮箱为例

#email

spring.mail.host=smtp.163.com

spring.mail.username=请输入用户名

spring.mail.password=请输入密码

spring.mail.port=25

spring.mail.protocol=smtp

spring.mail.default-encoding=UTF-8

我们通过编写单元测试用例,测试 Java Mail 是否正常工作。值得注意的是,邮件包括几种类型:简单文本的邮件、 HTML 文本的邮件、 内嵌图片的邮件、 包含附件的邮件。

@RunWith(SpringJUnit4ClassRunner.class)

@SpringApplicationConfiguration(WebMain.class)

public class SpringMailTest {

    @Autowired

    private JavaMailSenderImpl mailSender;

    /**

    * 发送包含简单文本的邮件

    */

    @Test

    public void sendTxtMail() {

        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();

        // 设置收件人,寄件人

        simpleMailMessage.setTo(new String[] {"lianggzone@163.com"});

        simpleMailMessage.setFrom("lianglevel@163.com");

        simpleMailMessage.setSubject("Spring Boot Mail 邮件测试【文本】");

        simpleMailMessage.setText("这里是一段简单文本。");

        // 发送邮件

        mailSender.send(simpleMailMessage);

        System.out.println("邮件已发送");

    }

    /**

    * 发送包含HTML文本的邮件

    * @throws Exception

    */

    @Test

    public void sendHtmlMail() throws Exception {

        MimeMessage mimeMessage = mailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);

        mimeMessageHelper.setTo("lianggzone@163.com");

        mimeMessageHelper.setFrom("lianglevel@163.com");

        mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【HTML】");

        StringBuilder sb = new StringBuilder();

        sb.append("<html><head></head>");

        sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>");

        sb.append("</html>");

        // 启用html

        mimeMessageHelper.setText(sb.toString(), true);

        // 发送邮件

        mailSender.send(mimeMessage);

        System.out.println("邮件已发送");

    }

    /**

    * 发送包含内嵌图片的邮件

    * @throws Exception

    */

    @Test

    public void sendAttachedImageMail() throws Exception {

        MimeMessage mimeMessage = mailSender.createMimeMessage();

        // multipart模式

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);

        mimeMessageHelper.setTo("lianggzone@163.com");

        mimeMessageHelper.setFrom("lianglevel@163.com");

        mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【图片】");

        StringBuilder sb = new StringBuilder();

        sb.append("<html><head></head>");

        sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p>");

        // cid为固定写法,imageId指定一个标识

        sb.append("<img src=\"cid:imageId\"/></body>");

        sb.append("</html>");

        // 启用html

        mimeMessageHelper.setText(sb.toString(), true);

        // 设置imageId

        FileSystemResource img = new FileSystemResource(new File("D:/images/01.jpg"));

        mimeMessageHelper.addInline("imageId", img);

        // 发送邮件

        mailSender.send(mimeMessage);

        System.out.println("邮件已发送");

    }

    /**

    * 发送包含附件的邮件

    * @throws Exception

    */

    @Test

    public void sendAttendedFileMail() throws Exception {

        MimeMessage mimeMessage = mailSender.createMimeMessage();

        // multipart模式

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");

        mimeMessageHelper.setTo("lianggzone@163.com");

        mimeMessageHelper.setFrom("lianglevel@163.com");

        mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【附件】");

        StringBuilder sb = new StringBuilder();

        sb.append("<html><head></head>");

        sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>");

        sb.append("</html>");

        // 启用html

        mimeMessageHelper.setText(sb.toString(), true);

        // 设置附件

        FileSystemResource img = new FileSystemResource(new File("D:/images/01.jpg"));

        mimeMessageHelper.addAttachment("image.jpg", img);

        // 发送邮件

        mailSender.send(mimeMessage);

        System.out.println("邮件已发送");

    }

}

上一篇 下一篇

猜你喜欢

热点阅读