Apache Email发送qq邮件

前言

    最近在学习大名鼎鼎的Apache的commons包,发现一个好玩的Email工具包,该包对java mail进行了更好的封装,比原生的下降了复杂度。html

开始

  先上一段代码:java

//用commons email发送邮件
@Test
public void testEmail() throws EmailException {
    Email email = new SimpleEmail();
    email.setHostName("smtp.qq.com");
    email.setSmtpPort(465);
    email.setAuthenticator(new DefaultAuthenticator("54****701@qq.com", "dyp*****utbaja"));
    email.setSSL(true);
    email.setFrom("54****701@qq.com");
    email.setSubject("TestMail");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("97****375@qq.com");
    email.send();
}

  该段代码的意思大概是从54开头的qq邮箱发送到97开头的邮箱中,其中须要注意的有几点:服务器

  一、email.setAuthentication这个方法,第一个参数是你邮箱的帐号,第二个参数并不是你邮箱的登陆密码,而是邮箱的受权码,qq邮箱的受权码怎么获取能,首先在下面页面找到 生成受权码的位置:session

   点击后会提示你发送短信到指点的号码:工具

   若是腾讯已经收到短信,就会生成一个受权码:学习

  二、email.setAuthentication这个方法,第一个参数是你邮箱的帐号必须和email.setFrom()中的帐号一直,不然也会报错。this

  主要的两点设置完后,运行代码会在97的邮箱中收到邮件,以下图:编码

  ok,事情就是这么简单,有没有感受比原生的好用多了加密

扩展

   其实咱们邮件的内容是经过email.setMsg来写的,固然你能够先经过stringBuffer先把文字写到buffer里面,而后再一次性写入,出了这个Apache还提供了,另外两个接口,用于发送附件和html格式的正文。spa

MultiPartEmail
继承Email,多了一个添加附件的方法:
attach(URL, String, String)
attach(URL, String, String, String)
attach(DataSource, String, String)
attach(DataSource, String, String, String)
attach(EmailAttachment)

HtmlEmail
继承MultiPartEmail,与SimpleEmail相比,多了一个setHtmlMsg(String msg)方法,用户设置html格式内容,调用方式同SimpleEmail几乎一致

HtmlEmail email = new HtmlEmail();
email.setSSL(true);
email.setSmtpPort(SMTP_PORT);
email.setHostName(SMTP_SERVER);
email.setAuthentication(USER_NAME, PASSWORD);
email.addTo("**@**.com");
email.setFrom("**@**.com");
email.setSubject("subject");
email.setCharset("GBK");
email.setHtmlMsg("<html><body><b>this is email message!</body></html>");
email.send();

上面提供的接口加上前面的simpleEmail基本上能够知足咱们对系统发送邮件的需求。

附录

Email主要的API:

setHostName(String):设置smtp服务器地址 setSmtpPort(int):设置smtp服务器端 setAuthenticator(Authenticator):设置受权账号和密码 setSSL(boolean ssl):是否采用ssl方式链接服务 setMailSession(Session):设置与服务器链接session setCharset(String):设置邮件主体编码 setFrom(String):设置发件人地址 addTo(String):添加收件人地址 addCc(String):添加抄送人地址 addBcc(String):添加密送人地址 addReplyTo(String):添加回复人地址 setSubject(String):设置邮件标题 setMsg(String):设置邮件主体

相关文章
相关标签/搜索