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"
}