SpringBoot实现QQ邮件发送
我用于我的个人博客用户注册成功后发送注册成功消息与找回密码功能。
一、打开QQ邮箱获取授权码
在QQ邮箱设置中点击账户,开启STMP服务,得到授权码,这个授权码就相当于我们要发送邮件的密码(请勿告诉他人)。
二、导入依赖编辑配置文件
<!--发送邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1、设置邮箱主机
2、设置用户名
3、设置密码,该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码
4、设置开启纯文本通信协议。# TLS , port 587
spring.mail.properties.mail.smtp.starttls.enable=true
三、编辑代码
1、 纯文本邮件
最简单的就是发送纯文本邮件了,完整代码如下:
@Component
public class EmailUtil {
@Resource
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String from;
/**
* 发送纯文本邮件.
*
* @param to 目标email 地址
* @param subject 邮件主题
* @param text 纯文本内容
*/
public void sendMail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(text);
javaMailSender.send(message);
}
}
2、 带附件的邮件
有时候我们需要在邮件中携带附件。我们就需要发送 Mime 信息了,代码如下:
/**
* 发送邮件并携带附件.
* 请注意 from 、 to 邮件服务器是否限制邮件大小
* @param to 目标email 地址
* @param subject 邮件主题
* @param text 纯文本内容
* @param filePath 附件的路径 当然你可以改写传入文件
*/
public void sendMailWithAttachment(String to, String subject, String text, String filePath) throws MessagingException {
File attachment = new File(filePath);
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text);
helper.addAttachment(attachment.getName(),attachment);
javaMailSender.send(mimeMessage);
}
这里需要注意的是 from 、 to 邮件服务器是否限制邮件大小,避免邮件超出限定大小。
3、 富文本邮件
发送带有html模板样式的邮件
可以实现写好HTML模板然后以字符串的形式传入到helper.setText(text,true);中并开启html样式(参数为true)
/**
* 发送富文本邮件.
*
* @param to 目标email 地址
* @param subject 邮件主题
* @param text 纯文本内容
* @param filePath 附件的路径 当然你可以改写传入文件
*/
public void sendRichMail(String to, String subject, String text, String filePath) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text,true);
javaMailSender.send(mimeMessage);
}
提供一个比较好看的模板里面传的参数需要进行修改一下即可使用
"<!doctype html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>注册成功</title>\n" +
" <meta name=\"keywords\" content=\"注册成功\">\n" +
" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge, chrome=1\">\n" +
"\n" +
"</head>\n" +
"<body style=\"background-color:#ECECEC; padding: 35px;\">\n" +
"<div>\n" +
" <table cellpadding=\"0\" align=\"center\"\n" +
" style=\"width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;\">\n" +
" <tbody>\n" +
" <tr>\n" +
" <th valign=\"middle\"\n" +
" style=\"height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #42a3d3; background-color: #49bcff; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;\">\n" +
" <font face=\"微软雅黑\" size=\"5\" style=\"color: rgb(255, 255, 255); \">注册成功! (清峰小栈)</font>\n" +
" </th>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>\n" +
" <div style=\"padding:25px 35px 40px; background-color:#fff;\">\n" +
" <h2 style=\"margin: 5px 0px; \">\n" +
" <font color=\"#333333\" style=\"line-height: 20px; \">\n" +
" <font style=\"line-height: 22px; \" size=\"4\">\n" +
" 亲爱的 <span>" +
registerUser.getUsername() +
"</span></font>\n" +
" </font>\n" +
" </h2>\n" +
" <p>首先感谢您加入清峰小栈!下面是您的账号信息<br>\n" +
"<!-- 您的账号:<b><span>" +
registerUser.getUsername() +
"</span></b><br>-->\n" +
" 您的密码:<b><span>" +
registerUser.getPassword() +
"</span></b><br>\n" +
" 您注册时的日期:<b>" +
simpleDateFormat.format(date) +
"</b><br>\n" +
" 您的邮箱:<a><b><span>" +
registerUser.getEmail() +
"</span></b></a><br>\n" +
" 当您在使用本网站时,遵守当地法律法规。<br>\n" +
" 如果您有什么疑问可以联系管理员,Email: 1305366530@qq.com</p>\n" +
" <p align=\"right\"><b>" +
"</b></p>\n" +
" <p align=\"right\">" +
simpleDateFormat.format(date) +
"</p>\n" +
" <div style=\"width:700px;margin:0 auto;\">\n" +
" <div style=\"padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;\">\n" +
" <p>此为系统邮件,请勿回复<br>\n" +
" 请保管好您的邮箱,避免账号被他人盗用\n" +
" </p>\n" +
" <p>©清峰</p>\n" +
" </div>\n" +
" </div>\n" +
" </div>\n" +
" </td>\n" +
" </tr>\n" +
" </tbody>\n" +
" </table>\n" +
"</div>\n" +
"</body>\n" +
"\n" +
"\n" +
"\n"