springboot 学习之路 16(整合email 发送邮件)


springboot整合email:

  springboot整合email很简单:

  第一步:添加依赖:

    

  第二步:配置文件配置:

    有两种一种网易的一种qq的(注意是企业用还是个人用。不注意会出错)【smtp.exmail.qq.com  企业用   |   smtp.qq.com  个人用】

    我只配置个人用的:配置如下:

     

    注意:qq的授权码是发短信生成的,126的是自己设置的

    

  第三步:email的实现方法:

    

package com.huhy.demo.email;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * @author : huhy on 2018/8/16.
 * @Project_name:springboot_self_gitlab
 * @LOCAL:com.huhy.demo.email
 * @description:springboot整合email
 */
@Service
public class MailService {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private JavaMailSender sender;

    @Value("${spring.mail.username}")
    private String from;

    /**
     * 发送纯文本的简单邮件
     * @param to
     * @param subject
     * @param content
     */
    public void sendSimpleMail(String to, String subject, String content){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(content);
        try {
            sender.send(message);
            logger.info("测试邮件。");
        } catch (Exception e) {
            logger.error("测试邮件发生异常!", e);
        }
    }

    /**
     * 发送html格式的邮件
     * @param to
     * @param subject
     * @param content
     */
    public void sendHtmlMail(String to, String subject, String content){
        MimeMessage message = sender.createMimeMessage();
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            sender.send(message);
            logger.info("html邮件已经发送。");
        } catch (Exception e) {
            logger.error("发送html邮件时发生异常!", e);
        }
    }

    /**
     * 发送带附件的邮件
     * @param to
     * @param subject
     * @param content
     * @param filePath
     */
    public void sendAttachmentsMail(String to, String subject, String content, String filePath){
        MimeMessage message = sender.createMimeMessage();

        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);

            sender.send(message);
            logger.info("带附件的邮件已经发送。");
        } catch (Exception e) {
            logger.error("发送带附件的邮件时发生异常!", e);
        }
    }

    /**
     * 发送嵌入静态资源(一般是图片)的邮件
     * @param to
     * @param subject
     * @param content 邮件内容,需要包括一个静态资源的id,
     * @param rscPath 静态资源路径和文件名
     * @param rscId 静态资源id
     */
    public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
        MimeMessage message = sender.createMimeMessage();

        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            FileSystemResource res = new FileSystemResource(new File(rscPath));
            helper.addInline(rscId, res);

            sender.send(message);
            logger.info("嵌入静态资源的邮件已经发送。");
        } catch (Exception e) {
            logger.error("发送嵌入静态资源的邮件时发生异常!", e);
        }
    }
}

  第四步:单元测试:

    

 1 package com.huhy.demo;
 2 
 3 import com.huhy.demo.email.MailService;
 4 import org.junit.Test;
 5 import org.junit.runner.RunWith;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.boot.test.context.SpringBootTest;
 8 import org.springframework.test.context.junit4.SpringRunner;
 9 
10 import java.util.HashMap;
11 import java.util.Map;
12 
13 @RunWith(SpringRunner.class)
14 @SpringBootTest
15 public class SpringbootEmailApplicationTests {
16 
17     @Test
18     public void contextLoads() {
19     }
20     @Autowired
21     private MailService mailService;
22 
23     //接收邮箱
24     private String to = "3403903571@qq.com";
25 
26     @Test
27     public void sendSimpleMail() {
28         mailService.sendSimpleMail(to, "主题:简单邮件", "测试邮件内容");
29     }
30 
31 
32     @Test
33     public void sendHtmlMail() {
34         Map<String, Object> model = new HashMap<String, Object>();
35         model.put("time", System.currentTimeMillis());
36         model.put("message", "huhy   测试邮件");
37         String content = "111111111111111111111111111111111";
38 
39         mailService.sendHtmlMail(to, "主题:html邮件", content);
40     }
41 
42     @Test
43     public void sendAttachmentsMail() {
44         mailService.sendAttachmentsMail(to, "主题:带附件的邮件", "有附件,请查收!", "C:\\Users\\Administrator\\Desktop\\1.png");
45     }
46 
47     @Test
48     public void sendInlineResourceMail() {
49         String rscId = "huhy";
50         mailService.sendInlineResourceMail(to,
51                 "主题:嵌入静态资源的邮件",
52                 "<html><body>这是有嵌入静态资源:<img src=\'cid:" + rscId + "\' ></body></html>",
53                 "C:\\Users\\Administrator\\Desktop\\1.png",
54                 rscId);
55     }
56 
57 
58 }

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM