Vertx-Mail简析
Posted Vertx北京用户组
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vertx-Mail简析相关的知识,希望对你有一定的参考价值。
前两天做了一个通过vertx实现发邮件的程序,今天就给大家分享一下
首先我们需要导入vertx-mail-client
<dependency> <groupId>io.vertx</groupId> <artifactId>vertx-mail-client</artifactId> <version>3.2.1</version> </dependency>
创建client
创建一个client打开smtp连接就可以发送邮件了,而具体的哪一个邮箱就需要通过MailConfig来指定了,示例代码如下:
MailConfig config = new MailConfig(); config.setHostname("mail.example.com"); config.setPort(587); config.setStarttls(StartTLSOptions.REQUIRED); config.setUsername("user"); config.setPassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config);
你发邮件的所有配置都是通过MailConfig来实现的,如果MailConfig什么都不设置的话,它会使用默认的,hostName为localhost,port为25;类似于数据库MailClient可以使用一个连接池,这样就没必要每次发送邮件的时候都要和服务器重新连接,每次都登录;一个client可以被创建成共享的和不共享的,如果是共享的,所有相同身份标识的都共享一个连接池:
MailClient mailClient = MailClient.createShared(vertx, config, "exampleclient");
如果是通过TLS登录,需要设置setStarttls;
现在创建client完毕了,接下来就是怎么发邮件了,在发之前我们要关心的是发什么,我们发的信息都是存储在MailMessage里的:
MailMessage message = new MailMessage(); message.setFrom("user@example.com (Example User)"); message.setTo("recipient@example.org"); message.setCc("Another User <another@example.net>"); message.setText("this is the plain message text"); message.sethtml("this is html text <a href=\"\">vertx.io</a>");
setFrom表示发送者,这个要和前面的登录用户一样,setSubject表示主题,setText表示正文,setTo表示发给谁,还可以抄送SetCc,还可以密送setBcc,参数可以是一个用户或者是一组用户,一个的话用String,一组的话List
发送邮件:
mailClient.sendMail(message, result -> { if (result.succeeded()) { System.out.println(result.result()); } else { result.cause().printStackTrace(); } });
现在我们发送邮件已经结束了,但是好像还缺点什么东西,对就是我们还没有说怎么添加附件,现在邮箱已经成为了必不可少的一部分了,vertx这点也考虑到了:
MailAttachment attachment = new MailAttachment(); attachment.setContentType("text/plain"); attachment.setData(Buffer.buffer("attachment file")); message.setAttachment(attachment);
MailAttachment创建附件,附件信息存储到一个Buffer,支持Base64附件,然后把它添加到message里面就可以了;附件的编码格式通过setContentType(String contentType)来设置。
最后是一MailConfig属性补充:
ssl表示连接服务器的时候是否使用ssl,使用465端口的时候需要设置,默认为false
ehloHostname 使用EHLO而且创建一个消息的ID,如果不设置,将使用hostname
login LoginOption只可以是 DISABLED, NONE REQUIRED, 默认是 NONE
由于能力有限,有些地方可能会存在错误或者不合理的表述,欢迎指出错误,一起探讨!
以上是关于Vertx-Mail简析的主要内容,如果未能解决你的问题,请参考以下文章