package com.njhzlh.commons.utils; import com.njhzlh.slave.modules.jobs.TalcntcJob; import com.sun.mail.util.MailSSLSocketFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import java.security.GeneralSecurityException; import java.util.Properties; /** * 发送邮件工具类 * * @author baicheng */ public class SendMailAcceUtils { private static final Logger LOG = LoggerFactory.getLogger(SendMailAcceUtils.class); /** * @param receive 收件人 * @param subject 邮件主题 * @param msg 邮件内容 * @param filename 附件地址 * @return * @throws GeneralSecurityException */ public static boolean senMail(String receive, String subject, String msg, String urlPath, String filename, String mcc) throws GeneralSecurityException { if (receive == null || "".equals(receive)) { return false; } // 发件人电子邮箱 final String from = PropertiesUtil.getProperties().getProperty("mail.from", "2506715686@qq.com"); // 发件人电子邮箱密码 final String pass = PropertiesUtil.getProperties().getProperty("mail.pass", "hecvswdmroftebje"); // 指定发送邮件的主机为 smtp.qq.com String host = PropertiesUtil.getProperties().getProperty("mail.host", "smtp.qq.com"); // 邮件服务器 // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); Session session = Session.getDefaultInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { // qq邮箱服务器账户、第三方登录授权码 return new PasswordAuthentication(from, pass); // 发件人邮件用户名、密码 } }); try { // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(receive)); if (mcc != null && !"".equals(mcc)) {//抄送人 message.addRecipients(Message.RecipientType.CC, InternetAddress.parse(mcc)); } //message.addRecipients(Message.RecipientType.TO, new InternetAddress[] {}); // Set Subject: 主题文字 message.setSubject(subject); // 创建消息部分 BodyPart messageBodyPart = new MimeBodyPart(); // 消息 messageBodyPart.setText(msg); // 创建多重消息 Multipart multipart = new MimeMultipart(); // 设置文本消息部分 multipart.addBodyPart(messageBodyPart); // 附件部分 messageBodyPart = new MimeBodyPart(); // 设置要发送附件的文件路径 DataSource source = new FileDataSource(urlPath + filename); messageBodyPart.setDataHandler(new DataHandler(source)); // messageBodyPart.setFileName(filename); // 处理附件名称中文乱码问题 messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // 发送完整消息 message.setContent(multipart); // 发送消息 Transport.send(message); // System.out.println("Sent message successfully...."); return true; } catch (Exception e) { LOG.error("发送邮件异常",e); } return false; } /** * 发送邮件 * * @param receive 接收人 * @param subject 发送的主题 * @param msg 发送消息 * @param mcc 抄送人 可逗号分隔 * @return */ public static boolean senMailWithMessage(String receive, String subject, String msg, String mcc) { if (receive == null || "".equals(receive)) { return false; } try { // 发件人电子邮箱 final String from = PropertiesUtil.getProperties().getProperty("mail.from", "2506715686@qq.com"); // 发件人电子邮箱密码 final String pass = PropertiesUtil.getProperties().getProperty("mail.pass", "hecvswdmroftebje"); // 指定发送邮件的主机为 smtp.qq.com String host = PropertiesUtil.getProperties().getProperty("mail.host", "smtp.qq.com"); // 邮件服务器 // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); Session session = Session.getDefaultInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { // qq邮箱服务器账户、第三方登录授权码 return new PasswordAuthentication(from, pass); // 发件人邮件用户名、密码 } }); // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(receive)); if (mcc != null && !"".equals(mcc)) {//抄送人 message.addRecipients(Message.RecipientType.CC, InternetAddress.parse(mcc)); } //message.addRecipients(Message.RecipientType.TO, new InternetAddress[] {}); // Set Subject: 主题文字 message.setSubject(subject); // 创建消息部分 BodyPart messageBodyPart = new MimeBodyPart(); // 消息 messageBodyPart.setText(msg); // 创建多重消息 Multipart multipart = new MimeMultipart(); // 设置文本消息部分 multipart.addBodyPart(messageBodyPart); // 附件部分 // messageBodyPart = new MimeBodyPart(); // 设置要发送附件的文件路径 //DataSource source = new FileDataSource(urlPath+filename); //messageBodyPart.setDataHandler(new DataHandler(source)); // messageBodyPart.setFileName(filename); // 处理附件名称中文乱码问题 //messageBodyPart.setFileName(filename); //multipart.addBodyPart(messageBodyPart); // 发送完整消息 message.setContent(multipart); // 发送消息 Transport.send(message); // System.out.println("Sent message successfully...."); return true; } catch (Exception e) { LOG.error("发送邮件异常",e); } return false; } }