1、MailUtil.java
import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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 org.apache.log4j.Logger;
public class MailUtil {
public static Logger logger = Logger.getLogger("com.yl.common.util.MailUtil");
private static String mailFrom = null;// 指明邮件的发件人
private static String mailPwd = null;// 指明邮件的发件人登陆密码(有授权码的用授权密码)
private static String mailTo = null; // 指明邮件的收件人
private static String mailTittle = null;// 邮件的标题
private static String mailText = null; // 邮件的文本内容
private static String mail_host = null; // 邮件的服务器域名
private static String filePath = null; // 发送附件的路径
private static File mailFile = null;//发送附件文件
//测试
public static void main(String[] args) {
String mailTo = "xplife@126.com";
String mailTittle = "应聘者简历投递";
String mailText = "222";
String filePath = "D:\\mail\\from\\img\\123.xlsx";
sendAttMail(mailTo, mailTittle, mailText, filePath);
}
/**
* 无附件邮件发送
* @param mailTo
* @param mailTittle
* @param mailText
* @return
*/
public static boolean sendMail(String mailTo, String mailTittle, String mailText){
try{
mailFrom = ConfigUtil.getConfigKey("MAIL_FROM");
mailPwd = ConfigUtil.getConfigKey("MAIL_PWD");
mail_host = ConfigUtil.getConfigKey("MAIL_HOST");
MailUtil.mailTo = mailTo;
MailUtil.mailTittle = mailTittle;
MailUtil.mailText = mailText;
Properties prop = new Properties();
prop.setProperty("mail.host", mail_host);// 需要修改
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
// 使用JavaMail发送邮件的5个步骤
// 1、创建session
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证
ts.connect(mail_host, mailFrom, mailPwd);// 需要修改
// 4、创建邮件
Message message = createMail(session);
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}catch(Exception e){
logger.error(e.getMessage(), e);
return false;
}
return true;
}
/**
* 带附件路径的邮件发送
* @param mailTo
* @param mailTittle
* @param mailText
* @param filePath
* @return
*/
public static boolean sendAttMail(String mailTo, String mailTittle, String mailText, String filePath){
try{
mailFrom = ConfigUtil.getConfigKey("MAIL_FROM");
mailPwd = ConfigUtil.getConfigKey("MAIL_PWD");
mail_host = ConfigUtil.getConfigKey("MAIL_HOST");
MailUtil.mailTo = mailTo;
MailUtil.mailTittle = mailTittle;
MailUtil.mailText = mailText;
MailUtil.filePath = filePath; //"D:\\mail\\from\\img\\123.xlsx"
Properties prop = new Properties();
prop.setProperty("mail.host", mail_host);// 需要修改
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
// 使用JavaMail发送邮件的5个步骤
// 1、创建session
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证
ts.connect(mail_host, mailFrom, mailPwd);// 需要修改
// 4、创建邮件
Message message = createAttachMail(session, MailUtil.filePath);
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}catch(Exception e){
logger.error(e.getMessage(), e);
return false;
}
return true;
}
/**
* 带附件文件的邮件发送
* @param mailTo
* @param mailTittle
* @param mailText
* @param mailFile
* @return
*/
public static boolean sendAttMail(String mailTo, String mailTittle, String mailText, File mailFile){
try{
mailFrom = ConfigUtil.getConfigKey("MAIL_FROM");
mailPwd = ConfigUtil.getConfigKey("MAIL_PWD");
mail_host = ConfigUtil.getConfigKey("MAIL_HOST");
MailUtil.mailTo = mailTo;
MailUtil.mailTittle = mailTittle;
MailUtil.mailText = mailText;
MailUtil.mailFile = mailFile;
Properties prop = new Properties();
prop.setProperty("mail.host", mail_host);// 需要修改
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
// 使用JavaMail发送邮件的5个步骤
// 1、创建session
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证
ts.connect(mail_host, mailFrom, mailPwd);// 需要修改
// 4、创建邮件
Message message = createAttachMail(session, MailUtil.mailFile);
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}catch(Exception e){
logger.error(e.getMessage(), e);
return false;
}
return true;
}
private static MimeMessage createMail(Session session) throws Exception {
MimeMessage message = new MimeMessage(session);
// 设置邮件的基本信息
message.setFrom(new InternetAddress(mailFrom)); // 发件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
// 邮件标题
message.setSubject(mailTittle);
// 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
MimeBodyPart text = new MimeBodyPart();
text.setContent(mailText, "text/html;charset=UTF-8");
// 创建容器描述数据关系
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(text);
mp.setSubType("mixed");
message.setContent(mp);
message.saveChanges();
// 将创建的Email写入到D盘存储
//message.writeTo(new FileOutputStream("D:/mail/to/pngImageMail.eml"));// 需要修改
// 返回生成的邮件
return message;
}
/**
* 创建带附件的邮件(附件路径)
* @param session
* @param mailPath
* @return
* @throws Exception
*/
private static MimeMessage createAttachMail(Session session, String mailPath) throws Exception {
MimeMessage message = new MimeMessage(session);
// 设置邮件的基本信息
message.setFrom(new InternetAddress(mailFrom)); // 发件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
// 邮件标题
message.setSubject(mailTittle);
// 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
MimeBodyPart text = new MimeBodyPart();
text.setContent(mailText, "text/html;charset=UTF-8");
// 创建邮件附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(mailPath));
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
// 创建容器描述数据关系
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(text);
mp.addBodyPart(attach);
mp.setSubType("mixed");
message.setContent(mp);
message.saveChanges();
// 将创建的Email写入到D盘存储
//message.writeTo(new FileOutputStream("D:/mail/to/pngImageMail.eml"));// 需要修改
// 返回生成的邮件
return message;
}
/**
* 创建带附件的邮件(参数为File类型)
* @param session
* @param mailFile
* @return
* @throws Exception
*/
private static MimeMessage createAttachMail(Session session, File mailFile) throws Exception {
MimeMessage message = new MimeMessage(session);
// 设置邮件的基本信息
message.setFrom(new InternetAddress(mailFrom)); // 发件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
// 邮件标题
message.setSubject(mailTittle);
// 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
MimeBodyPart text = new MimeBodyPart();
text.setContent(mailText, "text/html;charset=UTF-8");
// 创建邮件附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(mailFile));
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
// 创建容器描述数据关系
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(text);
mp.addBodyPart(attach);
mp.setSubType("mixed");
message.setContent(mp);
message.saveChanges();
// 将创建的Email写入到D盘存储
//message.writeTo(new FileOutputStream("D:/mail/to/pngImageMail.eml"));// 需要修改
// 返回生成的邮件
return message;
}
}
2、ConfigUtil.java
import java.util.ResourceBundle;
public class ConfigUtil {
/**
* 根据KEY获取CONFIG配置文件VALUE
* @param key
* @return
*/
public static String getConfigKey(String key){
ResourceBundle resource = ResourceBundle.getBundle("CONFIG");
String value = resource.getString(key);
return value;
}
}
#####/3、config.properties
MAIL_FROM=""
MAIL_PWD=""
MAIL_HOST=""