博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot发送邮件功能
阅读量:7218 次
发布时间:2019-06-29

本文共 3492 字,大约阅读时间需要 11 分钟。

第一部分(背景)

1.1 邮件的使用场景

  • 注册验证
  • 网站营销
  • 密码找回
  • 提醒、监控告警
  • 触发机制

1.2 邮件的发送原理

邮件传输协议:

  • SMTP协议(规定如何把邮件从一台服务器传输到另一台服务器)

  • Mime协议(增强了二进制文件传输功能)

  • POP3协议(规定了如何把邮件从邮件服务器中的下载到客户端)

  • IMAP协议(对POP协议的补充。即:客户端对邮件的操作,会反馈给邮件服务器)

发送邮件的流程图:

1.3 邮件的发送历史

1969年10月,世界第一份电子邮件。

1987年9月14日,中国第一封电子邮件。

1.4 SpringBoot介绍

  • 约定大于配置

  • 简单快速开发

  • 强大的生态链家族

第二部分(实践)

2.1 发送文本邮件

  • 引入jar依赖包
org.springframework.boot
spring-boot-starter-mail
复制代码
  • 配置邮箱参数
spring.mail.host=smtp.163.comspring.mail.port=25spring.mail.username=***@163.comspring.mail.password=***spring.mail.default-encoding=UTF-8复制代码
  • 封装SimpleMailMessage
  • JavaMailSender
@Servicepublic class MailService {    @Value("${spring.mail.username}")    private String from;    @Autowired    private MailSender mailSender;    /**     * 发送方法     * @param toUser     * @param subject     * @param content     */    public void sendSimpleMail(String toUser, String subject, String content){        SimpleMailMessage message = new SimpleMailMessage();                // 接收人        message.setTo(toUser);        // 发送主题        message.setSubject(subject);        // 发送内容        message.setText(content);        //  发送人        message.setFrom(from);        mailSender.send(message);    }}复制代码

2.2 发送HTML邮件

/**     * 发送html邮件     * @param toUser     * @param subject     * @param content     */    public void sendHTMLEmail(String toUser, String subject, String content) throws MessagingException {        // 创建发送消息        MimeMessage message = mailSender.createMimeMessage();        // 创建发送消息Helper        MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);        messageHelper.setTo(toUser);        messageHelper.setSubject(subject);        messageHelper.setText(content, true);        messageHelper.setFrom(from);        // 发送        mailSender.send(message);    }复制代码

2.3 发送附件邮件

/**     * 发送带附件的邮件     * @param toUser     * @param subject     * @param content     * @param filePath     */    public void sendAttachmentEmail(String toUser, String subject, String content, String filePath) throws MessagingException {        MimeMessage message = mailSender.createMimeMessage();        MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);        messageHelper.setFrom(from);        messageHelper.setTo(toUser);        messageHelper.setSubject(subject);        messageHelper.setText(content);        // 获取附件文件        FileSystemResource file = new FileSystemResource(filePath);        // 获取文件名称        String fileName = file.getFilename();        // 添加文件        messageHelper.addAttachment(fileName, file);        mailSender.send(message);    }复制代码

2.4 发送带图片邮件

/**     * 发送邮件中包含图片     * @param toUser     * @param subject     * @param content     * @param rscPath     * @param rscId     * @throws MessagingException     */    public void sendInlineResourceEmail(String toUser, String subject, String content, String rscPath, String rscId) throws MessagingException {        MimeMessage message = mailSender.createMimeMessage();        MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);        messageHelper.setFrom(from);        messageHelper.setTo(toUser);        messageHelper.setSubject(subject);        messageHelper.setText(content, true);        // 获取图片        FileSystemResource res = new FileSystemResource(rscPath);        // 添加图片和图片ID        messageHelper.addInline(rscId, res);        mailSender.send(message);    }复制代码

2.5 邮件系统

2.6 常见错误码

转载于:https://juejin.im/post/5bed4dccf265da613437f9db

你可能感兴趣的文章
分级聚类算法
查看>>
Web Services 入门(之二)
查看>>
随机模拟MCMC和Gibbs Sampling
查看>>
网络安全是一种态度
查看>>
POJ1131 Octal Fractions
查看>>
mysql-ulogd2.sql
查看>>
119. Pascal's Triangle II - Easy
查看>>
349. Intersection of Two Arrays - Easy
查看>>
[算法练习]最长公共子串(LCS)
查看>>
p转c++
查看>>
树(tree)
查看>>
codevs——2645 Spore
查看>>
ssh服务之 远程登录和端口转发
查看>>
java环境配置正确,但是tomcat不能启动的解决办法
查看>>
我就是想找个人聊聊天,说说我这近四年来的经历
查看>>
不同的测试方法使用的场景
查看>>
Hadoop快速入门
查看>>
Problem S
查看>>
SVN上传的时候没法显示文件名,只显示后缀名
查看>>
Python:pygame游戏编程之旅四(游戏界面文字处理)
查看>>