工具類-發送郵件(通過JavaMail發送)
阿新 • • 發佈:2018-04-29
final string SM ttr nal support ket 實體 nts
前段時間在工作中用到了郵件發送監控的報警信息,今天在這個記錄一下JavaMail的郵件工具類。
下邊為用到的JavaMail的jar包的pom依賴。這裏用的是JavaMail的1.4.6的版本。
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.6</version> </dependency>
這裏是工具類中的用到的郵件的一些參數對象的實體類。
packagecom.juihai.entity; import java.util.Arrays; public class EmailTO { private String title;//郵件主題 private String content;//郵件內容 private String sender;//發件人賬號 private String password;//發件人密碼 private String host;//發件郵箱服務器 private String[] toAdress;//收件人地址 public String getTitle() {return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getSender() { return sender; }public void setSender(String sender) { this.sender = sender; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String[] getToAdress() { return toAdress; } public void setToAdress(String[] toAdress) { this.toAdress = toAdress; } @Override public String toString() { return "EmailTO [title=" + title + ", content=" + content + ", sender=" + sender + ", password=" + password + ", host=" + host + ", toAdress=" + Arrays.toString(toAdress) + "]"; } }
這裏是就是發送Email的工具類。具體說明件代碼中的註釋。
import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.apache.log4j.Logger; import com.juihai.entity.EmailTO; public class SendEmailUtils { /** 日誌輸出 */ private static Logger log = Logger.getLogger(SendEmailUtils.class); public static boolean send(EmailTO to) throws GeneralSecurityException{ final String user = to.getSender(); final String password = to.getPassword(); log.info("SendEmailUtils >>>> Start Send Mail"); Properties properties = System.getProperties();// 獲取系統屬性 properties.setProperty("mail.smtp.host", to.getHost());// 設置郵件服務器 "smtp.163.com",這是發件人的郵箱服務器 properties.put("mail.smtp.auth", "true"); String senderNick = null;
//部分郵箱服務器需要開啟SSL驗證才可以發送郵件,需要的話,開啟註釋即可 /*MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL驗證 begin sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf);// SSL驗證 end*/ Session session = Session.getDefaultInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); // 發件人郵件用戶名、密碼 } }); try { MimeMessage message = new MimeMessage(session);// 創建默認的 MimeMessage對象 senderNick = javax.mail.internet.MimeUtility.encodeText("Juihai");//設置發件人昵稱 message.setFrom(new InternetAddress(senderNick+"<"+user+">")); //message.addRecipient(Message.RecipientType.TO,new InternetAddress());//創建單個收件人 String[] tos = to.getToAdress();//創建多個收件人 if (tos != null && tos.length != 0) { InternetAddress[] toAddress = new InternetAddress[tos.length]; for (int i = 0; i < tos.length; i++) { toAddress[i] = new InternetAddress(tos[i]); } message.setRecipients(Message.RecipientType.TO, toAddress); } message.setSubject(to.getTitle());//設置郵件主題 //message.setText(content);//發送純文本內容 message.setContent(to.getContent(), "text/html;charset=utf-8");//發送html郵件內容 Transport.send(message);//發送Email log.info(" SendEmailUtils郵件發送成功"); return true; }catch (MessagingException mex) { mex.printStackTrace(); log.info(" >>>>SendEmailUtils郵件發送失敗"+mex); } catch (UnsupportedEncodingException e) { log.info(" >>>>SendEmailUtils郵件發送失敗-設置發件人昵稱error"+e); e.printStackTrace(); } return false; } }
工具類-發送郵件(通過JavaMail發送)