commons-email
概述
发生邮件的类库。
maven依赖
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-email</artifactId><version>1.6.0</version></dependency>
示例
发送简单的email,不能添加附件
Email email = new SimpleEmail();email.setHostName("smtp.sohu.com");// 邮件服务器域名email.setSmtpPort(465); // 邮件服务器smtp协议的SSL端口email.setAuthentication("用户名", "密码"); // 用户名和密码为邮箱的账号和密码email.setSSLOnConnect(true);// SSL安全连接email.setCharset("UTF-8");// 设置字符编码方式email.setFrom("xxx@sohu.com");// 发件人email.addTo("xxx@163.com");// 收件人email.addCc("xxx");// 抄送email.addBcc("xxx");// 密送email.setSubject("测试邮件");// 邮件主题email.setMsg("This is a test mail from java application. 哈哈");// 邮件正文email.send();// 发送
发送附件emaill,可以添加本地资源,也可以指定网络上资源
// 附件类EmailAttachment attachment = new EmailAttachment();attachment.setPath("E:\\test\\data\\mail\\123.jpg");// 本地路径attachment.setURL(new URL("https://www.baidu.com/img/bd_logo1.png"));//网络资源attachment.setDisposition(EmailAttachment.ATTACHMENT);// 定义附件attachment.setDescription("Picture");// 附件描述attachment.setName("pic.jpg");// 附件名(为中文时要处理编码)// 附件邮件,可以添加多个附件MultiPartEmail email = new MultiPartEmail();email.setHostName("smtp.sohu.com");email.setAuthentication("用户名", "密码");email.setFrom("xxx@sohu.com");email.addTo("xxx@163.com");email.setSubject("测试邮件");email.setMsg("Here is a test mail.");email.attach(attachment);email.send();
HTML格式邮件
HtmlEmail email = new HtmlEmail();email.setHostName("smtp.sohu.com");email.setAuthentication("用户名", "密码");email.setFrom("xxx@sohu.com");email.addTo("xxx@163.com");email.setSubject("测试邮件");URL url = new URL("https://www.baidu.com/img/bd_logo1.png"); // 图片的网络地址String cid = email.embed(url, "Baidu logo");email.setHtmlMsg("<html>The Baidu logo <br/><img src='cid:" + cid + "'></html>");// 将图片引入html标签email.send();
HTML格式邮件,内嵌图片
ImageHtmlEmail email = new ImageHtmlEmail();email.setHostName("smtp.sohu.com");email.setSmtpPort(456);email.setSSLOnConnect(true);email.setAuthentication("用户名", "密码");email.setFrom("xxx@sohu.com");email.addTo("xxx@163.com");email.setCharset("UTF-8");email.setSubject("测试邮件");URL url = new URL("https://www.baidu.com");email.setDataSourceResolver(new DataSourceUrlResolver(url));// 这样HTML内容里如果有此路径下的图片会直接内联String htmlEmail = "这里<img src='https://www.baidu.com/img/bd_logo1.png'>有图片。";email.setHtmlMsg(htmlEmail);email.send();
可用实现类
Email 顶级抽象类
方法 | 描述 |
---|---|
setDebug(boolean d) | 配置是否是调试模式 |
setHostName(String aHostName) | 设置SMTP服务器 |
setSslSmtpPort(String sslSmtpPort) | 设置SMTP服务器端口(Ssl) |
setSmtpPort(int aPortNumber) | 设置SMTP服务器端口 |
setAuthentication(String userName, String password) | 登陆邮件服务器的用户名和密码 |
setAuthenticator(Authenticator newAuthenticator) | 配置邮件服务器的身份验证对象 |
setCharset(String newCharset) | 配置字符编码 |
setContent(MimeMultipart aMimeMultipart) setContent(Object aObject, String aContentType) | 用来设置邮件正文内容的。这个方法非常灵活,允许你设置邮件的正文为纯文本或HTML格式。 |
updateContentType(String aContentType) | 主体部分的内容类型(例如,text/plain 或 text/html)。对于单部分邮件(即邮件主体为纯文本或HTML),你可以直接设置邮件的contentType属性。 |
setMailSession(Session aSession) | 配置会话 |
setMailSessionFromJNDI(String jndiName) | 从JNDI中获取会话 |
setSocketConnectionTimeout(int socketConnectionTimeout) | 设置连接超时时间(毫秒) |
setSocketTimeout(int socketTimeout) | 设置读取超时时间(毫秒) |
setHeaders(Map<String, String> map) | 设置请求头 |
addHeader(String name, String value) | 添加请求头 |
setPopBeforeSmtp(boolean newPopBeforeSmtp, String newPopHost, String newPopUsername, String newPopPassword) | |
setSentDate(Date date) | 邮件发送时间 |
send() | 发送邮件 |
buildMimeMessage() | 用于构建 MIME 格式的邮件。 |
sendMimeMessage() | 发送构建 MIME 格式的邮件。 |
setStartTLSEnabled(boolean startTlsEnabled) | 链式调用方法, 启用TLS(如果你的SMTP服务器支持) |
setStartTLSRequired(boolean startTlsRequired) | 链式调用方法,设置是否需要TLS |
setFrom(String email) setFrom(String email, String name) setFrom(String email, String name, String charset) | 链式调用方法,设置发送源邮箱 |
addTo(String email) addTo(String… emails) addTo(String email, String name) addTo(String email, String name, String charset) | 链式调用方法,添加目标邮箱 |
setTo(Collection aCollection) | 链式调用方法,设置目标邮箱 |
addCc(String email) addCc(String… emails) addCc(String email, String name) addCc(String email, String name, String charset) | 链式调用方法,添加抄送邮箱 |
setCc(Collection aCollection) | 链式调用方法,设置抄送邮箱 |
addBcc(String email) addBcc(String… emails) addBcc(String email, String name) addBcc(String email, String name, String charset) | 链式调用方法, 添加密送邮箱 |
setBcc(Collection aCollection) | 链式调用方法, 设置密送邮箱 |
addReplyTo(String email) addReplyTo(String email, String name) addReplyTo(String email, String name, String charset) | 链式调用方法, 添加回复邮箱 |
setReplyTo(Collection aCollection) | 链式调用方法, 设置回复邮箱 |
setSubject(String aSubject) | 链式调用方法,设置邮件主题 |
setBounceAddress(String email) | 链式调用方法, |
setSSLOnConnect(boolean ssl) | 链式调用方法,开启SSL加密 |
setSSLCheckServerIdentity(boolean sslCheckServerIdentity) | 链式调用方法, |
setSendPartial(boolean sendPartial) | 链式调用方法, |
SimpleEmail 发送简单邮件,即纯文本邮件
方法 | 描述 |
---|---|
setMsg(String msg) | 设置邮件消息 |
MultiPartEmail 发送带附件的邮件
方法 | 描述 |
---|---|
setSubType(String aSubType) | |
setBoolHasAttachments(boolean b) | 设置是否含有附件,实际上是通过添加附件的方式来间接表明邮件含有附件。 |
buildMimeMessage() | 用于构建 MIME 格式的邮件。 |
getSubType() | |
isBoolHasAttachments() | |
addPart(String partContent, String partContentType) addPart(MimeMultipart multipart) addPart(MimeMultipart multipart, int index) | |
setMsg(String msg) | 设置消息 |
attach(File file) attach(EmailAttachment attachment) attach(URL url, String name, String description) attach(URL url, String name, String description, String disposition) attach(DataSource ds, String name, String description) attach(DataSource ds, String name, String description, String disposition) | 用于添加附件 |
HtmlEmail 发送超文本邮件
方法 | 描述 |
---|---|
setTextMsg(String aText) | 设置文本消息 |
setHtmlMsg(String aHtml) | 设置富文本消息 |
setMsg(String msg) | 设置消息 |
embed(String urlString, String name) embed(URL url, String name) embed(File file) embed(File file, String | |
cid) embed(DataSource dataSource, String name) embed(DataSource dataSource, String name, String cid) | 用于生成图片标识 |
buildMimeMessage() | 用于构建 MIME 格式的邮件。 |
ImageHtmlEmail 发送图文混排的超文本邮件
方法 | 描述 |
---|---|
buildMimeMessage() | 用于构建 MIME 格式的邮件。 |