JAVA 邮件发送工具类
生活随笔
收集整理的這篇文章主要介紹了
JAVA 邮件发送工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.封裝郵件接收地址MODEL和郵件信息MODEL
package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; /*** * <br>類 名: MailAddress * <br>描 述: InternetAddress的封裝類 * <br>作 者: shizhenwei * <br>創 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>歷 史: (版本) 作者 時間 注釋*/ public class MailAddress implements Serializable{/** **/private static final long serialVersionUID = -2636919632818478505L;private String address;//郵箱地址private String personal;//郵箱顯示名稱public MailAddress() {}public MailAddress(String address) {this.address = address;}public MailAddress(String address, String personal) {this.address = address;this.personal = personal;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPersonal() {return personal;}public void setPersonal(String personal) {this.personal = personal;}@Overridepublic String toString() {return "AddressModel{" + "address='" + address + '\'' + ", personal='" + personal + '\'' + '}';} } package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; import java.util.Arrays;/*** * <br>類 名: MailMessage * <br>描 述: 郵寄信息類* <br>作 者: shizhenwei * <br>創 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>歷 史: (版本) 作者 時間 注釋*/ public class MailMessage implements Serializable {/** **/private static final long serialVersionUID = 1269256094401416828L;private String subject;//主題private String htmlText;//內容private String charset;//編碼集private MailAddress[] to;//收件人地址private MailAddress[] cc;//抄送人地址private MailAddress[] bcc;//暗送人地址private MailAddress from;//發件人地址private MailAddress replyTo;//回復發件人地址public MailMessage() {}public MailMessage(String subject,String plainText, String htmlText,String charset,boolean multipart,MailAddress[] to, MailAddress[] cc,MailAddress[] bcc,MailAddress from,MailAddress replyTo) {this.subject = subject;this.htmlText = htmlText;this.charset = charset;this.to = to;this.cc = cc;this.bcc = bcc;this.from = from;this.replyTo = replyTo;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getHtmlText() {return htmlText;}public void setHtmlText(String htmlText) {this.htmlText = htmlText;}public String getCharset() {return charset;}public void setCharset(String charset) {this.charset = charset;}public MailAddress[] getTo() {return to;}public void setTo(MailAddress[] to) {this.to = to;}public MailAddress[] getCc() {return cc;}public void setCc(MailAddress[] cc) {this.cc = cc;}public MailAddress[] getBcc() {return bcc;}public void setBcc(MailAddress[] bcc) {this.bcc = bcc;}public MailAddress getFrom() {return from;}public void setFrom(MailAddress from) {this.from = from;}public MailAddress getReplyTo() {return replyTo;}public void setReplyTo(MailAddress replyTo) {this.replyTo = replyTo;}@Overridepublic String toString() {return "MailModel{" +"subject='" + subject + '\'' +", htmlText='" + htmlText + '\'' +", charset='" + charset + '\'' +", to=" + Arrays.toString(to) +", cc=" + Arrays.toString(cc) +", bcc=" + Arrays.toString(bcc) +", from=" + from +", replyTo=" + replyTo +"} ";} }2.郵件轉換工具類(這一步可能會覺得多余,我只能講為了以后升級擴展吧)
package com.sicdt.jnzxgzc.common.mail.util;import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List;import javax.mail.internet.InternetAddress;import org.apache.commons.lang3.ArrayUtils;import com.sicdt.jnzxgzc.common.mail.model.MailAddress;/*** * <br>類 名: EmailConvert * <br>描 述: 郵件信息轉換類* <br>作 者: shizhenwei * <br>創 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>歷 史: (版本) 作者 時間 注釋*/ public class EmailConvert {public static InternetAddress[] convert(MailAddress[] ams) throws UnsupportedEncodingException{if(ArrayUtils.isEmpty(ams)) {return new InternetAddress[0];}List<InternetAddress> ial = new ArrayList<>();for(MailAddress am : ams){ial.add(convert(am));}return ial.toArray(new InternetAddress[0]);}public static InternetAddress convert(MailAddress am) throws UnsupportedEncodingException{if(am == null) {return new InternetAddress();}return new InternetAddress(am.getAddress(), am.getPersonal());} }3.郵件發送工具
package com.sicdt.jnzxgzc.common.mail.util;import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Properties;import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;import org.apache.commons.lang3.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.MimeMessageHelper;import com.alibaba.druid.util.StringUtils; import com.sicdt.jnzxgzc.common.mail.model.MailAddress; import com.sicdt.jnzxgzc.common.mail.model.MailMessage;/*** * <br>類 名: MailUtils * <br>描 述: 郵件發送UTILS* <br>作 者: shizhenwei * <br>創 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>歷 史: (版本) 作者 時間 注釋*/ public class MailUtils {private static final Logger LOG = LoggerFactory.getLogger(MailUtils.class);static{InputStreamReader in;Properties prop = new Properties();try {in = new InputStreamReader(MailUtils.class.getClassLoader().getResourceAsStream("config.properties"),"UTF-8");prop.load(in);} catch (IOException e) {e.printStackTrace();}host=prop.getProperty("mail.smtp.host");username=prop.getProperty("mail.sender.username");password=prop.getProperty("mail.sender.password");timeout=prop.getProperty("mail.smtp.timeout");username_dispaly = prop.getProperty("mail.sender.username_dispaly");subject = prop.getProperty("mail.sender.subject");}public static String host;public static String username;public static String username_dispaly;public static String password;public static String timeout;public static String subject;public static void main(String[] args) throws MessagingException, IOException {MailMessage message = new MailMessage();/*** 收件人*/MailAddress t1 = new MailAddress("389262566@qq.com");MailAddress t2 = new MailAddress("954496177@qq.com");message.setTo(new MailAddress[]{t1,t2});/*** 回復人*/message.setReplyTo(t1);/*** 消息內容*/message.setHtmlText(readEmailTemplate("mail/mail_template_zwlxhsh.ts"));sendMail(message,true);}public static Session createSession() throws IOException{Properties mailprop=new Properties();mailprop.put("mail.host",host);mailprop.put("mail.transport.protocol", "smtp");mailprop.put("mail.smtp.auth", true);//使用java發送郵件5步驟//1.創建sesssionSession session=Session.getInstance(mailprop);//開啟session的調試模式,可以查看當前郵件發送狀態session.setDebug(true);return session;}public static Transport createTransport(Session session) throws MessagingException{//2.通過session獲取Transport對象(發送郵件的核心API)Transport ts=session.getTransport();//3.通過郵件用戶名密碼鏈接 ts.connect(username, password);return ts;}public static MimeMessage createMimeMessage(Session session) throws AddressException,MessagingException{//創建郵件對象MimeMessage mm=new MimeMessage(session);//設置發件人mm.setFrom(new InternetAddress(username));return mm;}public static void sendMail(MailMessage message) {sendMail(message, null);}public static void sendMail(MailMessage message, boolean html) {sendMail(message, null, true);}public static void sendMail(MailMessage message, File[] attachment) {sendMail(message, attachment, false);}public static void sendMail(MailMessage message, File[] attachment, boolean html) {try {Session session = createSession();MimeMessage mm = createMimeMessage(session);if(StringUtils.isEmpty(message.getCharset())){message.setCharset("utf-8");}MimeMessageHelper helper = new MimeMessageHelper(mm, true, message.getCharset());helper.setTo(EmailConvert.convert(message.getTo()));if(null != message.getCc()){helper.setCc(EmailConvert.convert(message.getCc()));}if(null !=message.getBcc()){helper.setBcc(EmailConvert.convert(message.getBcc()));}if(null == message.getFrom()){MailAddress from = new MailAddress(username, username_dispaly);message.setFrom(from);}helper.setFrom(EmailConvert.convert(message.getFrom()));if(null == message.getReplyTo()){MailAddress replyTo = new MailAddress(username, username_dispaly);message.setReplyTo(replyTo);}helper.setReplyTo(EmailConvert.convert(message.getReplyTo()));if(StringUtils.isEmpty(message.getSubject())){message.setSubject(subject);}helper.setSubject(message.getSubject());helper.setText(message.getHtmlText(), html);if (!ArrayUtils.isEmpty(attachment)) {for (int i = 0; attachment != null && i < attachment.length; i++) {File file = attachment[i];FileSystemResource resource = new FileSystemResource(file);helper.addAttachment(file.getName(), resource);}}Transport ts = createTransport(session);ts.sendMessage(mm, mm.getAllRecipients());} catch (Exception e) {LOG.warn(message.toString());LOG.error(e.toString());}}/*** <br>描 述: 讀取模塊文件 轉換為 String* <br>作 者: shizhenwei * <br>歷 史: (版本) 作者 時間 注釋* @param url* @return*/public static String readEmailTemplate(String url){try {String classpath = MailUtils.class.getResource("/").getPath();FileInputStream in = new FileInputStream(classpath+"/"+url);int size=in.available();byte[] buffer=new byte[size];in.read(buffer);in.close();return new String(buffer,"UTF-8");} catch (IOException e) {e.printStackTrace();}return null;} }4.配置文件
#mail mail.smtp.host=smtp.163.com mail.sender.username=xxx@163.com mail.sender.password=xxx mail.smtp.timeout=25000 mail.sender.username_dispaly=中國人民 mail.sender.subject=債務履行核實函 文件名稱:mail_template_zwlxhsh.st<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head><title>Untitled Document</title><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta http-equiv="content-type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="apple-mobile-web-app-capable" content="yes" /> <head/> <body><!--注釋mail_debt_name 欠款人mail_lender_name 出借人mail_debt_date 合同簽訂時間mail_notarization_cod 公證申請編號mail_contract_amont 合同金額mail_contract_deadline 合同期限mail_dept_principal 欠款本金mail_dept_endate 借款截止時間mail_dept_interest_date 欠款利息日mail_late_charge 利率mail_send_date 郵件發送日期mail_statement_date 各個貸款時間--><div style="margin-left:80px;">債務履行核實函<br /><br />mail_debt_name:<br /><p>mail_debt_date,你方與出借人mail_lender_name簽訂《借款合同》,并在我處對該合同辦理了具有強制執行效力的債權文書公證【公證書編號:mail_notarization_cod】。合同約定:借款人mail_debt_name向出借人mail_lender_name申請借款人民幣mail_contract_amont元,借款期限mail_contract_deadline。</p><p>現出借人向本處提出申請稱:其于mail_statement_date以銀行轉帳方式給付mail_debt_name借款共計mail_contract_amont元,現借款期限已到期,但是mail_debt_name未能依約還款,尚欠本金mail_dept_principal元,利息給付至mail_dept_endate。故依合同約定向公證處申請出具《執行證書》,請求確認執行標的:一、借款本金mail_dept_principal元;二、借款利息,自mail_dept_interest_date起至還款之日止,按月利率mail_late_charge%計算。</P><p>? ? 現與你方核實上述借款的還款情況,請收到此函后三個工作日內以書面形式回復、或者親自到我處向承辦公證員如實陳述履行合同的情況,并提供相關證據。若到期沒有回復或未能提供證據,則視為你方對上述債權主張無異議,我處將按上述合同約定及出借人主張的債權金額,出具執行證書。之后,出借人可以不經訴訟,直接向有管轄權的人民法院對你方申請強制執行。</p><br /><div><div style="float:right;width:400px"><div style="text-align:-webkit-center">北京市中信公證處</div><div style="text-align:-webkit-center">mail_send_date</div></div></div><br /><div>聯系人:xxx公證員  法務:xxx<br />電 ?話:010-52601155-627或641<br />地 ?址:北京市西城區金融街廣寧伯路2號鐵通大廈五層<br /><br /></div></div> </body>
?
轉載于:https://www.cnblogs.com/zwcry/p/8482887.html
總結
以上是生活随笔為你收集整理的JAVA 邮件发送工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 2793: [Poi2012]
- 下一篇: CheckStyle