最近在学习大名鼎鼎的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):设置邮件主体