https://www.cnblogs.com/xdp-gacl/p/4220190.html
https://blog.youkuaiyun.com/qq_28379809/article/details/80080311
1. 注册邮箱
推荐使用163邮箱,然后开启POP3/SMTP/IMAP服务,接着开启客户端授权密码。
2. javamail——maven配置依赖包
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
1
2
3
4
5
6
注意:有些版本可能会报错,如1.4.7版本(亲测)
3. 创建与发送邮件
发送邮件需要什么:发件邮箱、发件邮箱密码、收件邮箱、邮件内容;
public class EmailServiceImpl {
public static String rootEmailAddress = "xxx@163.com";
//客户端授权密码
public static String rootEmailPassword = "xxxx";
public static String rootEmailSMTPHost = "smtp.163.com";
/**
* 发送指定content的邮件至用户邮箱
* @param targetEmail
* @param username
* @param content
* @return
*/
public boolean sendEmail(String targetEmail, String username, String content) {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", rootEmailSMTPHost); // 发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
//根据配置创建会话对象,用于和邮件服务器交互
Session session = Session.getInstance(props);
session.setDebug(true);
//创建一封邮件
try {
MimeMessage message = createMimeMessage(session,targetEmail,username,content);
Transport transport = session.getTransport();
transport.connect(rootEmailAddress, rootEmailPassword);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
/**
* 创建邮件
* @param session
* @param targetEmail
* @param username
* @param content
* @return
* @throws Exception
*/
public static MimeMessage createMimeMessage(Session session,String targetEmail,String username,String content) throws Exception {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(rootEmailAddress,"root","UTF-8"));//root即是发件人name
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(targetEmail,username,"UTF-8"));
message.setSubject("测试邮件", "UTF-8");
message.setContent(content, "text/html;charset=UTF-8");
message.setSentDate(new Date());
message.saveChanges();
return message;
}