使用jodd-email实现邮件发送

本文介绍了如何使用jodd-email库来实现邮件发送。jodd-email提供了简单易用的API,支持发送文本邮件、HTML邮件、多地址发送以及带附件的邮件。文章详细讲解了每个功能的使用步骤,包括添加依赖、创建并发送邮件实例。

最近接到一个新的任务,需要提供一个公共的邮件服务接口给客户端使用,目前需要提供两种访问方式:1、WebService方式;2、Restful方式。在选用具体的邮件发送工具时,放弃了javamail而是选择了jodd-email来实现邮件发送。

jodd简介

jodd下有一系列非常好用的工具集,如下:

jodd-core        一些工具类,包括Printf、JDateTime、StringUtil、Fast buffers等等
jodd-bean        BeanUtil以及类型检查转换工具
jodd-props       更强大的Java Properties替代
jodd-email       更简单易用的e-mail收发
jodd-upload      处理HTTP上传
jodd-servlets    一些Servlet相关的工具类, 附带一套漂亮的JSP标签库
jodd-http        轻巧的HTTP客户端
小型框架模块有:
jodd-madvoc      一个MVC框架
jodd-petite      一个依赖注入容器
jodd-lagarto     HTML/XML解析器,包含Jerry和CSSelly,让你像jQuery一样筛选HTML节点
jodd-lagarto-web Lagarto的Web扩展,包含Decora、HtmlStapler等等
jodd-proxetta    帮你实现动态代理,获取函数参数名
jodd-dboom       数据库访问的轻量级封装,可看作一个简单的ORM
jodd-json        JSON解析、序列化
jodd-vtor        一个基于注解的字段验证框架
有需要的可以自行选取。

jodd-email官网地址如下:http://jodd.org/doc/email.html

jodd提供了更简单,更使用的方式来发送电子邮件。另外jodd还提供了一系列的流式API供使用。

jodd使用

1、引入pom依赖

<dependency>
            <groupId>org.jodd</groupId>
            <artifactId>jodd-mail</artifactId>
            <version>3.7</version>
        </dependency>

2、使用示例

2.1 简单文本邮件

Email email = Email.create()
        .from("...@jodd.org")
        .to("...@jodd.org")
        .subject("Hello!")
        .addText("A plain text message...");

2.2 Html邮件

Email email = Email.create()
        .from("...@jodd.org")
        .to("...@jodd.org")
        .subject("Hello HTML!")
        .addHtml("<b>HTML</b> message...");

2.3 多邮件地址发送

Email email = Email.create()
        .from("...@jodd.org")
        .to("adr1@jodd.org")
        .to("adr2@jodd.org")
        .cc("xxx@bar.com")
        .cc("zzz@bar.com")
        .subject("Hello HTML!")
        .addHtml("<b>HTML</b> message");

2.4 带附件发送

jodd提供了如下几种处理附件的方式:

        1、ByteArrayAttachment:当附件以字节的方式来添加时,使用这种方式。

   2、InputStreamAttachment:当附件以流的方式添加时,使用这种方式。

   3、FileAttachment:直接以文件的方式进行添加附件

   4、DataSource:使用通用的数据原来添加附件

Email email = new Email();

    email.setFrom("infoxxx@jodd.org");
    email.setTo("igorxxxx@gmail.com");
    email.setSubject("test7");

    EmailMessage textMessage = new EmailMessage("Hello!", MimeTypes.MIME_TEXT_PLAIN);
    email.addMessage(textMessage);

    EmailMessage htmlMessage = new EmailMessage(
        "<html><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">" +
        "<body><h1>Hey!</h1><img src='cid:c.png'><h2>Hay!</h2></body></html>",
    MimeTypes.MIME_TEXT_HTML);
    email.addMessage(htmlMessage);

    EmailAttachment embeddedAttachment =
        new ByteArrayAttachment(
            FileUtil.readBytes("/c.png"), "image/png", "c.png", "c.png");
    embeddedAttachment.setEmbeddedMessage(htmlMessage);
    email.attach(embeddedAttachment);

    EmailAttachment attachment = new FileAttachment(
        new File("/b.jpg"), "b.jpg", "image/jpeg");
    email.attach(attachment);
下面,我们来看下,使用流式API来发送附件:

Email email = Email.create()
        .from("infoxxxx@jodd.org")
        .to("igorxxxxxx@gmail.com")
        .subject("test6")
        .addText("Hello!")
        .addHtml(
            "<html><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">"+
            "<body><h1>Hey!</h1><img src='cid:c.png'><h2>Hay!</h2></body></html>")
        .embed(attachment().bytes(new File("/c.png")))
        .attach(attachment().file("/b.jpg"));

其中attachment()是EmailAttachment类的一个静态方法。

2.5 完整示例

下面以一个完整的示例来做下说明:

public void sendMailWithAttachment(){
		SendMailSession session = null;
		try {
			Email email = new Email();

			email.from("chhliu", "chhliu@qq.com");
			email.to("cyh", "xyh@qq.com");
			email.setSubject("test");

			EmailMessage textMessage = new EmailMessage("Hello!", MimeTypes.MIME_TEXT_PLAIN);
			email.addMessage(textMessage);

			EmailMessage htmlMessage = new EmailMessage(
			    "<html><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">" +
			    "<body><h1>Hey!</h1><img src='cid:c.png'><h2>Hay!</h2></body></html>",
			MimeTypes.MIME_TEXT_HTML);
			email.addMessage(htmlMessage);

			EmailAttachment embeddedAttachment =
			    new ByteArrayAttachment(
			        FileUtil.readBytes("C://Users//Administrator//Desktop//logback.xml"), "text/html; charset=utf-8", "logback.xml", "100");
			embeddedAttachment.setEmbeddedMessage(htmlMessage);
			email.attach(embeddedAttachment);

			EmailAttachment attachment = new FileAttachment(
			    new File("/b.jpg"), "b.jpg", "image/jpeg");
			email.attach(attachment);
// 添加验证
 SmtpServer<?> smtpServer = SmtpServer.create("smtpav.qq.com")
					.authenticateWith("your email address", "your email password").timeout(1000);
// 创建session
 session = smtpServer.createSession();
			session.open();
			String result = session.sendMail(email);
			log.info("发送邮件:"+result);
			session.close();
		} catch (Exception e) {
			log.error("发送邮件失败:" + e.getMessage(), e);
			System.out.println(e.getMessage());
		} finally {
			if (null != session) {
				session.close();
			}
		}
	}
从上面的示例中,是否能感受到了jodd-email发送邮件的方便之处了?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值