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):設置郵件主體

相關文章
相關標籤/搜索