最近须要作一个邮件相关的功能,考虑到自建邮件服务器维护起来比较麻烦,因而选择第三方邮件服务。邮件发送服务的对比能够看这篇文章。html
最后我选择了:java
sendCloud向QQ用户发送,mailgun则负责其余用户。这就须要我同时为这两种服务编写相应的接口。可是它们的文档里给出的示例代码又各不相同,有的还不够优雅,好比sendcloud的java示例。二者依赖的库又不相同,好比mailgun依赖web
sendCloud则依赖HttpClient
。有没有一种既能简化代码又能实现功能的方案呢,而后我发现了Jodd。json
Jodd介绍:segmentfault
Jodd is set of Java micro frameworks, tools and utilities, under 1.5 MB.
Designed with common sense to make things simple, but not simpler.
Get things done! Build your Beautiful Ideas! Kickstart your Startup!
And enjoy the coding.api
很喜欢Jodd的理念:服务器
Think Lightweight, Be Awesome, Get Things Done!
下面开始正题:须要用到的依赖以下:session
<properties> <jodd.version>3.6.5</jodd.version> </properties> <dependency> <groupId>org.jodd</groupId> <artifactId>jodd-http</artifactId> <version>${jodd.version}</version> </dependency> <dependency> <groupId>org.jodd</groupId> <artifactId>jodd-mail</artifactId> <version>${jodd.version}</version> </dependency>
Talk is cheap,贴出代码。如下仅仅给出简单的发送功能,起抛砖引玉的做用,其余功能详见官网文档。post
mailgun:ui
import jodd.http.HttpRequest; import jodd.mail.Email; import jodd.mail.SendMailSession; import jodd.mail.SmtpServer; import java.util.HashMap; import java.util.Map; public class MailGun { private String SMTP_HOST = "smtp.mailgun.org"; private String SMTP_USER="YOUR_USER"; private String SMTP_PASS = "YOUR_PASSWORD"; private String HTTP_URL="https://api.mailgun.net/v3/YOUR_DOMAIN/messages"; private String HTTP_API="YOUR_API"; /** * 使用SMTP触发发送 * @param from 发件人 * @param to 收件人 * @param subject 主题 * @param text 内容 */ public void sendBySMTP(String from,String to,String subject,String text){ SmtpServer smtpServer = SmtpServer.create(SMTP_HOST) .authenticateWith(SMTP_USER, SMTP_PASS); SendMailSession session = smtpServer.createSession(); session.open(); Email email = Email.create() .from(from) .to(to) .subject(subject) .addHtml(text); session.sendMail(email); session.close(); } /** * 使用HTTP方式发送 * @param from 发件人 * @param to 收件人 * @param subject 主题 * @param text 内容 */ public void sendByHTTP(String from,String to,String subject,String text){ Map<String, Object> formData = new HashMap<String, Object>(); formData.put("from", from); formData.put("to", to); formData.put("subject", subject); formData.put("text", text); HttpRequest .post(HTTP_URL) .basicAuthentication("api",HTTP_API) .form(formData).send(); } }
sendCloud:
import jodd.http.HttpRequest; import jodd.mail.Email; import jodd.mail.SendMailSession; import jodd.mail.SmtpServer; import java.util.HashMap; import java.util.Map; public class SendCloud { private String HTTP_URL ="http://sendcloud.sohu.com/webapi/mail.send.json"; private String HTTP_API_USER ="YOUR_API_USER"; private String HTTP_API_KEY = "YOUR_API_KEY"; private String FROM = "YPUR_DOMAIN_EMAIL"; private String SMTP_HOST = "smtpcloud.sohu.com"; private String SMTP_USER="YOUR_USER"; private String SMTP_PASS = "YOUR_PASS"; public void sendBySMTP(String to, String subject, String text){ SmtpServer smtpServer = SmtpServer.create(SMTP_HOST) .authenticateWith(SMTP_USER, SMTP_PASS); SendMailSession session = smtpServer.createSession(); session.open(); Email email = Email.create() .from(FROM) .to(to) .subject(subject) .addHtml(text); session.sendMail(email); session.close(); } public void sendByHTTP(String to, String subject, String text){ Map<String, Object> formData = new HashMap<String, Object>(); formData.put("api_user", HTTP_API_USER); formData.put("api_key", HTTP_API_KEY); formData.put("from", FROM); formData.put("to", to); formData.put("subject", subject); formData.put("html", text); HttpRequest .post(HTTP_URL) .form(formData) .send(); } }