Hutool发送邮件

简介: Hutool发送邮件

1 依赖

    <!--我使用的SpringBoot版本是2.2.5.RELEASE-->
      <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.4</version>
        </dependency>
         <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

2 配置

放在classpath下,我的是springBoot,所以直接放在resources下即可

2.1、内容如下:

# 邮件服务器的SMTP地址
host = smtp.163.com
# 邮件服务器的SMTP的端口
port = 25
# 发件人(必须正确,否则发送失败)
from = xxx@163.com<xxx@163.com>
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
user =xxx@163.com
# 密码
pass = xxx
# 使用STARTTLS安全链接
startttlsEnable = true

3 发送

/**
 * @Author: oldlu
 * @Description:
 **/
public class MailUtilsTest {
    public static void main(String[] args) {
        String text = MailUtil.send("test@163.com", "title.test", "mail.send.test", false, null);
        System.out.println(text);
    }
}

4 总结

使用hutool的发送邮件还是很简单的,它都封装好了,我上面只是发送个文本,当然发送文件,多人发送、抄送、密文都支持,发送速度还可以的。

5 线上遇到的问题

遇到错误:

cn.hutool.extra.mail.MailException: MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 25
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Copy to clipboardErrorCopied

这个错误可能是需要SSL验证造成的也有可能是线上服务器因为阿里云屏蔽了非SSL链接的25发送邮件端口,我们可以手动跳过这个验证:

MailAccount mailAccount = new MailAccount();
mailAccount.setAuth(true);
mailAccount.setSslEnable(true);
...
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
mailAccount.setCustomProperty("mail.smtp.ssl.socketFactory", sf);
Mail mail = Mail.create(mailAccount)
    .setTos("xx@xx.com")
    .setTitle("邮箱验证")
    .setContent("您的验证码是:<h3>2333</h3>")
    .setHtml(true)
    .send();

或者更改短信发送端口为:465

6 实例代码:

 if (StringUtils.isBlank(filePath) && StringUtils.isBlank(fileId)) {
                                MailAccount mailAccount = new MailAccount();
                                mailAccountConfig(mailAccount);
                                sendEmail(email, subject, content, mailAccount, false);
                            }
    private void mailAccountConfig(MailAccount mailAccount) throws GeneralSecurityException {
        mailAccount.setAuth(true);
        mailAccount.setSslEnable(true);
        mailAccount.setHost("smtp.163.com");
        mailAccount.setPort(465);
        mailAccount.setFrom("sdfayuan@163.com");
        mailAccount.setUser("sdfayuan");
        mailAccount.setPass("*******");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        mailAccount.setCustomProperty("mail.smtp.ssl.socketFactory", sf);
    }
目录
相关文章
|
Java Maven 数据安全/隐私保护
邮件发送轻松搞定:结合Hutool实现SpringBoot邮件功能
邮件发送轻松搞定:结合Hutool实现SpringBoot邮件功能
422 0
|
7月前
|
安全 Java
Hutool 笔记 日期工具类的使用
Hutool 笔记 日期工具类的使用
330 0
|
JSON 数据格式
hutool使用
hutool使用
Java实战:使用Hutool中的MailUtil实现邮件的发送
今天给大家分享使用Hutool中的MailUtil实现邮件的发送,主要实现了发送普通文本邮件、发送Html文件、发送邮件包含本地附件、远程下载附件、指定多个发件人的功能。具体的大家可以互相沟通交流!
Java实战:使用Hutool中的MailUtil实现邮件的发送
Java:javax.mail通过163服务器发送邮件
Java:javax.mail通过163服务器发送邮件
159 0
J3
|
XML 编解码 前端开发
Hutool这么好用的工具确定不用吗?
Hutool这么好用的工具确定不用吗?
J3
1073 0
Hutool这么好用的工具确定不用吗?