老妖的博客
          現實的中沒有幾個人能夠真為對方去死,甚至山盟海誓很快就會在金錢面前變的微不足道,這才是生活。沒有永遠的愛,除了你的父母對你,當然也就沒有永遠的恨,更沒有永遠的痛,時間是最好的治療大師,它會很快撫平你心靈上累累的傷痕。很多年以后你想起來時,那些在你生命中洶涌來往的人群至多是個模糊的影子或者毫無意義的名字
          posts - 105,  comments - 171,  trackbacks - 0

          使用javamail發送html郵件比較復雜

           

           1 package org.tatan.mail;
           2 
           3 import javax.mail.internet.InternetAddress;
           4 import javax.mail.internet.MimeMessage;
           5 import javax.mail.internet.MimeUtility;
           6 import javax.mail.Session;
           7 import javax.mail.MessagingException;
           8 import javax.mail.Transport;
           9 
          10 public class SendHtmlMail {
          11     public static void sendMessage(String smtpHost,
          12                                    String from, String to,
          13                                    String subject, String messageText)
          14             throws MessagingException,java.io.UnsupportedEncodingException {
          15 
          16         // Step 1:  Configure the mail session
          17         System.out.println("Configuring mail session for: " + smtpHost);
          18         java.util.Properties props = new java.util.Properties();
          19         props.setProperty("mail.smtp.auth""true");//指定是否需要SMTP驗證
          20         props.setProperty("mail.smtp.host", smtpHost);//指定SMTP服務器
          21         props.put("mail.transport.protocol""smtp");
          22         Session mailSession = Session.getDefaultInstance(props);
          23         mailSession.setDebug(true);//是否在控制臺顯示debug信息
          24 
          25         // Step 2:  Construct the message
          26         System.out.println("Constructing message -  from=" + from + "  to=" + to);
          27         InternetAddress fromAddress = new InternetAddress(from);
          28         InternetAddress toAddress = new InternetAddress(to);
          29 
          30         MimeMessage testMessage = new MimeMessage(mailSession);
          31         testMessage.setFrom(fromAddress);
          32         testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
          33         testMessage.setSentDate(new java.util.Date());
          34         testMessage.setSubject(MimeUtility.encodeText(subject,"gb2312","B"));
          35 
          36         testMessage.setContent(messageText, "text/html;charset=gb2312");
          37         System.out.println("Message constructed");
          38 
          39         // Step 3:  Now send the message
          40         Transport transport = mailSession.getTransport("smtp");
          41         transport.connect(smtpHost, "webmaster""password");
          42         transport.sendMessage(testMessage, testMessage.getAllRecipients());
          43         transport.close();
          44 
          45 
          46         System.out.println("Message sent!");
          47     }
          48 
          49     public static void main(String[] args) {
          50 
          51         String smtpHost = "localhost";
          52         String from = "webmaster@mymail.com";
          53         String to = "mfc42d@sohu.com";
          54         String subject = "html郵件測試"//subject javamail自動轉碼
          55 
          56         StringBuffer theMessage = new StringBuffer();
          57         theMessage.append("<h2><font color=red>這倒霉孩子</font></h2>");
          58         theMessage.append("<hr>");
          59         theMessage.append("<i>年年失望年年望</i>");
          60 
          61         try {
          62             SendHtmlMail.sendMessage(smtpHost, from, to, subject, theMessage.toString());
          63         }
          64         catch (javax.mail.MessagingException exc) {
          65             exc.printStackTrace();
          66         }
          67         catch (java.io.UnsupportedEncodingException exc) {
          68             exc.printStackTrace();
          69         }
          70     }
          71 }
          72 


          郵件頭(參見RFC822,RFC2047)只能包含US-ASCII字符。
          郵件頭中任何包含非US-ASCII字符的部分必須進行編碼,使其只包含US-ASCII字符。
          但是java mail可以根據JVM發送中文郵件自行編碼,,用它自帶的MimeUtility類的encodeText方法對中文信息進行編碼也可以。
          郵件正文必須有charset=gb2312否則為
          Content-Type: text/html; charset=us-ascii
          Content-Transfer-Encoding: 7bit
          打開郵件為亂碼,設置charset=gb2312后
          Content-Type: text/html;charset=gb2312
          Content-Transfer-Encoding: quoted-printable
          它不能用MimeUtility里的方法來編碼。
          郵件正文的編碼方式的信息是要放在Content-Transfer-Encoding這個郵件頭參數中的,
          而MimeUtility里面的方法是將編碼方式的信息放在編碼后的正文內容中。
          所以如果你對正文也用MimeUtility進行處理,那么其他郵件程序就不會正常顯示你編碼的郵件,
          因為其他郵件軟件如outlook,foxmail只會根據Content-Transfer-Encoding這個里面的信息來對郵件正文進行解碼。

          posted on 2005-11-03 19:36 老妖 閱讀(2595) 評論(2)  編輯  收藏

          FeedBack:
          # re: 使用javamail發送html郵件--摘自邢紅瑞的blog[未登錄]
          2013-05-24 10:54 | 123
          123  回復  更多評論
            
          # re: 使用javamail發送html郵件--摘自邢紅瑞的blog[未登錄]
          2013-05-24 10:54 | 456
          456  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2005年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          隨筆分類(48)

          隨筆檔案(104)

          好友鏈接

          我的豆瓣

          積分與排名

          • 積分 - 221198
          • 排名 - 257

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 宿迁市| 桦南县| 平武县| 津南区| 鄯善县| 庐江县| 金阳县| 湟源县| 弥渡县| 台北县| 平塘县| 渑池县| 呼和浩特市| 濮阳市| 兴隆县| 靖西县| 五华县| 乌审旗| 亚东县| 获嘉县| 定兴县| 阳春市| 新晃| 鸡西市| 昭觉县| 宜兰市| 虞城县| 晋宁县| 息烽县| 吉林市| 平和县| 仪陇县| 武胜县| 哈密市| 遂宁市| 荣昌县| 莆田市| 固镇县| 新河县| 大理市| 桐庐县|