1.必要条件:
a.有126邮箱,并且要有授权码,授权码获取:
点击上图的设置,如下,确保这两个服务开启
在授权密码管理界面新增授权密码,记住新增的授权密码和下面的SMTP服务器名称,下面编码会用到
b.要下载 javax.activation / javax.mail 两个jar包,若是maven工程,直接导入pom依赖:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
2.发送纯文本邮件代码实现:
//邮件发送方的邮箱
private static String send="xxxxxx@126.com";
//发送方的授权码(刚刚上面获取到的授权码)
private static String password="xxxxxxxx";
//邮件接收方的邮箱
private static String to="xxxxx@outlook.com";
private static Session session=null;
private static MimeMessage msg=null;
private static Transport transport=null;
static {
Properties p=System.getProperties();
//设置邮件服务器
p.setProperty("mail.host", "smtp.126.com");
// 发送服务器需要身份验证
p.setProperty("mail.smtp.auth", "true");
//获取默认的Session对象
session=Session.getInstance(p);
//创建默认的MimeMessage
msg=new MimeMessage(session);
//设置发送方头部头字段
try {
//设置发送方的邮件地址
msg.setFrom(new InternetAddress(send));
//设置目标方(即收件人),若想发送给多人,第二个入参换成数组即可
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
transport = session.getTransport();
// 连接邮件服务器
transport.connect(send, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 发送文本邮件
* @param subject 邮件主题
* @param content 邮件内容
* @throws AddressException
* @throws MessagingException
*/
public static void sendContext(String subject,String content) throws AddressException, MessagingException {
//设置邮件主题
msg.setSubject(subject);
//设置邮件内容
msg.setText(content);
// 发送邮件
transport.sendMessage(msg, new Address[]{new InternetAddress(to)});
// 关闭连接
transport.close();
}
3.带附件的邮件:
/**
*
* @param subject 邮件主题
* @param content 邮件内容
* @param filePath 附件文件路径
* @throws MessagingException
*/
public static void sendMsgAndAttachment(String subject,String content ,String filePath) throws MessagingException {
// 创建消息部分
BodyPart mbp = new MimeBodyPart();
// 消息
mbp.setText(content);
// 创建多重消息
Multipart multipart = new MimeMultipart();
// 设置文本消息部分
multipart.addBodyPart(mbp);
// 附件部分
mbp = new MimeBodyPart();
DataSource source = new FileDataSource(filePath);
mbp.setDataHandler(new DataHandler(source));
int index=0;
String sep="/";
if(filePath.contains("\\")) {
sep="\\";
}
if(filePath.lastIndexOf(sep)>0) {
index=filePath.lastIndexOf(sep);
}
String fileName=filePath.substring(index);
mbp.setFileName(fileName);
multipart.addBodyPart(mbp);
msg.setSubject(subject);
// 发送完整消息
msg.setContent(multipart );
// 发送消息
Transport.send(msg,send,password);
System.out.println("Sent message successfully....");
}