最近在进行Maven项目实践, 将项目部署到阿里云阿里云轻量级服务器上时,发现在自己电脑上测试可用的发送邮件工具类无法使用.
上网查阅资料, 得知是阿里云封掉了发送邮件的25和465端口.
于是在网上找到了以下工具类, 稍加改造, 代码如下:
import java.util.Properties;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
public class MailUtils587 {
private static JavaMailSenderImpl javaMailSender;
private static String userName = "xxxxxxxxx@qq.com";
static {
javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.qq.com");// 链接服务器
javaMailSender.setUsername(userName);// 账号
javaMailSender.setPassword("xxxxxxxxxxxxx");// 密码
javaMailSender.setDefaultEncoding("UTF-8");
Properties properties = new Properties();
// 设置通过ssl协议使用587端口发送、使用默认端口(25)时下面三行不需要
properties.setProperty("mail.smtp.auth", "true");// 开启认证
properties.setProperty("mail.smtp.socketFactory.port", "587");// 设置ssl端口
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
javaMailSender.setJavaMailProperties(properties);
}
public static void sendEmail(final String title, final String content, final String toMail) {
new Thread(new Runnable() {// 开启线程异步发送 防止发送请求时间过长
@Override
public void run() {
try {
if (!toMail.equals("")) {
String[] toAddress = toMail.split(",");
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
helper.setFrom(userName);
helper.setTo(toAddress);
helper.setSubject(title);
helper.setText(content, true); // 内容
javaMailSender.send(message); // 发送邮件
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
//测试发送
public static void main(String[] args) {
sendEmail("title", "content", "xxxxxxxxxx@qq.com");
}
}
亲测某讯邮箱可用~
注意:
- 密码不是登陆密码, 而是用于登录第三方客户端邮箱的授权码, 该授权码可以在QQ邮箱-设置-账户中通过二维码获取;
- 需要先在pom中导入spring-context-support
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>