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')
原文地址:https://www.cnblogs.com/northeastTycoon/p/5908862.html