摘要:最近需要做一個郵件相關的功能,考慮到自建郵件服務器維護起來比較麻煩,于是選擇第三方郵件服務。郵件發送服務的對比可以看這篇文章。使用觸發發送發件人收件人主題內容使用方式發送發件人收件人主題內容
最近需要做一個郵件相關的功能,考慮到自建郵件服務器維護起來比較麻煩,于是選擇第三方郵件服務。郵件發送服務的對比可以看這篇文章。
最后我選擇了:
sendCloud
mailgun
sendCloud向QQ用戶發送,mailgun則負責其他用戶。這就需要我同時為這兩種服務編寫相應的接口。但是它們的文檔里給出的示例代碼又各不相同,有的還不夠優雅,比如sendcloud的java示例。兩者依賴的庫又不相同,比如mailgun依賴
jersey-client.jar (version ~ 1.17 - 1.18.1)
jersey-core.jar (version ~ 1.17 - 1.18.1)
jersey-multipart.jar (version ~ 1.17 - 1.18.1)
sendCloud則依賴HttpClient。有沒有一種既能簡化代碼又能實現功能的方案呢,然后我發現了Jodd。
Jodd介紹:
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.
很喜歡Jodd的理念:
Think Lightweight, Be Awesome, Get Things Done!
下面開始正題:需要用到的依賴如下:
3.6.5 org.jodd jodd-http ${jodd.version} org.jodd jodd-mail ${jodd.version}
Talk is cheap,貼出代碼。以下僅僅給出簡單的發送功能,起拋磚引玉的作用,其他功能詳見官網文檔。
mailgun:
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){ MapformData = new HashMap (); 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){ MapformData = new HashMap (); 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(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64350.html
摘要:介紹是對于開發更便捷的開源迷你框架,包含工具類實用功能的集合,總包體積不到。你可以把想象成的瑞士軍刀不僅小,鋒利而且包含許多便利的功能。 showImg(https://segmentfault.com/img/remote/1460000015356940); Jodd介紹 Jodd是對于Java開發更便捷的開源迷你框架,包含工具類、實用功能的集合,總包體積不到1.7M。 Jodd構...
摘要:我是廣告本人的直播課程在月份就要開始了,希望小伙伴們支持一下,現在報名有優惠噢 源碼:http://git.oschina.net/sancha... Spark Framework beetl fastjson 結合 項目結構如下 showImg(https://segmentfault.com/img/bVP12A?w=315&h=512); pom.xml如下: 4...
摘要:從年知道后就開始使用它來記錄自己的編碼時間,但作為免費版只能查看最近兩周的數據,于是很久之前就寫了一個程序同步自己的歷史數據,不過一直沒找到合適的圖表插件像官網那樣展示數據信息。版本的代碼也實現了相關的同步展示邏輯,代碼在分支中。 從16年知道 WakaTime 后就開始使用它來記錄自己的編碼時間,但作為免費版只能查看最近兩周的數據,于是很久之前就寫了一個程序同步自己的歷史數據,不過一...
javapublic void testRest_GetScenicListByFilter() throws UnsupportedEncodingException { Filter filter = new Filter(); filter.setCityCode(029); filter.setDistanceFilter(10); ...
閱讀 3561·2021-09-22 10:52
閱讀 1588·2021-09-09 09:34
閱讀 1990·2021-09-09 09:33
閱讀 758·2019-08-30 15:54
閱讀 2598·2019-08-29 11:15
閱讀 713·2019-08-26 13:37
閱讀 1667·2019-08-26 12:11
閱讀 2975·2019-08-26 12:00