Apache Email发送qq邮件

前言

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

开始

  先上一段代码:

//用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开头的邮箱中,其中需要注意的有几点:

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

b759a5f485e9afb3e99cb443dc6440545b7.jpg

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

e1fe13197ecd632046306daf6c455b5d9ff.jpg

   如果腾讯已经收到短信,就会生成一个授权码:

  2、email.setAuthentication这个方法,第一个参数是你邮箱的账号必须和email.setFrom()中的账号一直,否则也会报错。

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

0aa1a20e2a49ad910495db4d892383cc01d.jpg

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

扩展

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

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):设置邮件主体

 

 

转载于:https://my.oschina.net/u/3470849/blog/1827165

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值