java中发送电子邮件的使用
文章目录
一、简介
本文将介绍在java中,怎么发送电子邮件。这里使用apache的commons-email包进行电子邮件的发送,其可以发送简单的文本邮件、带html格式的邮件、带附件的邮件。
二、common-email包介绍
2.1 官方文档地址
http://commons.apache.org/proper/commons-email/userguide.html
2.2 maven依赖包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
2.3 关键类
- SimpleEmail:发送简单的电子邮件;
- MultiPartEmail:发送带附件的电子邮件;
- HtmlEmail:发送带html标签的电子邮件(内嵌图片为url地址);
- ImageHtmlEmail:发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析);
- EmailAttachment:电子邮件的附件(附件可以为url地址[setURL],也可以为本地地址[setPath]);
三、配置发送电子邮件权限
3.1 开通smtp
以qq邮件服务器为例,首先要获取发电子邮件权限,即是开通smtp服务,流程如下:
打开qq邮箱->设置->帐户->POP3/SMTP服务 开启。
此时可以获取发送方的密码(注意:不是邮箱密码),用户名为发送方邮箱。
3.2 端口设置
- STARTTLS:端口为25
- SSL :端口为465
四、示例
import org.apache.commons.mail.*;
import org.apache.commons.mail.resolver.DataSourceCompositeResolver;
import org.apache.commons.mail.resolver.DataSourceFileResolver;
import org.apache.commons.mail.resolver.DataSourceUrlResolver;
import java.net.URL;
public class EmailPaperStudy {
public static void main(String[] args) throws Exception {
//发送简单文本邮件
sendSimpleEmail();
//发送带附件的邮件
sendAttachEmail();
//发送html格式的邮件(内嵌图片为url地址)
sendHtmlEmail();
//发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析)
sendImageHtmlEmail();
}
/
* 发送简单文本邮件
*
* @throws Exception
*/
public static void sendSimpleEmail() throws Exception {
Email email = new SimpleEmail();
email.setSSLOnConnect(true);
email.setCharset("utf-8");
email.setDebug(true);
email.setHostName("smtp.qq.com"); //邮件服务器地址
email.setAuthentication("用户名", "smtp密码"); //用户名(即邮箱)和密码(不是邮箱密码,是邮箱开通smtp服务的密码)
email.setFrom("发送方邮箱");
email.addTo("接收方邮箱");
email.setSubject("邮件标题");
email.setMsg("邮件内容");
email.send();
}
/
* 发送带附件的邮件,且附件由url地址或本地文件提供
*
* @throws Exception
*/
public static void sendAttachEmail() throws Exception {
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.qq.com");
email.setSmtpPort(465);
email.setSSLOnConnect(true);
email.setCharset("utf-8");
email.setDebug(true);
email.setAuthentication("用户名", "smtp密码");
email.setFrom("发送方邮箱");
email.addTo("接收方邮箱");
email.setSubject("邮件标题");
email.setMsg("邮件内容");
//可多个附件,操作完全一样
EmailAttachment attach = new EmailAttachment();
//附件由url地址提供
// attach.setURL(new URL("http://dev.kf.sogou.com/file/lvshi/ai-lawyer/doc-templates/fc2880427add42d488c58df57236fd88.docx"));
//附件由本地文件提供
attach.setPath("C:/Users/panda/Pictures/bg1.jpg");
attach.setDisposition(EmailAttachment.ATTACHMENT);
attach.setName("附件名称.jpg");
email.attach(attach);
email.send();
}
/
* 发送带html标签的电子邮件(内嵌图片为url地址)
*
* @throws Exception
*/
public static void sendHtmlEmail() throws Exception {
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.qq.com");
email.setSmtpPort(465);
email.setSSLOnConnect(true);
email.setCharset("utf-8");
email.setDebug(true);
email.setAuthentication("用户名", "smtp密码");
email.setFrom("发送方邮箱");
email.addTo("接收方邮箱");
email.setSubject("邮件标题");
email.setHtmlMsg("<html>" +
"<a href='http://commons.apache.org/proper/commons-email/userguide.html'>邮件内容</a><br/>" +
"<img src='https://bbsfiles.vivo.com.cn/vivobbs/attachment/forum/201801/01/103444furvn88o8u3futvu.jpg.thumb.jpg' />" +
"</html>");
// email.setHtmlMsg("<html><img src='C:/Users/panda/Pictures/bg1.jpg' /></html>"); //内嵌本地地址,是不生效的
email.send();
email.setSubject("邮件标题1");
email.setHtmlMsg("<html>" +
"<a href='http://commons.apache.org/proper/commons-email/userguide.html'>邮件内容</a><br/>" +
"<img src='https://bbsfiles.vivo.com.cn/vivobbs/attachment/forum/201801/01/103444furvn88o8u3futvu.jpg.thumb.jpg' /><br/>" +
"</html>");
email.send();
}
/
* 发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析)
*
* @throws Exception
*/
public static void sendImageHtmlEmail() throws Exception {
ImageHtmlEmail email = new ImageHtmlEmail();
email.setHostName("smtp.qq.com");
email.setSmtpPort(465);
email.setSSLOnConnect(true);
email.setCharset("utf-8");
email.setDebug(true);
//解析资源
DataSourceResolver[] dataSourceResolvers = new DataSourceResolver[]{
new DataSourceFileResolver(),//解析本地图片
new DataSourceUrlResolver(new URL("http://"))}; //解析http地址的图片
email.setDataSourceResolver(new DataSourceCompositeResolver(dataSourceResolvers));
email.setAuthentication("用户名", "smtp密码");
email.setFrom("发送方邮箱");
email.addTo("接收方邮箱");
email.setSubject("邮件标题");
email.setHtmlMsg("<html>" +
"<a href='http://commons.apache.org/proper/commons-email/userguide.html'>邮件内容</a><br/>" +
"<img src='https://bbsfiles.vivo.com.cn/vivobbs/attachment/forum/201801/01/103444furvn88o8u3futvu.jpg.thumb.jpg' /><br/>" +
"<img src='C:/Users/panda/Pictures/bg1.jpg' />" +
"</html>");
email.send();
}
}