zoukankan      html  css  js  c++  java
  • SendMailUtil 邮件发送工具类

    public class SendMailUtil {

    @Value("${email.host}")
          private String HOST;// smtp服务器
    @Value("${email.from}")
    private String FROM;// 发件人地址
    //@Value("${email.to}")
    private String TO;// 收件人地址
    @Value("${email.affix}")
    private String AFFIX; // 附件地址
    @Value("${email.affixzip}")
    private String AFFIXZIP;// 打包后文件路径
    @Value("${email.user}")
    private String USER;// 用户名
    @Value("${email.pwd}")
    private String PWD;// 163的授权码
    //@Value("${email.subject}")
    private String SUBJECT; // 邮件标题
    String[] TOS = null;
    
    /*@Autowired
    private FileUtil fileUtil;*/
    
    private static Log logger = LogFactory.getLog(SendMailUtil.class);
    
    /**
     * 发送邮件
     * 
     * @param context     //邮件内容
     * @param TOReceiver   //收件人
     * @param subject   邮件主题
     * @param ifattachment 是否发送附件
     * @return 
     */
    public String send(String context,String TOReceiver,String subject,Boolean ifattachment) {
    	logger.info("开始发邮件");
    	Boolean ispackage=false;//默认不打包
    	TO = TOReceiver;
    	TOS = TO.split(",");
    	SUBJECT =subject;
    	Properties props = new Properties();
    	props.put("mail.smtp.host", HOST);// 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
    	props.put("mail.smtp.auth", "true"); // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
    	Session session = Session.getDefaultInstance(props);// 用props对象构建一个session
    	session.setDebug(true);
    	MimeMessage message = new MimeMessage(session);// 用session为参数定义消息对象
    	try {
    		message.setFrom(new InternetAddress(FROM));// 加载发件人地址
    		InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加载收件人地址
    		for (int i = 0; i < TOS.length; i++) {
    			sendTo[i] = new InternetAddress(TOS[i]);
    		}
    		message.addRecipients(Message.RecipientType.TO, sendTo);
    		message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(FROM));// 设置在发送给收信人之前给自己(发送方)抄送一份,不然会被当成垃圾邮件,报554错
    		// message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("ff@receive.com", "USER_FF", "UTF-8")); //Bcc: 密送(可选)
    		//message.setSubject(toChinese(SUBJECT));// 加载标题
    		message.setSubject(SUBJECT);// 加载标题
    		Multipart multipart = new MimeMultipart();// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
    		BodyPart contentPart = new MimeBodyPart();// 设置邮件的文本内容
    		contentPart.setText(context);
    		multipart.addBodyPart(contentPart);
    		// 判断是否添加附件
    		if (ifattachment) {
    			//在服务器路径AFFIX下,遍历所有文件
    			Enumeration<String> filesDir=null;
    			if (ispackage) {
    				//文件有打包路径的话去打包路径拿取打包文件添加到附件中
    				filesDir = FileUtils.readFilesDir(AFFIXZIP);
    			}else {
    				filesDir = FileUtils.readFilesDir(AFFIX);
    			}
    			
    			if (filesDir != null) {
    				while (filesDir.hasMoreElements()) {
    					BodyPart messageBodyPart = new MimeBodyPart();
    					String fileName = filesDir.nextElement().toString();
    					DataSource source = new FileDataSource(fileName);
    					messageBodyPart.setDataHandler(new DataHandler(source));// 添加附件的内容
    					//messageBodyPart.setFileName(toChinese(source.getName()));
    					messageBodyPart.setFileName(source.getName());
    					//messageBodyPart.setFileName(toChn(source.getName()));
    					multipart.addBodyPart(messageBodyPart);
    					logger.info("添加附件成功");
    				}
    			}
    		}
    		
    		message.setContent(multipart);// 将multipart对象放到message中
    		message.saveChanges(); // 保存邮件
    		Transport transport = session.getTransport("smtp");// 发送邮件
    		transport.connect(HOST, USER, PWD);// 连接服务器的邮箱
    		transport.sendMessage(message, message.getAllRecipients());// 把邮件发送出去
    		transport.close();// 关闭连接
    		if (ifattachment) {
    			FileUtils.delAllFile(AFFIX);
    		}
    	} catch (Exception e) {
    		logger.info("发送邮件失败");
    		e.printStackTrace();
    		throw new BaseException(ResponseEnum.RESPONSE_7.getCode(),ResponseEnum.RESPONSE_7.getMsg());
    	}
    	return ResponseEnum.RESPONSE_21.getCode();
    }
    
    public static String toChinese(String text) {
    	try {
    		text = MimeUtility.encodeText(new String(text.getBytes(), "GB2312"), "GB2312", "B");
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	return text;
    }
    
    public static String toChn(String text) {
    	try {
    		text = MimeUtility.encodeText(text);
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	return text;
    }
    
     public static void main(String[] args) {
    			 new SendMailUtil().send("<a href=\"http://www.baidu.cn\">baidu</a>","text/html;charset=gb2312","284350956@qq.com","ceshi",false);
    			}
    

    }

  • 相关阅读:
    工作中遇到的java 内存溢出,问题排查
    java线上内存溢出问题排查步骤
    性能测试-java内存溢出问题排查
    164 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 04 终止finally执行的方法
    163 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 03 使用多重catch结构处理异常
    162 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 02 使用try-catch结构处理异常
    161 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 01 try-catch-finally简介
    160 01 Android 零基础入门 03 Java常用工具类01 Java异常 03 异常处理简介 01 异常处理分类
    159 01 Android 零基础入门 03 Java常用工具类01 Java异常 02 异常概述 02 异常分类
    158 01 Android 零基础入门 03 Java常用工具类01 Java异常 02 异常概述 01 什么是异常?
  • 原文地址:https://www.cnblogs.com/jianzhixuan/p/13878242.html
Copyright © 2011-2022 走看看