在項目中,一直來是使用spring對java mail的封裝,來發(fā)郵件的。雖然spring的封裝已經(jīng)大大簡化了發(fā)送郵件的復雜度,但是今天要介紹下apache commons email組件,對java mail進行了更好的封裝,對于客戶端的調(diào)用,已經(jīng)是相當?shù)胤奖懔恕?br />
commons-email maven庫地址:
<dependency>
<groupId>commons-email</groupId>
<artifactId>commons-email</artifactId>
<version>1.1</version>
</dependency>
commons-email實現(xiàn)是相當?shù)暮唵?,下面介紹下幾個重要的類實現(xiàn)
1)Email
一個抽象類,對java mail進行了封裝,提供主要接口如下
setHostName(String):設置smtp服務器地址
setSmtpPort(int):設置smtp服務器端
setAuthenticator(Authenticator):設置授權(quán)帳號和密碼
setSSL(boolean ssl):是否采用ssl方式連接服務
setMailSession(Session):設置與服務器連接session
setCharset(String):設置郵件主體編碼
setFrom(String):設置發(fā)件人地址
addTo(String):添加收件人地址
addCc(String):添加抄送人地址
addBcc(String):添加密送人地址
addReplyTo(String):添加回復人地址
setSubject(String):設置郵件標題
setMsg(String):設置郵件主體
send():發(fā)送郵件
2)SimpleEmail
繼承Email,實現(xiàn)了setMsg(String msg)方法,發(fā)送文本格式郵件,調(diào)用非常簡單
SimpleEmail email = new SimpleEmail();
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.setMsg("message");
email.send();
3)MultiPartEmail
繼承Email,多了一個添加附件的方法:
attach(URL, String, String)
attach(URL, String, String, String)
attach(DataSource, String, String)
attach(DataSource, String, String, String)
attach(EmailAttachment)
調(diào)用方式如下:
MultiPartEmail email = new MultiPartEmail();
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.setMsg("message");
email.attach("file:///***.pom.xml", "pom.xml", "pom");
email.send();
4)HtmlEmail
繼承MultiPartEmail,與SimpleEmail相比,多了一個setHtmlMsg(String msg)方法,用戶設置html格式內(nèi)容,調(diào)用方式同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();
當然,commons email只提供了對smtp協(xié)議的封裝,不包括對pop協(xié)議的封裝,所以只能發(fā)送郵件,不能接受郵件。