邮箱设置
这里以QQ邮箱为例。先登录QQ邮箱,然后点击 设置》账户》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。如下图:

然后选择开启IMAP/SMTP服务,之后系统会提供一个授权码,记录下该授权码。然后查看相关系统配置,包括服务器地址,SSL安全加密端口。如下图:

Java代码组织
在写代码之前,需要注意以下几点:
(1)有些邮箱验证较为严格,需要配置SSL安全加密,比如QQ邮箱。
(2)在配置的时候需要根据不同的邮箱选择是设置授权码还是登录密码(据测试,QQ邮箱必须用授权码,网易163邮箱可以选择开启或关闭授权码)
下面给出参考代码(只需将相关配置改为自己的相关信息就能进行邮件发送):
package org.devsong.util;
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.Date;
import java.util.Properties;
public class JavaEmailUtil {
private String sender;
private String receiver;
public JavaEmailUtil(String sender, String receiver) {
this.sender = sender;
this.receiver = receiver;
}
public boolean sendMsg(String content){
String myEmailPassword = "xxxxxxxx"; //注:QQ邮箱需要 授权码 而非 密码, 网易邮箱可以设置用密码还是授权码
//新建配置文件
Properties prop = new Properties();
//设置发送协议为SMTP
prop.setProperty("mail.transport.protocol", "smtp");
//设置发送服务器地址
prop.setProperty("mail.smtp.host", "smtp.qq.com");
//设置需要验证,即需提供密码(QQ邮箱需要 授权码 而非 密码, 网易邮箱可以设置用密码还是授权码)
prop.setProperty("mail.smtp.auth", "true");
//设置SSL安全连接相关的类,QQ邮箱经测试必须开启
prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//设置服务器端口(官方设置页有提供,QQ邮箱截至8月27日为465或者587)
prop.setProperty("mail.smtp.port", "465");
prop.setProperty("mail.smtp.socketFactory.port", "465");
//获取符合配置的Session实例
Session session = Session.getDefaultInstance(prop);
//开启Debug模式以便调试,成功后可去除
//session.setDebug(true);
try {
//获取消息对象,获取发送实例,连接、发送、关闭发送实例
MimeMessage message = createMessage(session, content);
Transport transport = session.getTransport();
transport.connect(sender, myEmailPassword);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
} catch (UnsupportedEncodingException | MessagingException e) {
e.printStackTrace();
return false;
}
}
private MimeMessage createMessage(Session session, String content) throws UnsupportedEncodingException, MessagingException {
MimeMessage message = new MimeMessage(session);
//设置发件人, internetAddress参数:Email地址,昵称(随意),编码
message.setFrom(new InternetAddress(sender, "DevSong", "utf-8"));
//设置收件人,参数:
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiver, "用户", "utf-8"));
//设置邮件标题
message.setSubject("邮箱验证", "utf-8");
//设置邮件内容
message.setContent(content,"text/html;charset=UTF-8");
//设置发件时间
message.setSentDate(new Date());
//保存更改
message.saveChanges();
return message;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
}