目录

chen 的个人博客

VX:ZzzChChen
Phone:13403656751
Email:zxydczzs@gmail.com

X

Java邮箱发送服务

一、邮箱开启 SMTP 服务

这里使用 QQ 邮箱为示例,其他邮箱大同小异

  1. 登录 QQ 邮箱; (https://mail.qq.com/

  2. 登录成功后点击“设置”;

    image.png

  3. 导航栏选择“账户”,下滑找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务”开启“SMTP”服务;

    image.png

  4. 点击开启按钮,经过短信验证后开启服务;

    image.png

  5. 短信发送后,点击我已发送,验证成功后会有一个弹出框,有一个“授权码”需要将其记下来。

    image.png

二、测试邮件发送

pom 依赖

 1	<!--  hutool  -->
 2        <dependency>
 3            <groupId>cn.hutool</groupId>
 4            <artifactId>hutool-all</artifactId>
 5            <version>5.7.10</version>
 6        </dependency>
 7
 8	<!-- javax.mail  -->
 9        <dependency>
10            <groupId>javax.mail</groupId>
11            <artifactId>mail</artifactId>
12            <version>1.4.7</version>
13        </dependency>
14
 1package com.zxy.demo.mail;
 2
 3import cn.hutool.extra.mail.MailAccount;
 4import cn.hutool.extra.mail.MailUtil;
 5
 6import java.io.File;
 7
 8/**
 9 * @description: study
10 * 模块名称:
11 * 说明: 邮箱发送
12 * 作者(@author): zxy
13 * 创建日期: 2022年1月9日14:10:55
14 */
15
16public class MailSend {
17    public static void main(String[] args) {
18        MailAccount account = new MailAccount();
19
20        //SMTP服务器域名
21        account.setHost("smtp.qq.com");
22        //SMTP服务端口
23        account.setPort(25);
24        //是否需要用户名密码验证
25        account.setAuth(true);
26        //发送方,遵循RFC-822标准
27        account.setFrom("xxxxx@qq.com");
28        //用户名
29        account.setUser("xxxxx@qq.com");
30        //密码,可以是邮箱密码,也可以授权码
31        account.setPass("xxxxx");
32
33        /**
34         * 参数说明
35         * @param mailAccount 邮件认证对象
36         * @param to          收件人,多个收件人逗号或者分号隔开,也可以是列表
37         *                    MailUtil.send(account, CollUtil.newArrayList(""), "标题", "正文", false, new File(""));
38         * @param subject     标题
39         * @param content     正文
40         * @param isHtml      是否为HTML格式
41         * @param files       附件列表(没有可不传)。
42         */
43        try {
44            MailUtil.send(account, "xxxxx@qq.com", "标题", "正文", false, new File(""));
45        } catch (Exception e) {
46            System.out.println("发送失败,错误信息:" + e);
47            e.printStackTrace();    
48        }
49      
50    }
51}
52

三、注意事项

  1. 发送 html 格式的邮件,html 样式可能不会适配所有邮箱,主流 163,gmail 邮箱是适配的,qq 邮箱如果样式是在 head 中写着,则不会适配,需要写在行内标签 style 中才会生效。
  2. 抛出“连接不到 SMTP 服务器,端口 25”异常,先从配置查起,配置如果确定无误,则查看是不是被杀毒软件干掉了(本地),如果在云服务器中运行,比如阿里云,腾讯云等,需要去控制台解封 25 端口,注意:不是安全组端口 25 放行,而是解封。可以看这篇文章(https://www.fwqbk.com/tencent/95.html

标题:Java邮箱发送服务
作者:zzzzchen
地址:https://dczzs.com/articles/2022/01/09/1641709762971.html