使用commons email發送郵件
在項目中,一直來是使用spring對java mail的封裝,來發郵件的。雖然spring的封裝已經大大簡化了發送郵件的複雜度,但是今天要介紹下apache commons email組件,對java mail進行了更好的封裝,對於用戶端的調用,已經是相當地方便了。
commons-email maven庫地址:
<dependency>
<groupId>commons-email</groupId>
<artifactId>commons-email</artifactId>
<version>1.1</version>
</dependency>
commons-email實現是相當的簡單,下面介紹下幾個重要的類實現
1)Email
一個抽象類別,對java mail進行了封裝,提供主要介面如下
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):設定郵件主體
send():發送郵件
2)SimpleEmail
繼承Email,實現了setMsg(String msg)方法,發送文字格式設定郵件,調用非常簡單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)
調用方式如下: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格式內容,調用方式同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協議的封裝,不包括對pop協議的封裝,所以只能發送郵件,不能接受郵件。