摘要:最近需要做一個郵件相關(guān)的功能,考慮到自建郵件服務(wù)器維護起來比較麻煩,于是選擇第三方郵件服務(wù)。郵件發(fā)送服務(wù)的對比可以看這篇文章。使用觸發(fā)發(fā)送發(fā)件人收件人主題內(nèi)容使用方式發(fā)送發(fā)件人收件人主題內(nèi)容
最近需要做一個郵件相關(guān)的功能,考慮到自建郵件服務(wù)器維護起來比較麻煩,于是選擇第三方郵件服務(wù)。郵件發(fā)送服務(wù)的對比可以看這篇文章。
最后我選擇了:
sendCloud
mailgun
sendCloud向QQ用戶發(fā)送,mailgun則負責(zé)其他用戶。這就需要我同時為這兩種服務(wù)編寫相應(yīng)的接口。但是它們的文檔里給出的示例代碼又各不相同,有的還不夠優(yōu)雅,比如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。有沒有一種既能簡化代碼又能實現(xiàn)功能的方案呢,然后我發(fā)現(xiàn)了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,貼出代碼。以下僅僅給出簡單的發(fā)送功能,起拋磚引玉的作用,其他功能詳見官網(wǎng)文檔。
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觸發(fā)發(fā)送 * @param from 發(fā)件人 * @param to 收件人 * @param subject 主題 * @param text 內(nèi)容 */ 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方式發(fā)送 * @param from 發(fā)件人 * @param to 收件人 * @param subject 主題 * @param text 內(nèi)容 */ 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(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64350.html
摘要:介紹是對于開發(fā)更便捷的開源迷你框架,包含工具類實用功能的集合,總包體積不到。你可以把想象成的瑞士軍刀不僅小,鋒利而且包含許多便利的功能。 showImg(https://segmentfault.com/img/remote/1460000015356940); Jodd介紹 Jodd是對于Java開發(fā)更便捷的開源迷你框架,包含工具類、實用功能的集合,總包體積不到1.7M。 Jodd構(gòu)...
摘要:我是廣告本人的直播課程在月份就要開始了,希望小伙伴們支持一下,現(xiàn)在報名有優(yōu)惠噢 源碼:http://git.oschina.net/sancha... Spark Framework beetl fastjson 結(jié)合 項目結(jié)構(gòu)如下 showImg(https://segmentfault.com/img/bVP12A?w=315&h=512); pom.xml如下: 4...
摘要:從年知道后就開始使用它來記錄自己的編碼時間,但作為免費版只能查看最近兩周的數(shù)據(jù),于是很久之前就寫了一個程序同步自己的歷史數(shù)據(jù),不過一直沒找到合適的圖表插件像官網(wǎng)那樣展示數(shù)據(jù)信息。版本的代碼也實現(xiàn)了相關(guān)的同步展示邏輯,代碼在分支中。 從16年知道 WakaTime 后就開始使用它來記錄自己的編碼時間,但作為免費版只能查看最近兩周的數(shù)據(jù),于是很久之前就寫了一個程序同步自己的歷史數(shù)據(jù),不過一...
javapublic void testRest_GetScenicListByFilter() throws UnsupportedEncodingException { Filter filter = new Filter(); filter.setCityCode(029); filter.setDistanceFilter(10); ...
閱讀 3589·2021-09-22 10:52
閱讀 1600·2021-09-09 09:34
閱讀 2002·2021-09-09 09:33
閱讀 768·2019-08-30 15:54
閱讀 2687·2019-08-29 11:15
閱讀 726·2019-08-26 13:37
閱讀 1680·2019-08-26 12:11
閱讀 2987·2019-08-26 12:00