SpringBoot慕课学习-SpringBoot发送邮件

1. 两种基本邮件传输协议:STMP协议、POP3协议

2. 发展的两种协议 IMAP协议、Mime协议

 

文本、图片、附件、HTML邮件、邮件模板、异常处理、

1. 引入依赖pom.xml

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>

2.  配置application.yml

配置用户名和密码;  QQ邮箱密码需要获取授权码,不是真实QQ密码

spring: 
    mail: 
        username: yourMail@163.com
        password: xxxxx
     host: smtp.163.com

3. 自动注入

@Autowired
JavaMailSenderImpl mailSender;

 

 4. java代码

@Service
public class MailService {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

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

    @Autowired
    private JavaMailSender mailSender;

    public void sysHello() {
        System.out.println("Hello world");

    }

    public void sendSimpleMail(String to, String subject, String content) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(content);
        message.setFrom(from);
        mailSender.send(message);
    }

    public void sendHtmlMail(String to, String subject, String content) {

        logger.info("发送HTML邮件开始:{},{},{}",to,subject,content);
        try {
            MimeMessage message = mailSender.createMimeMessage();

            MimeMessageHelper helper = null;
            helper = new MimeMessageHelper(message, true);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            helper.setFrom(from);
            mailSender.send(message);
            logger.error("发送HTML邮件成功");
        } catch (MessagingException e) {
            logger.error("发送HTML邮件失败",e);
        }


    }

    public void sendAttachmentMail(String to, String subject, String content, String filePath) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        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 = file.getFilename();
        helper.addAttachment(fileName, file);
        //将filePath作为数组进行遍历发送多个附件
        helper.addAttachment(fileName + "2", file);
        mailSender.send(message);

    }

    /**
     * 发送静态图片
     *
     * @param to
     * @param subject
     * @param content
     * @param rscPath
     * @param rscId
     * @throws MessagingException
     */
    public void sendInlinResourceMail(String to, String subject, String content,
                                      String rscPath, String rscId) throws MessagingException {
        //1. 创建MimeMessage实例
        MimeMessage message = mailSender.createMimeMessage();
        //2. 创建MimeMessageHelper实例
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        //发件人
        helper.setFrom(from);

        helper.setTo(to);
        helper.setSubject(subject);
        // true/false是否为html
        helper.setText(content, true);

        //文件
        FileSystemResource res = new FileSystemResource(new File(rscPath));
        //添加
        helper.addInline(rscId, res);
//        helper.addInline(rscId,res);
        mailSender.send(message);
    }
}

 

邮件自动配置

MailSenderAutoConfiguration

 

posted @ 2018-09-14 08:23  BigOrang  阅读(220)  评论(0编辑  收藏  举报