java 邮件发送util

package util;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
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.log4j.Logger;

import config.Configuration;

public class SendEmail extends Configuration {
	// 邮件发送协议 
	private static String PROTOCOL; 
 
    // SMTP邮件服务器 
	private static String HOST; 
    
    // 是否要求身份认证 
	private static String IS_AUTH; 
 
    // SMTP邮件服务器默认端口 
	private static String PORT; 
 
    // 发件人 
	private static String from;
	private static String fromname;
    
	private static String username; 
    
	private static String password;
	
	private static String title;
	
	private static String path;
	private static String content;
	
	private static Logger logger = Logger.getLogger(SendEmail.class);
	static {

		logger.info("Configuration Init!");
		try {
			Properties conf = Resources.getResourceAsProperties(confname);
			PROTOCOL = conf.getProperty("PROTOCOL");
			HOST = conf.getProperty("HOST");
			IS_AUTH = conf.getProperty("IS_AUTH");
			PORT = conf.getProperty("PORT");
			from = conf.getProperty("from");
			fromname = conf.getProperty("fromname");
			username = conf.getProperty("username");
			password = conf.getProperty("password");
			path = conf.getProperty("excelpath");
			title = conf.getProperty("title");
			content = conf.getProperty("content");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


	
	public static void main(String[] args)  {
		String filename="e:/cdnfile/analysis/sourcedata/20180927/info1527";
		try {
			//sendMail(filename);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static boolean sendMail(List<String> filename,String toemail,int cid){
		boolean flag = true;
		
		// 创建一个连接属性。
		Properties props = new Properties();//
		props.put("mail.smtp.host ", HOST);// 设置smtp的服务器地址是smtp.126.com
		props.put("mail.smtp.port", PORT); 
		props.put("mail.smtp.auth", IS_AUTH);// 设置smtp服务器要身份验证。
		props.put("mail.transport.protocol", PROTOCOL);
		Session session = Session.getInstance(props, new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
		});
		Message message = new MimeMessage(session);
		try {
			InternetAddress froms = new InternetAddress(from);
			froms.setPersonal(MimeUtility.encodeText(fromname)); // 发件人名
			message.setFrom(froms);
			InternetAddress to = new InternetAddress(toemail);
			// //收件人地址 

			// 创建邮件体:
			message.setRecipient(Message.RecipientType.TO, to); //  只有抄送给自己的邮箱
			message.setSubject(MimeUtility.encodeText(title)); // 邮件标题 
			message.setSentDate(new Date());
			MimeMultipart msgMultipart = new MimeMultipart("mixed");// 指定为混合关系  
			message.setContent(msgMultipart);
			// 邮件内容
			MimeBodyPart htmlPart = new MimeBodyPart();
			htmlPart.setContent(
					"<body>" 
					+ "<div style='position: absolute; left: 390px; top: 150px;height: "
					+ "100px;width: 200px;' align='center'>" 
					+ "<font color='red'>"+content+"</font>" 
					+ "</div></body>",
					"text/html;charset=UTF-8");
			// TODO 组装的顺序非常重要,一定要先组装文本域,再组装文件  
			msgMultipart.addBodyPart(htmlPart);
			// 组装附件  
			MimeBodyPart file;
			DataHandler dh;
			DataSource file_datasource;
			String str = TimeUtil.getYearAndMonth();
			String filepath = path+"/"+ cid +"/"+str+"/"+new SimpleDateFormat("yyyyMMdd").format(new Date());
			for (int i = 0; i < filename.size(); i++) {
				System.out.println(filename.get(i));
				file = new MimeBodyPart();
				String name = filepath+"/"+filename.get(i)+".xls";
				//name =  filepath+"/客户资源获取量月报.xls";
				System.out.println(name);
				
				file_datasource = new FileDataSource(new File(name));

				dh = new DataHandler(file_datasource);
				file.setDataHandler(dh);
				// 附件区别内嵌内容的一个特点是有文件名,为防止中文乱码要编码  
				file.setFileName(MimeUtility.encodeText(dh.getName()));
				msgMultipart.addBodyPart(file);
			}
			
			
			message.saveChanges();

			// 发送邮件的过程:
			Transport transport = session.getTransport(PROTOCOL); // 创建连接
			transport.connect(HOST, Integer.valueOf(PORT), username, password); // 连接服务器  
																			// 服务名,端口,发送邮件用户名
																			// (不要@后面),密码
			transport.sendMessage(message, message.getAllRecipients()); // 发送信息
			transport.close(); // 关闭
			logger.info("发送完毕");
		} catch (Exception e) {
			logger.error("sendMail: ", e);
			flag = false;
			logger.info("EmailService:发送失败 公司id:"+ cid +" 报表名称: "+ filename.toString()+" email:"+toemail);
			
		}

		return flag;
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值