赞
踩
想学习架构师构建流程请跳转:Java架构师系统架构设计
<!--我使用的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>
放在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
/**
* @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);
}
}
使用hutool的发送邮件还是很简单的,它都封装好了,我上面只是发送个文本,当然发送文件,多人发送、抄送、密文都支持,发送速度还可以的。
遇到错误:
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
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);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。