javaMail发送邮件实例
生活随笔
收集整理的這篇文章主要介紹了
javaMail发送邮件实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
背景:最近項目里有個實時發(fā)送郵件的功能,今天閑下來整理 一下,記錄下來方便以后直接使用。
代碼:
1 package com.dzf.utils; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.text.SimpleDateFormat; 7 import java.util.ArrayList; 8 import java.util.Date; 9 import java.util.List; 10 import java.util.Properties; 11 12 import javax.activation.DataHandler; 13 import javax.activation.FileDataSource; 14 import javax.mail.Message; 15 import javax.mail.Session; 16 import javax.mail.Transport; 17 import javax.mail.internet.InternetAddress; 18 import javax.mail.internet.MimeBodyPart; 19 import javax.mail.internet.MimeMessage; 20 import javax.mail.internet.MimeMultipart; 21 22 import org.slf4j.Logger; 23 import org.slf4j.LoggerFactory; 24 25 /** 26 * 郵件發(fā)送工具類 27 * @author xxx 28 * @date 2018年1月22日 29 * @time 22:43:40 30 */ 31 public class SendEmailUtil implements Runnable { 32 private static Logger log = LoggerFactory.getLogger(SendEmailUtil.class); 33 private static Properties prop = new Properties(); 34 private List<String> toEmilList = new ArrayList<String>();//用于指定收件人的郵箱 35 private List<String> ccEmilList = new ArrayList<String>();//用于抄送的收件人的郵箱 36 public List<String> getCcEmilList() { 37 return ccEmilList; 38 } 39 public void setCcEmilList(List<String> ccEmilList) { 40 this.ccEmilList = ccEmilList; 41 } 42 public SendEmailUtil(List<String> toEmilList, List<String> ccEmilList) { 43 super(); 44 this.toEmilList = toEmilList; 45 this.ccEmilList = ccEmilList; 46 } 47 public List<String> getToEmilList() { 48 return toEmilList; 49 } 50 public void setToEmilList(List<String> emilList) { 51 this.toEmilList = emilList; 52 } 53 public SendEmailUtil(List<String> emilList) { 54 super(); 55 this.toEmilList = emilList; 56 } 57 58 public SendEmailUtil() { 59 super(); 60 } 61 static{ 62 InputStream in = SendEmailUtil.class.getClassLoader().getResourceAsStream("emil_config.properties"); 63 try { 64 prop.load(in); 65 } catch (IOException e) { 66 e.printStackTrace(); 67 log.error("讀取配置失敗,異常信息{}",e.toString()); 68 throw new RuntimeException("讀取郵件配置文件失敗"); 69 } 70 } 71 @Override 72 public void run() { 73 try { 74 log.info("郵件創(chuàng)建開始了。。。。"); 75 //1.創(chuàng)建session 76 Session session = Session.getInstance(prop); 77 //2.開啟session的debug模式,可以查看出email發(fā)送的情況 78 session.setDebug(true); 79 //3.連接發(fā)件服務器 80 Transport trans = session.getTransport(); 81 trans.connect(prop.getProperty("mail.host"),prop.getProperty("mail.name"), prop.getProperty("mail.password")); 82 //4.創(chuàng)建郵件 83 Message message = createMessageMail(session); 84 //發(fā)送郵件 85 trans.sendMessage(message, message.getAllRecipients()); 86 trans.close(); 87 } catch (Exception e) { 88 log.error("創(chuàng)建郵件發(fā)生異常:異常為{}",e.toString()); 89 e.printStackTrace(); 90 } 91 } 92 /** 93 * 組裝郵件 94 * @param session 95 */ 96 private Message createMessageMail(Session session)throws Exception { 97 //創(chuàng)建郵件對象 98 MimeMessage mimeMessage = new MimeMessage(session); 99 //設(shè)置郵件的基本信息 100 //發(fā)件人 101 mimeMessage.setFrom(new InternetAddress(prop.getProperty("mail.from"))); 102 //收件人 103 InternetAddress[] addressTo = new InternetAddress[toEmilList.size()]; 104 for(int i =0 ;i<toEmilList.size();i++){ 105 addressTo[i]=new InternetAddress(toEmilList.get(i)); 106 } 107 //抄送人 108 InternetAddress[] addressCc = new InternetAddress[ccEmilList.size()]; 109 for(int i =0 ;i<ccEmilList.size();i++){ 110 addressCc[i]=new InternetAddress(ccEmilList.get(i)); 111 } 112 mimeMessage.setRecipients(Message.RecipientType.TO, addressTo); 113 if(ccEmilList.size()>0){ 114 mimeMessage.setRecipients(Message.RecipientType.CC, addressCc); 115 } 116 //郵件標題 117 mimeMessage.setSubject("私人定制-系統(tǒng)通知"); 118 119 //郵件正文 120 MimeBodyPart bodyPart = new MimeBodyPart(); 121 SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 122 Date date = new Date(); 123 String str = simple.format(date); 124 bodyPart.setContent("親愛得用戶:<br/> <p>你好,你與"+str+"登錄私人定制,如果不是本人登錄,你的密碼可能已經(jīng)泄露!請立即前往官網(wǎng)修改密碼。如果是你非別人登錄,請你忽略此消息!謝謝!</p>","text/html;charset=utf-8"); 125 //TODO添加附件,圖片之類 126 MimeBodyPart attach = new MimeBodyPart(); 127 File file = new File("e:/generatorConfig.xml"); 128 DataHandler dh= new DataHandler(new FileDataSource(file)); 129 attach.setDataHandler(dh); 130 131 //描述數(shù)據(jù)關(guān)系 132 MimeMultipart multipart = new MimeMultipart(); 133 multipart.addBodyPart(bodyPart); 134 multipart.addBodyPart(attach); 135 mimeMessage.setContent(multipart); 136 mimeMessage.saveChanges(); 137 return mimeMessage; 138 } 139 public static void main(String[] args) { 140 List<String> toEmilList = new ArrayList<String>(); 141 toEmilList.add("xxxx23319@qq.com"); 142 toEmilList.add("xxxx39686@qq.com"); 143 List<String> ccEmilList = new ArrayList<String>(); 144 ccEmilList.add("xxxx79285@qq.com"); 145 SendEmailUtil email = new SendEmailUtil(toEmilList, ccEmilList); 146 new Thread(email).start();//啟動一個線程 147 } 148 }配置文件 emil_config.properties
1 mail.host=smtp.163.com 2 mail.transport.protocol=smtp 3 mail.smtp.auth=true 4 mail.name=xxxxxx@163.com 5 #shouquanma 6 mail.password=xxxxxxx 7 mail.from=xxxxxx@163.com有關(guān)郵件發(fā)送遇到的問題我的另一篇隨筆里有寫? 傳送門:http://www.cnblogs.com/zfding/p/8324784.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/zfding/p/8324978.html
總結(jié)
以上是生活随笔為你收集整理的javaMail发送邮件实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言指针操作(一)指针变量
- 下一篇: 暗影精灵2pro安装win10+ubun