Email邮件发送工具类

import com.jfinal.kit.StrKit;
import com.jfinal.log.Log;
import org.apache.commons.mail.*;

import java.util.ArrayList;
import java.util.List;

public class EmailKit {

    private static final Log log = Log.getLog(EmailKit.class);

    /**
     * 发送普通纯文本邮件
     *
     * @param fromEmail 发件邮箱
     * @param toEmail   收件地址
     * @param title     邮件标题
     * @param content   邮件内容
     * @return
     */
    public static String sendEmail(String fromEmail, String toEmail, String title, String content) {
        return sendEmail(null, fromEmail, null, toEmail, title, content);
    }

    /**
     * 发送普通纯文本邮件
     *
     * @param emailServer 邮件发送服务器地址
     * @param fromEmail   发件邮箱
     * @param password    发件邮箱密码
     * @param toEmail     收件地址
     * @param title       邮件标题
     * @param content     邮件内容
     * @return
     */
    public static String sendEmail(String emailServer, String fromEmail, String password, String toEmail, String title, String content) {

        SimpleEmail email = new SimpleEmail();
        if (StrKit.notBlank(emailServer)) {
            email.setHostName(emailServer);
        } else {
            // 默认使用本地 postfix 发送,这样就可以将postfix 的 mynetworks 配置为 127.0.0.1 或 127.0.0.0/8 了
            email.setHostName("127.0.0.1");
        }

        // 如果密码为空,则不进行认证
        if (StrKit.notBlank(password)) {
            email.setAuthentication(fromEmail, password);
        }

        email.setCharset("utf-8");
        try {
            email.addTo(toEmail);
            email.setFrom(fromEmail);
            email.setSubject(title);
            email.setMsg(content);
            return email.send();
        } catch (EmailException e) {
            log.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
    }

    /**
     * 发送带附件的邮件
     *
     * @param fromEmail   发件邮箱
     * @param toEmail     收件地址
     * @param title       邮件标题
     * @param content     邮件内容
     * @param attachments 附件信息列表(List泛型对象为EmailAttachment)
     * @return
     */
    public static String sendEmail4ATM(String fromEmail, String toEmail, String title, String content, List attachments) {
        return sendEmail4ATM(null, fromEmail, null, toEmail, title, content, attachments);
    }

    /**
     * 发送带附件的邮件
     *
     * @param emailServer 邮件发送服务器地址
     * @param fromEmail   发件邮箱
     * @param password    发件邮箱密码
     * @param toEmail     收件地址
     * @param title       邮件标题
     * @param content     邮件内容
     * @param attachments 附件信息列表(List泛型对象为EmailAttachment)
     * @return
     */
    public static String sendEmail4ATM(String emailServer, String fromEmail, String password, String toEmail, String title, String content, List attachments) {
        MultiPartEmail email = new MultiPartEmail();
        if (StrKit.notBlank(emailServer)) {
            email.setHostName(emailServer);
        } else {
            // 默认使用本地 postfix 发送,这样就可以将postfix 的 mynetworks 配置为 127.0.0.1 或 127.0.0.0/8 了
            email.setHostName("127.0.0.1");
        }

        // 如果密码为空,则不进行认证
        if (StrKit.notBlank(password)) {
            email.setAuthentication(fromEmail, password);
        }

        email.setCharset("utf-8");
        try {
            email.addTo(toEmail);
            email.setFrom(fromEmail);
            email.setSubject(title);
            email.setMsg(content);

            // 添加附件
            if (null != attachments) {
                for (int i = 0; i < attachments.size(); i++) {
                    EmailAttachment attachment = (EmailAttachment) attachments.get(i);
                    if (null != attachment) {
                        email.attach(attachment);
                    }
                }
            }
            return email.send();
        } catch (EmailException e) {
            log.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
    }

    /**
     * 发送HTML格式的邮件
     *
     * @param fromEmail 发件邮箱
     * @param toEmail   收件地址
     * @param title     邮件标题
     * @param content   邮件内容
     * @param htmlMsg   HTML格式
     * @return
     */
    public static String sendEmail4HTML(String fromEmail, String toEmail, String title, String content, String htmlMsg) {
        return sendEmail4HTML(null, fromEmail, null, toEmail, title, content, htmlMsg);
    }

    /**
     * 发送HTML格式的邮件
     *
     * @param emailServer 邮件发送服务器地址
     * @param fromEmail   发件邮箱
     * @param password    发件邮箱密码
     * @param toEmail     收件地址
     * @param title       邮件标题
     * @param content     邮件内容
     * @param htmlMsg     HTML格式
     * @return
     */
    public static String sendEmail4HTML(String emailServer, String fromEmail, String password, String toEmail, String title, String content, String htmlMsg) {
        HtmlEmail email = new HtmlEmail();
        if (StrKit.notBlank(emailServer)) {
            email.setHostName(emailServer);
        } else {
            // 默认使用本地 postfix 发送,这样就可以将postfix 的 mynetworks 配置为 127.0.0.1 或 127.0.0.0/8 了
            email.setHostName("127.0.0.1");
        }

        // 如果密码为空,则不进行认证
        if (StrKit.notBlank(password)) {
            email.setAuthentication(fromEmail, password);
        }

        email.setCharset("utf-8");
        try {
            email.addTo(toEmail);
            email.setFrom(fromEmail);
            email.setSubject(title);
            email.setTextMsg(content);

            // 添加HTML
            email.setHtmlMsg(htmlMsg);
            return email.send();
        } catch (EmailException e) {
            log.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        List attachments = new ArrayList();
        EmailAttachment attachment = new EmailAttachment();
        attachment.setPath("D:\\sss.docx");
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        attachments.add(attachment);

        EmailAttachment attachment1 = new EmailAttachment();
        attachment1.setPath("D:\\sss11.docx");
        attachment1.setDisposition(EmailAttachment.ATTACHMENT);
        attachments.add(attachment1);

        String ret = sendEmail4ATM(
                "smtp.163.com",    // 邮件发送服务器地址
                "xxxxxx@163.com",  // 发件邮箱
                "xxxxxx",          // 发件邮箱密码
                "xxxxxx@qq.com",   // 收件地址
                "邮件标题",         // 邮件标题
                "content",         // 邮件内容
                attachments);
        System.out.println("发送返回值: " + ret);
    }
}


评论区

jfinal_littleMark

2018-05-27 21:36

增加了发送带附件的邮件和HTML格式的邮件

JFinal

2018-05-27 21:50

分享越来越多了,jfinal 社区有希望了,感谢分享

rocker18

2018-06-04 10:06

有jar包依赖吗

jfinal_littleMark

2018-06-04 11:11

@rocker18
groupId: org.apache.commons
artifactId: commons-email
version: 1.2
你查看波总的jfinal-club的邮件依赖包就可以知道的

pp

2018-07-06 15:35

附件带不上去,是何原因,不报错!

jiangye

2020-05-20 13:49

大佬 请问可以查看邮箱已经接收的邮件吗