使用jodd-email实现邮件发送
2017-05-22 19:13
796 查看
最近接到一个新的任务,需要提供一个公共的邮件服务接口给客户端使用,目前需要提供两种访问方式:1、WebService方式;2、Restful方式。在选用具体的邮件发送工具时,放弃了javamail而是选择了jodd-email来实现邮件发送。
jodd-email官网地址如下:http://jodd.org/doc/email.html
jodd提供了更简单,更使用的方式来发送电子邮件。另外jodd还提供了一系列的流式API供使用。
jodd使用
1、ByteArrayAttachment:当附件以字节的方式来添加时,使用这种方式。
2、InputStreamAttachment:当附件以流的方式添加时,使用这种方式。
3、FileAttachment:直接以文件的方式进行添加附件
4、
其中attachment()是EmailAttachment类的一个静态方法。
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发送邮件的方便之处了?
相关文章推荐
- java实现发送邮件可多个附件内嵌图片-commons-email使用
- java实现发送邮件可多个附件内嵌图片-commons-email使用(未测试)
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- android使用javaemail实现发送邮件
- jodd mail技术实现简单发送email邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- 使用Springboot Email实现邮件发送
- 使用System.Net.Mail类实现邮件发送
- 使用.net实现发送Email
- C#使用Jmail实现邮件的接收与发送详细示例
- 使用System.Net.Mail类实现邮件发送
- 使用 MAPI 实现邮件发送
- 使用 MAPI 实现邮件发送
- 使用MailMessage和SmtpClient类实现asp.net的邮件发送(有详细注释并已测试通过)
- 使用Apache email组件发送邮件实例
- 一步一步教你使用Jmail实现邮件的接收与发送
- ASP下使用CDO.Message实现需要身份验证的邮件发送
- Microsoft .NET Framework 2.0实现发送邮件(Email)总结
- Microsoft .NET Framework 2.0实现发送邮件(Email)总结
- 使用Nvelocity实现发送邮件功能(ASP.NET MVC2环境下)