通过 javaMail 发送邮件很简单,直接上代码:
package com.xixi.mail;
import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.apache.commons.lang3.StringUtils;
public class SendMail {
public void sendMail(){
try {
Properties properties = System.getProperties();
// 设置smtp服务器
properties.setProperty("mail.smtp.host", "smtp.exmail.qq.com");
properties.put("mail.smtp.auth", "true");
properties.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(properties);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
InternetAddress sender = new InternetAddress("发送人邮箱");
message.setFrom(sender);
File file = new File("test.txt");
//接收人
String mailTo = "xxxx1.@qq.com,xxxx2.@qq.com";
if (!StringUtils.isBlank(mailTo)) {
String[] mailToList = mailTo.split(",");
for (String mailToPerson : mailToList) {
message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailToPerson));
}
//添加抄送人
String mailCc = "xxxx3.@qq.com,xxxx4@qq.com";
if (StringUtils.isNotBlank(mailCc)){
for (String mailCcPerson : mailCc.split(",")){
message.addRecipient(Message.RecipientType.CC, new InternetAddress(mailCcPerson));
}
}
message.setSubject("发送邮件主题");
String content = "发送邮件正文";
message.setContent(content, "text/html;charset=utf-8");
//添加附件
String fileNme = file.getName();
MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setText("附件说明");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);
mimeBodyPart = new MimeBodyPart();
DataSource dataSource = new FileDataSource(file);
mimeBodyPart.setDataHandler(new DataHandler(dataSource));
mimeBodyPart.setFileName(MimeUtility.encodeWord(fileNme));
multipart.addBodyPart(mimeBodyPart);
message.setContent(multipart);
message.saveChanges();
Transport transport = session.getTransport();
transport.connect("smtp.exmail.qq.com", "发送人邮箱", "发送人邮箱密码");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
邮件接收人和抄送人都支持多人,需要注意的是:
- 发件人的邮箱账户名和密码:有的邮箱设置了独立密码,还有的必须用授权码登录(qq邮箱)
- 发件人的SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com,本demo使用的是qq邮箱