1. 程式人生 > >JavaMail---郵件發送

JavaMail---郵件發送

ops charset name DC 文件 由於 提醒 spa cti

jar包依賴:技術分享圖片

 1 /**
 2  * 通過SMTP進行郵件集成
 3  */
 4 public class CmpSendMail {
 5     // 郵件發送服務器主機
 6     private final static String HOST = "url";
 7 
 8     // 郵件發送協議
 9     private final static String PROTOCOL = "smtp";
10 
11     // 是否需要身份認證
12     private final static String IS_AUTH = "true";
13 
14     // 發件人
15
private static String from = "[email protected]"; 16 17 /** 18 * 初始化連接右鍵服務器會話信息 19 */ 20 private static Properties props = null; 21 static { 22 props = new Properties(); 23 props.setProperty("mail.transport.protocol", PROTOCOL); 24 props.setProperty("mail.smtp.host", HOST);
25 props.setProperty("mail.smtp.auth", IS_AUTH); 26 } 27 28 /** 29 * 向服務器提交認證信息 30 */ 31 static class MyAuthenticator extends Authenticator { 32 private String username = "40545"; 33 34 private String password = "11111"; 35 36 public MyAuthenticator() {
37 super(); 38 } 39 40 public MyAuthenticator(String username, String password) { 41 super(); 42 this.username = username; 43 this.password = password; 44 } 45 46 public PasswordAuthentication getPasswordAuthentication() { 47 return new PasswordAuthentication(username, password); 48 } 49 } 50 51 /** 52 * cmp郵件集成 53 * 54 * @param address 55 */ 56 public static void sendCmpEmail(InternetAddress[] address, String theme, 57 String content) throws Exception { 58 59 // 獲得郵件session實力對象 60 Session session = Session.getInstance(props, new MyAuthenticator()); 61 62 // 創建MimeMessage實例對象 63 MimeMessage msg = new MimeMessage(session); 64 65 // 設置發件人 66 msg.setFrom(new InternetAddress(from)); 67 68 // 設置收件人 69 msg.setRecipients(RecipientType.TO, address); 70 71 // 設置發送信息 72 msg.setSentDate(new Date()); 73 74 // 設置郵件主題 75 msg.setSubject(theme + "[系統提醒]"); 76 77 StringBuffer con = new StringBuffer(); 78 con.append("<a style=‘text-decoration: none;‘ href=‘" 79 + content.toString() + "‘>查看詳情</a></p>"); 80 81 // 設置郵件文本內容 82 msg.setContent(con, "text/html;charset=UTF-8"); 83 84 // 保存並生成最終的郵件內容 85 msg.saveChanges(); 86 87 // 發送郵件 88 Transport.send(msg); 89 } 90 91 }

javaMail常用對象:

(1) javax.mail.Properties類
  JavaMail需要Properties來創建一個session對象。它將尋找字符串"mail.smtp.host",屬性值就是發送郵件的主機.
用法:
  Properties props = new Properties (); //Properties props = System.getProperties();
   props.put("mail.smtp.host", "smtp.163.com");//可以換上你的smtp主機名。
(2) javax.mail.Session類
  這個Session類代表JavaMail 中的一個郵件session. 每一個基於 JavaMail的應用程序至少有一個session但是可以有任意多的session。 在這個例子中, Session對象需要知道用來處理郵件的SMTP 服務器。
用法:
   Session sendMailSession = Session.getInstance(props, null); //不須認證
(3) javax.mail.Transport類
  郵件是既可以被發送也可以被受到。JavaMail使用了兩個不同的類來完成這兩個功能:Transport 和Store. Transport 是用來發送信息的,而Store用來收郵件。在這發送郵件我們只需要用到Transport對象。
用法:
Transport transport = sendMailSession.getTransport("smtp");
  用JavaMail Session對象的getTransport 方法來初始化Transport。傳過去的字符串申明了對象所要使用的協議,如"smtp"。這將為我們省了很多時間。因為JavaMail以經內置了很多協議的實現方法。
 註意: JavaMail並不是絕對支持每一個協議,目前支持IMAP、 SMTP和 POP3.
(4) javax.mail.MimeMessage類
  Message對象將存儲我們實際發送的電子郵件信息,Message對象被作為一個MimeMessage對象來創建並且需要知道應當選擇哪一個JavaMail session。
  用法:
Message newMessage = new MimeMessage(sendMailSession);
(5) javax.mail.InternetAddress類
一旦您創建了 Session 和 Message,並將內容填入消息後,就可以用Address確定信件地址了。和 Message 一樣,Address 也是個抽象類。您用的是Javax.mail.internet.InternetAddress 類.
用法:
InternetAddress from=new InternetAddress("[email protected]"); //收件人郵箱地址
(6) javax.mail.Store類
Store類實現特定郵件協議上的讀、寫、監視、查找等操作。通過Javax.mail.Store類可以訪問Javax.mail.Folder類。
用法:
Store store=s.getSorte("pop3"); //s為一個郵件會話
store.connect(popserver,username,password);//通過你提供的popserver地址(郵箱服務器),用戶名和密碼登錄你的郵箱
(7) javax.mail.Folder類
Folder類用於分級組織郵件,並提供照Javax.mail.Message格式訪問email的能力。
用法:
Folder folder=store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
(8) javax.mail.Internet.MimeMultipart
一般保存電子郵件內容的容器是Multipart抽象類,它定義了增加和刪除及獲得電子郵件不同部分內容的方法.由於Multipart是抽象類,我們必須為它使用一個具體的子類,JavaMail API提供javax.mail.Internet.MimeMultpart類來使用MimeMessage對象.
用法:
MimeMultipart multipart=new MimeMultipart();
註:我們使用MimeMultipart對象的一個方法是addBodyPart(),它在我們的電子郵件內容裏添加BodyPart(BodyPart類在下面緊接著要介紹)對象.消息可以有很多部分,一個BodyPart可以代表一個部分.
(9) javax.mail.Internet.MimeBodyPart類
MimeBodyPart是BodyPart具體用於mimeMessage的一個子類.
MimeBodyPart對象代表一個MimeMessage對象內容的一部分.每個MimeBodyPart被認為有兩部分:
⊙一個MIME類型
⊙匹配這個類型的內容
用法:
MimeBodyPart mdp=new MimeBodyPart();
String text="Hello JavaMail!";
//定義MIME類型為text/plain,並設置MimeBodyPart的內容.
mdp.setContent(text,"text/plain");
(10) javax.activation.DataHandler類(包含在JAF中)
JavaMail API不限制信息只為文本,任何形式的信息都可能作繭自縛MimeMessage的一部分.除了文本信息,作為文件附件包含在電子郵件信息的一部分是很普遍的.JavaMail API通過使用DataHandler對象,提供一個允許我們包含非文本BodyPart對象的簡便方法.
用法:
DataHandler dh=new DataHandler(text,type);
mdp.setDatahandler(dh); //mdp是一個MimeBodyPart對象
(11) javax.activation.FileDataSource類(包含在JAF中)
一個FileDataSource對象可以表示本地文件和服務器可以直接訪問的資源.一個本地文件可以通過創建一個新的MimeBodyPart對象附在一個mimeMessage對象上.
用法:
MimeMultipart mm=new MimeMultipart();
MimeBodyPart mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource("c:/exam.txt");
mdp.setDataHandler(new DataHandler(fds)); //設置數據源
mm.addBodyPart(mdp); //為當前消息MimeMultipart對象增加MimeBodyPart
(12) javax.activation.URLDataSource類(包含在JAF中)
遠程資源,URL不會指向它們,由一個URLDataSource對象表示.一個遠程資源可以通過創建一個新mimeBodyPart對象附在一個mimeMessage對象上(同FileDataSource差不多).

相關學習javamail博客鏈接:

java發送郵件帶url、html

JavaMail使用SMTP協議發送電子郵件(詳解)

JavaMail---郵件發送