项目中导入发送邮件的依赖坐标
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
配置文件中配置发送邮件的邮箱信息
#邮箱服务器(此处为QQ邮箱)
emial_service=smtp.qq.com
#发送邮件的邮箱账号
[email protected]
#发送邮件的邮箱授权码(需要在邮箱设置开启并获取授权码)
emial_password=XXXXXXXXXXXXXX
读取配置文件配置的工具类ConfigReaderUtil
public class ConfigReaderUtil {
public ConfigReaderUtil(){}
private static Properties props = new Properties();
static{
try {
//加载配置文件,需要手动指定配置文件
props.load(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties"),"UTF-8"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/*根据key获取value*/
public static String getValue(String key){
return props.getProperty(key).trim();
}
}
发送邮件工具类
public class EmailUtil {
public static String senderEmailAccount = ConfigReaderUtil.getValue("emial_account"); // 发件人邮箱账号
public static String senderEmailPassword = ConfigReaderUtil.getValue("emial_password"); // 发件人邮箱授权码
public static String senderEmailSMTPHost = ConfigReaderUtil.getValue("emial_service"); // 邮箱服务器
/**
*
* DESC : 发送邮件(邮件正文)
* receiveMailAccount 接收者邮箱账号
* subject 邮件主题
* emilContent 邮件正文内容(支持HTML)
*
*/
public static void sendMail(String receiveMailAccount, String subject, String emilContent) throws Exception {
MimeMultipart mimeMultipart = new MimeMultipart();
/*添加邮件正文*/
MimeBodyPart contentPart = new MimeBodyPart();
contentPart.setText(emilContent);
contentPart.setHeader("Content-Type", "text/html; charset=UTF-8");
mimeMultipart.addBodyPart(contentPart);
String sender = "";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); //设置传输协议
props.setProperty("mail.smtp.host", senderEmailSMTPHost); //设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.auth", "true"); //设置用户的认证方式
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderEmailAccount, sender,"UTF-8")); // 邮箱账号
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(
receiveMailAccount, "", "UTF-8"));
message.setSubject(subject, "UTF-8");
message.setContent(mimeMultipart);
message.setSentDate(new Date());
message.saveChanges();
Transport transport = session.getTransport();
transport.connect(senderEmailAccount, senderEmailPassword); // 登录邮箱
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
/**
*
* DESC : 发送邮件(正文+包含附件),如果附件不存在或路径错误,则邮件中不会显示附件
* receiveMailAccount 接收者邮箱账号
* subject 邮件主题
* emilContent 邮件正文内容(支持HTML)
* appendixURL 附件路径
*
*/
public static void sendMailAndAppendix(String receiveMailAccount, String subject, String emilContent,String appendixURL) throws Exception {
MimeMultipart mimeMultipart = new MimeMultipart();
/* 添加邮件正文 */
MimeBodyPart contentPart = new MimeBodyPart();
contentPart.setText(emilContent);
contentPart.setHeader("Content-Type", "text/html; charset=UTF-8");
mimeMultipart.addBodyPart(contentPart);
/* 添加附件 */
File file = new File(appendixURL);
if(file.exists()){
String fileName = MimeUtility.encodeWord(file.getName()); //文件存在则获取文件名并进行乱码处理
MimeBodyPart appendix = new MimeBodyPart();
appendix.setDataHandler(new DataHandler(new FileDataSource(appendixURL)));
appendix.setHeader("Content-Type", "text/html; charset=UTF-8");
appendix.setFileName(fileName); //设置附件文件名(和原文件名一致)
mimeMultipart.addBodyPart(appendix);
}else{
System.out.println("附件不存在或路径错误!");
}
String sender = "";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); //设置传输协议
props.setProperty("mail.smtp.host", senderEmailSMTPHost); //设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.auth", "true"); //设置用户的认证方式
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderEmailAccount, sender,"UTF-8")); // 邮箱账号
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "", "UTF-8"));
message.setSubject(subject, "UTF-8");
message.setContent(mimeMultipart);
message.setSentDate(new Date());
message.saveChanges();
Transport transport = session.getTransport();
transport.connect(senderEmailAccount, senderEmailPassword); // 登录邮箱
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}