SpringBoot实现QQ邮件发送(普通文本,附件,富文本文件)

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"
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值