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