zoukankan      html  css  js  c++  java
  • 发送邮件

    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;
        }
    
    
    }
    

      

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/syscn/p/12208915.html
Copyright © 2011-2022 走看看