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

    package com.northeasttycoon.monitor.common;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.io.UnsupportedEncodingException;
    import java.util.Date;
    import java.util.List;
    import java.util.Properties;
    
    /**
     * 发送邮件共用类
     *
     * @author northEastTycoon
     * @version 1.0.0 2016/9/21
     */
    public class MailCommonUtil {
    
        protected final static Logger logger = LogManager.getLogger();
    
        // 邮件服务
        private static String host;
    
        // 发送邮件的用户名
        private static String username;
    
        // 发送邮件的密码
        private static String password;
    
        //  info 与 from 组成邮箱的发件人信息
        private static String from;
        private static String info;
    
        static {
            try {
    
                host = "smtp.163.com";
                username = "northEastTycoon@163.com";
                password = "northEastTycoon";
                from = "northEastTycoon@163.com";
                info = "邮件监控";
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 发送邮件
         *
         * @param to       收件人列表,以","分割
         * @param subject  标题
         * @param body     内容
         * @param filepath 附件列表,无附件传递null
         * @return
         * @throws MessagingException
         * @throws AddressException
         * @throws UnsupportedEncodingException
         */
        public static boolean sendMail(String to, String subject, String body,
                                       List<String> filepath) throws AddressException, MessagingException,
                UnsupportedEncodingException {
            // 参数修饰
            if (body == null) {
                body = "";
            }
            if (subject == null) {
                logger.info("发送的邮件无主题!");
            }
            // 创建Properties对象
            Properties props = System.getProperties();
            // 创建信件服务器
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true"); // 通过验证
            // 得到默认的对话对象
            Session session = Session.getDefaultInstance(props, null);
            // 创建一个消息,并初始化该消息的各项元素
            MimeMessage msg = new MimeMessage(session);
            info = MimeUtility.encodeText(info);
            msg.setFrom(new InternetAddress(info + "<" + from + ">"));
            // 创建收件人列表
            if (to != null && to.trim().length() > 0) {
                String[] arr = to.split(",");
                int receiverCount = arr.length;
                if (receiverCount > 0) {
                    InternetAddress[] address = new InternetAddress[receiverCount];
                    for (int i = 0; i < receiverCount; i++) {
                        address[i] = new InternetAddress(arr[i]);
                    }
                    msg.addRecipients(Message.RecipientType.TO, address);
                    msg.setSubject(subject);
                    // 后面的BodyPart将加入到此处创建的Multipart中
                    Multipart mp = new MimeMultipart();
                    // 附件操作
                    if (filepath != null && filepath.size() > 0) {
                        for (String filename : filepath) {
                            MimeBodyPart mbp = new MimeBodyPart();
                            // 得到数据源
                            FileDataSource fds = new FileDataSource(filename);
                            // 得到附件本身并至入BodyPart
                            mbp.setDataHandler(new DataHandler(fds));
                            // 得到文件名同样至入BodyPart
                            mbp.setFileName(fds.getName());
                            mp.addBodyPart(mbp);
                        }
                        MimeBodyPart mbp = new MimeBodyPart();
                        mbp.setText(body);
                        mp.addBodyPart(mbp);
                        // 移走集合中的所有元素
                        filepath.clear();
                        // Multipart加入到信件
                        msg.setContent(mp);
                    } else {
                        // 设置邮件正文
                        msg.setText(body);
                    }
                    // 设置信件头的发送日期
                    msg.setSentDate(new Date());
                    msg.saveChanges();
                    // 发送信件
                    Transport transport = session.getTransport("smtp");
                    transport.connect(host, username, password);
                    transport.sendMessage(msg,
                            msg.getRecipients(Message.RecipientType.TO));
                    transport.close();
                    return true;
                } else {
                    logger.error("不存在接收地址!");
                    return false;
                }
            } else {
                logger.error("不存在接收地址!");
                return false;
            }
        }
    }
    
    
    import com.northeasttycoon.monitor.common.MailCommonUtil;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.AddressException;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试邮件发送操作类
     *
     * @author northEastTycoon
     * @version 1.0.0 2016/9/21
     */
    public class testMail {
    
        public static void main(String[] args) throws AddressException,
                UnsupportedEncodingException, MessagingException {
            List<String> filepath = new ArrayList<>();
            // 实际存放的文件地质
            filepath.add("E:\ceshi.txt");
            MailCommonUtil.sendMail("northEastTycoon@qq.com,northEastTycoon@qq.com", "测试邮件", "监控功能邮件",
                    null);
        }
    }

    我用的gradle建立的工程,以上以163邮箱为例子代码,完成以上代码需要jar包,在build.gradle中添加

    compile('javax.mail:mail:1.4.7')
  • 相关阅读:
    javascript:getElementsByName td name
    C# 批量复制文件
    笨笨图片批量下载器[C# | WinForm | 正则表达式 | HttpWebRequest]
    浩方魔兽"去"小喇叭终极解决方案[Warcraft III]
    JavaScript——DataListBox(组合框)
    PowerDesigner 12 根据名称生成注释(完整示例)
    笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]
    使用IHttpHandler做权限控制[ASP.NET | IHttpHandler | AjaxPro | UserHostName]
    AjaxPro 未定义错误
    北京有趣地名(二)
  • 原文地址:https://www.cnblogs.com/northeastTycoon/p/5908862.html
Copyright © 2011-2022 走看看