EMail邮件发送工具.包含Apache Common Email和Vertx Email两个方法

1、发送Email工具本身。

package com.cloudwise.util;


import com.cloudwise.message.EmailMessage;
import com.typesafe.config.Config;
import io.vertx.core.Vertx;
import io.vertx.ext.mail.MailClient;
import io.vertx.ext.mail.MailConfig;
import io.vertx.ext.mail.MailMessage;
import lombok.Delegate;
import org.apache.commons.mail.*;
import org.apache.commons.mail.resolver.DataSourceUrlResolver;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;

import static com.sun.tools.javac.jvm.ByteCodes.ret;

/**
 * @program 
 * @description: Send Email Util
 * @author: back
 * @create: 2019/08/06 11:50
 */
public class EmailUtil {


    private  final static Config config = ConfigUtils.getConfig();
    
    /**
     * 发送内容格式为HTML的邮件.暂时不含图片资源。
     * 返回值0为成功 1为出现异常
     *
     * @throws EmailException
     * @throws MalformedURLException
     */
    public static Integer sendHTMLEmail(EmailMessage message) {
        try {
            // Create the email message
            HtmlEmail email = new HtmlEmail();
            email.setHostName(config.getString("email.hostname"));
            email.setSSLOnConnect(true);
            email.setCharset("UTF-8");


            email.addTo(message.getTo());
            email.setFrom(message.getFrom() == null ? config.getString("emailFrom")  : message.getFrom());
            email.setSubject(message.getSubject());

            email.setAuthentication(config.getString("email.username"),config.getString("email.password"));

            email.setHtmlMsg(message.getText());

            email.setTextMsg("Your email client does not support HTML messages");

            // 挟带图片资源
//        URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
//        String cid = email.embed(url, "Apache logo");
//        email.setHtmlMsg("<html>The apache logo - <img src=\"cid:" + cid + "\"></html>");
            // send the email
            email.send();

            return 0;
        } catch (EmailException e){
            return 1;
        }

    }


    public static CompletableFuture<Integer> sendMailUseVertx(Vertx vertx, EmailMessage emailMessage){

        MailConfig mailConfig = new MailConfig();
        mailConfig.setHostname(config.getString("email.hostname"));
        mailConfig.setUsername(config.getString("email.username"));
        mailConfig.setPassword(config.getString("email.password"));
        String fromEmail = emailMessage.getFrom();


        mailConfig.setPort(config.getInt("email.port"));
        mailConfig.setSsl(true);
//        mailConfig.setTrustAll(true);
//        mailConfig.setStarttls(StartTLSOptions.REQUIRED);
        MailClient mailClient = MailClient.createShared(vertx, mailConfig);
        MailMessage message = new MailMessage();
        message.setFrom(fromEmail);
        message.addHeader("X-Mailer","Microsoft Outlook Express 6.00.2900.2869");
        message.setTo(emailMessage.getTo());
        message.setSubject(emailMessage.getSubject());
        message.setText(emailMessage.getText());

        CompletableFuture<Integer> future = new CompletableFuture<>();


        mailClient.sendMail(message,result->{

            if(result.succeeded()){
                future.complete(0);
            }else{
                future.complete(1);
            }
        });

        return future;
    }

}

2、发送内容信息类

package com.cloudwise.message;


import lombok.Data;

/**
 * @program
 * @description: Send Email Message
 * @author: back
 * @create: 2019/08/06 18:29
 */
@Data
public class EmailMessage {

    private String from;
    private String to;
    private String subject;
    /**
     * 当Simple邮件时此属性正常字符串,Html邮件是填Html的内容
     */
    private String text;

    public EmailMessage(String from, String to, String subject, String text) {

        this.from = from;
        this.to = to;
        this.subject = subject;
        this.text = text;
    }

    public EmailMessage() {
    }
}

3、type safe config简单定义以126邮箱为例

email = {
  hostname = "smtp.126.com"
  port = 
  username = "@126.com"
  password = ""
  emailFrom = "@126.com"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值