上次写的java发送邮件的方法并不完善,这次写了个比较完善的接口,方便使用的时候调用,后期我还会继续完善

引入Maven

1
2
3
4
5
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>

代码

邮箱账号这里还以搜狐邮箱为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.lzc.mail.utlis;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

/**
* 作者: 小李同志
* 文件名: MailUtli.java
* 路径: com.lzc.mail.utlis
* 时间: 2024-08-27 09:15
* 版本: 1.0
* 描述: TODO java发邮件调用接口
**/
public class MailUtli {
//账号名称
private final static String userName = "xxxx@sohu.com";
//账号密码
private final static String password = "xxxxxxxxxxx";
//邮箱服务器地址
private final static String host = "smtp.sohu.com";
//邮箱服务器端口
private final static String port = "465";

//发件人昵称
private final static String name = "小李同志";
private static final Properties properties = new Properties();

static {
//设置服务器
properties.put("mail.smtp.host", host);
//服务器端口
properties.put("mail.smtp.port", port);
//开启SSL验证
properties.put("mail.smtp.auth", true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.protocols", "TLSv1.2");

}


/**
* 发送普通消息
*
* @param to 接收方邮箱
* @param subject 邮件标题
* @param body 邮件内容
*/
public static void sendAMessage(String to, String subject, String body) {
//创建会话
Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
//连接账号
return new javax.mail.PasswordAuthentication(userName, password);
}
});
// 创建邮件消息
// 创建一个基于当前会话的 MimeMessage 对象,代表一封邮件
Message message = new MimeMessage(session);
try {
// 设置发件人邮箱地址和发件人名称
InternetAddress internetAddress = new InternetAddress(userName, name);
message.setFrom(internetAddress);

// 设置收件人地址,Message.RecipientType.TO 表示收件人类型为 TO(直接收件人)
// InternetAddress.parse(to) 将字符串形式的收件人地址解析为 InternetAddress 对象列表
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
//设置邮件标题
message.setSubject(subject);
//设置邮件内容
message.setText(body);

//发送邮件
Transport.send(message);
} catch (UnsupportedEncodingException | MessagingException e) {
throw new RuntimeException(e);
}
}
}