Java动态发送邮件公共方法

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=""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值