使用JavaMail搭建自己的邮件通知系统

写在前面

本章的代码实现,主要参考JavaMail官方文档,链接如下:

  • https://javaee.github.io/javamail/
    目前,JavaMail的最新文档都已经搬家到了GitHub,想浏览的同学自行想办法。

Maven


    
        com.sun.mail
        javax.mail
        1.6.0
    

发送邮件工具类

当下简单地采用了单例模式,将发送邮件的功能封装成了一个工具类,以下代码仅供参考。

@Slf4j
public enum SendMailHelper {

    INSTANCE;

    private Session session = null;

    // 私有化构造方法
    private SendMailHelper() {
        String host = "smtp.exmail.qq.com"; // 当前以腾讯邮箱举例
        Properties props = System.getProperties();
        String smtpPort = "465";
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", smtpPort);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.socketFactory.port", smtpPort);
        props.put("mail.mime.charset", "UTF-8");

        session = Session.getInstance(props, null);
    }

    /**
     * 发送邮件带附件
     * @param sendTo
     * @param mailSubject
     * @param mailContent
     * @param attachmentFile
     */
    public void sendMailWithAttachment(List sendTo, String mailSubject, String mailContent, String attachmentFile) {

        // 公共信息
        String from = "[email protected]";
        String pwd = "ebf25b423c7a7d8b6e8662b6d7f37c27";
        
        // 加解密处理(可省略)
        try{
            pwd = DesUtil.INSTANCE.decrypt(pwd);
        }catch (Exception e) {
            log.info("decrypt mail password error.", e);
        }

        // Debug模式(生产模式下建议处理成可配置)
        boolean debug = false;
        session.setDebug(debug);

        try {

            // 发件人
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(from));

            // 收件人
            InternetAddress[] address = new InternetAddress[sendTo.size()];
            for(int i=0,len=sendTo.size(); i

这是一个带有附件内容的邮件发送工具类,如果想发送更加丰富的邮件信息,可以参阅官方文档中给出的Sample,里面提供了各种发送邮件的样例,大家伙儿可以下载阅读,入口如下(地址上面已经给出了哦):


JavaMail官网首页部分截图

你可能感兴趣的:(使用JavaMail搭建自己的邮件通知系统)