资讯专栏INFORMATION COLUMN

使用Jodd简化邮件服务的开发

MoAir / 1934人阅读

摘要:最近需要做一个邮件相关的功能,考虑到自建邮件服务器维护起来比较麻烦,于是选择第三方邮件服务。邮件发送服务的对比可以看这篇文章。使用触发发送发件人收件人主题内容使用方式发送发件人收件人主题内容

最近需要做一个邮件相关的功能,考虑到自建邮件服务器维护起来比较麻烦,于是选择第三方邮件服务。邮件发送服务的对比可以看这篇文章。

最后我选择了:

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){
        Map formData = 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){
        Map formData = 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();
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64350.html

相关文章

  • Jodd - Java界瑞士军刀轻量级工具包!

    摘要:介绍是对于开发更便捷的开源迷你框架,包含工具类实用功能的集合,总包体积不到。你可以把想象成的瑞士军刀不仅小,锋利而且包含许多便利的功能。 showImg(https://segmentfault.com/img/remote/1460000015356940); Jodd介绍 Jodd是对于Java开发更便捷的开源迷你框架,包含工具类、实用功能的集合,总包体积不到1.7M。 Jodd构...

    yck 评论0 收藏0
  • 服务框架 Spark Framework

    摘要:我是广告本人的直播课程在月份就要开始了,希望小伙伴们支持一下,现在报名有优惠噢 源码:http://git.oschina.net/sancha... Spark Framework beetl fastjson 结合 项目结构如下 showImg(https://segmentfault.com/img/bVP12A?w=315&h=512); pom.xml如下: 4...

    fasss 评论0 收藏0
  • WakaTime数据同步展示工具

    摘要:从年知道后就开始使用它来记录自己的编码时间,但作为免费版只能查看最近两周的数据,于是很久之前就写了一个程序同步自己的历史数据,不过一直没找到合适的图表插件像官网那样展示数据信息。版本的代码也实现了相关的同步展示逻辑,代码在分支中。 从16年知道 WakaTime 后就开始使用它来记录自己的编码时间,但作为免费版只能查看最近两周的数据,于是很久之前就写了一个程序同步自己的历史数据,不过一...

    focusj 评论0 收藏0
  • apache cxf

    javapublic void testRest_GetScenicListByFilter() throws UnsupportedEncodingException { Filter filter = new Filter(); filter.setCityCode(029); filter.setDistanceFilter(10); ...

    gclove 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<