亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JavaMail常見問題之發送郵件問題

2019-11-18 13:15:35
字體:
來源:轉載
供稿:網友

  問. 我如何回復消息?
  答:為了回復消息,請使用 Message 對象上的 reply 方法。這個方法將返回一個新的對象,對象中的標題已經針對回復做了恰當設置。你將需要自己提供消息的內容。
  問. 我如何轉發消息?
  答:用于轉發消息的方法取決于你要怎樣表示要轉發的消息。簡單的辦法是創建一個新的 MimeMessage,并適當地為它提供地址,然后將現有的消息作為附件放在新消息中。為了將原始消息放在新消息中,比如可以使用下面的代碼:
    MimeBodyPart mbp = new MimeBodyPart();
    mbp.setContent(forwardedMsg, "message/rfc822");
    mp.addPart(mbp);
  但是假如你想創建新的消息,并在新消息中包括原始消息的文本,可能也要用 "> " 來縮進,那將需要提取原始消息主體中的數據,并進行相應的處理。你可能也想取得原始消息的其他附件,并將它們添加到新消息中。
  問. 我如何發送 Html 郵件?
  答:在分發中包括了大量演示程序,它們展示了如何發送 HTML 郵件。假如想發送簡單消息,它具有 HTML 而不是純文本,那請參見 demo(演示)目錄中的 senDHTML.java 程序。假如想將 HTML 文件作為附件發送,請參見 sendfile.java 示例,它展示了如何將任何文件作為附件發送。
  問. 我如何發送具有不同字體和顏色的格式化文本的郵件?
  答:最簡單的辦法是使用 HTML 文本發送消息。參見 上面。
  問. 我如何發送具有純文本和 HTML 文本的郵件,讓每個郵件的閱讀者可以選擇適合它的格式?
  答:你想要發送 MIME multipart/alternative 消息。你構造了這樣的一條消息,構造方式基本上與構造 multipart/mixed 消息相同,它使用了 MimeMultipart 對象,而該對象又是使用 new MimeMultipart("alternative") 來構造的。然后在 multipart(多部分)中,把 text/plain 主體部分作為第一部分插入,并且把 text/html 作為第二部分插入。參閱 RFC2046,獲取這一消息的結構的細節。
  問. 我如何發送包含圖像的 HTML 郵件?
  答:最簡單的辦法是發送帶有圖像標簽的 HTML 文本,標簽引用了公共 Web 站點。在這種方法中,在消息中并沒有真正包括圖像,因此當用戶閱讀消息時,假如沒有連接到 Internet,那將不能看到圖像。
  另外,你也可以構造 MIME multipart/related 消息。參閱 RFC2387,獲取這種消息結構的細節。
  問. Transport 方法 send 和 sendMessage 之間有什么區別?
  答:send() 方法是一個靜態方法,可以直接使用,而不需要 Transport 對象的實例。它用于常見、簡單的場合,比如使用默認傳輸發送單條消息。從內部講,send() 方法首先調用消息上的 saveChanges() 方法。然后創建合適的新 Transport 對象,調用 Transport 的 connect() 方法,調用 Transport 的 sendMessage() 方法來實際發送消息,接著調用 Transport 的 close() 方法,最后丟棄 Transport 對象的新實例,并由垃圾收集器收集(實際上,還有比那更加復雜的,但那是一般的想法)。
  如你可以看到,靜態 send() 便利 (convenience) 方法是建立在更加通用的每實例 sendMessage() 方法的基礎上的。有許多原因可以讓應用程序直接使用 sendMessage() 方法。最常見的原因是為了通過在單個連接期間發送多條消息 來提高性能,或者為了手動治理連接以提供驗證信息。當使用 sendMessage() 方法時,產生的最常見錯誤是,忘記在要發送的消息上調用 saveChanges() 方法。
  問. 我需要驗證到 SMTP 服務器,因此我調用了 trans.connect(host, user, passWord),然后調用 trans.send(msg) 發送消息,但它卻不能工作。
  答:你應該調用 msg.saveChanges(),然后調用 trans.sendMessage(msg, addrs) 來發送消息。如 上面 所描述,send 方法是一個靜態便利方法,它會獲得自己的 Transport 對象,并創建自己的連接用于發送消息;它沒有使用與某些 Transport 對象有關的連接,并且它是通過該 Transport 對象得到調用的。當然不要忘記將 mail.smtp.auth 屬性設置為 true 來啟用 SMTP 驗證!
  問. 我修改了一條消息,但標題卻沒有反映修改。
  答:在創建新消息或修改現有消息后,應該調用 saveChanges()。這將導致重新設置標題以反映變更。注重,Transport.send(Message) 方法隱式調用了這個方法。因此假如你正在做的是發送已修改的消息,就可以跳過調用 saveChanges()。saveChanges() 可能是一個昂貴的操作(非凡是對于較大或深度嵌套的消息),因此只在需要時才調用它。
  問. 我正在使用 sendMessage() 方法發送消息,但在消息中的文本前后卻出現希奇的一些行,并且我的附件也在消息體中出現。
  答:通常這些行像下面這樣:
  --928176543.952742998030.JavaMail.name@host
  像 上面 那樣,在創建新消息后,在使用 Transport.sendMessage() 方法發送消息之前,必須調用 saveChanges() 方法。靜態 Transport.send() 方法將自動調用 Message.saveChanges() 方法。
  問. 我為新消息的 Message-ID 標題設置了特定值。但當我發送這條消息時,卻重寫了那個標題。
  答:saveChanges() 將為 Message-ID 字段設置新值,重寫所設置的任何值。假如需要設置自己的 Message-ID 并保留它,就必須創建自己的 MimeMessage 子類,重寫 updateHeaders() 方法,并使用這個子類的一個實例。
  class MyMessage extends MimeMessage {
    ...
  
    PRotected void updateHeaders() throws MessagingException {
   super.updateHeaders();
   setHeader("Message-ID", "my-message-id");
    }
    ...
  }
  
  問. 當發送創建的新消息時,為什么會得到 UnsupportedDataTypeException?
  答:你可能使用 setContent(Object o, String type) 方法設置了消息的一些內容。為了讓它能工作,必須為指定“類型”注冊 JAF DataContentHandler。假如不這樣做,將獲得 UnsupportedDataTypeException。參閱 JAF 文檔,獲取進一步信息。
  問. 當發送消息時,如何能夠顯式地設置 SMTP FROM: 屬性?
  答:mail.smtp.from 屬性可用于設置 SMTP FROM: 屬性。假如沒有設置這個屬性,就使用消息的 From 屬性。假如多個線程需要同時發送郵件,并且每個線程需要設置 From 屬性,那么每個線程就必須使用自己的 session 對象,它具有自己的 Properties 對象。然后可以在每個 Session 對象的 各個 Properties 對象上獨立設置 mail.smtp.from 屬性(同樣對每個線程做這樣的設置)。
  問. 我想重復發送消息,并且每次發送給一組不同的收件人。但調用 Transport.send(Message) 卻導致每次都創建一個新的 Transport 會話。在本例中,這是一個次優辦法,我如何來解決它?
  答:創建合適的 Transport 對象的實例,然后連上它并重復調用 sendMessage() 方法,例如:
  MimeMessage msg = ...;
  // constrUCt message
  msg.saveChanges();
  Transport t = session.getTransport("smtp");
  t.connect();
  
  for (int i = 0; .....) {
    t.sendMessage(msg, new Address[] { recipients[i] });
  }
  
  t.close();
  
  問. 當試圖發送消息時,我得到了 “MessagingException: 501 HELO requires domain address”(MessagingException: 501 HELO 要求域地址)。
  答:在 SMTP HELO 命令中,SMTP 提供程序使用 InetAddress.getLocalHost().getHostName() 的結果。假如那個調用不能返回任何數據,就不會在 HELO 命令中發送任何名稱。檢查你的 JDK 和名稱服務器配置,確保那個調用返回正確數據。從 JavaMail 1.1.3 開始,你也可以設置 mail.smtp.localhost 屬性,并可以把設置為想用于 HELO 命令的名稱。
  問. 假如將消息發送到錯誤的地址,為什么我會獲得 SendFailedException 或 TransportEvent,指出地址是錯誤的?
  答:在 Internet 上沒有端到端驗證。通常要將消息轉發到幾個郵件服務器,然后才到達特定的郵件服務器,該服務器決定了它是否可以傳送消息。假如在這些后面的步驟中的某個步驟發生了錯誤,那么通常會將消息作為不可傳送返回給發件人。一個成功的“發送”只表明郵件服務器已經接受了消息,并將試著傳送它。
  問. 當消息不能被傳送時,就會返回一個失敗消息。我如何檢測這些“回彈”消息?
  答:雖然有一個 Internet 標準用于報告這樣的錯誤(multipart/report MIME 類型,參閱 RFC1892),但還沒有廣泛實現它。RFC1211 深入討論了這個問題,包括了大量的例子。
  在 Internet 電子郵件中,特定的郵箱或用戶名是否存在,只能由傳送消息的最終服務器決定。消息可能通過幾個中繼服務器(它們不能檢測錯誤),然后再到達最終服務器。通常,當最終服務器檢測到這一錯誤,它會返回一個消息給原始消息的發送人,指出失敗的原因。有許多 Internet 標準討論了這種傳送狀態通知 (Delivery Status Notifications),但大量服務器不支持這些新標準,相反使用非凡技術來返回這種錯誤消息。這使得將“回彈”消息與產生問題的原始消息相互關聯起來非常困難(注重,這個問題與 JavaMail 完全無關)。
  有許多技術和試探法用于處理這一問題,但它們都不是完美的。一種技術是 Variable Envelope Return Paths,http://cr.yp.to/proto/verp.txt 描述了這一技術。
  問. 當創建 InternetAddress 對象時,假如地址是非法的,為什么不會獲得異常?
  答:InternetAddress 類只檢查地址的語法。如 上面 所討論,InternetAddress 類不能決定地址是否做為合法地址實際存在。假如應用程序運行在防火墻背后或目前沒有連接到 Internet,那么甚至不能驗證主機名。
  問. 當試圖發送消息時,我為什

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产区亚洲区欧美区| 亚洲精品福利视频| 亚洲娇小xxxx欧美娇小| 日韩欧美一区二区三区久久| 91丝袜美腿美女视频网站| 亚洲女人初尝黑人巨大| 九九热精品视频国产| 亚洲国产日韩欧美在线动漫| 亚洲性无码av在线| 日韩性xxxx爱| 亚洲精品wwww| 亚洲激情视频网站| 亚洲性生活视频| 久久久久久国产精品| 国产精品视频成人| 78m国产成人精品视频| 欧美wwwxxxx| 国产美女被下药99| 亚洲成色777777在线观看影院| 国产精品91久久| 亚洲人线精品午夜| 精品国产鲁一鲁一区二区张丽| 91久久嫩草影院一区二区| 亚洲精品日韩av| 91在线视频九色| 国产亚洲精品久久久久久牛牛| 国产精品视频网站| 亚洲一区二区少妇| 午夜精品福利在线观看| 精品美女永久免费视频| 成人午夜在线影院| 国产精品精品久久久久久| 在线a欧美视频| 日韩美女主播视频| 国产91热爆ts人妖在线| 日韩免费高清在线观看| 久久成年人免费电影| 成人a在线视频| 日韩精品久久久久久久玫瑰园| 欧美精品www| 欧美精品免费看| 91久久精品日日躁夜夜躁国产| 精品人伦一区二区三区蜜桃网站| 国产精品久久久久久久久免费| 欧美一区深夜视频| 国产精品偷伦免费视频观看的| 第一福利永久视频精品| 亚洲精品自在久久| 亚洲大胆人体在线| 国产成人精品电影久久久| 日韩美女免费线视频| 国产精品一区二区三区成人| 精品一区二区三区电影| 久久99热这里只有精品国产| 欧美电影在线观看高清| 美女扒开尿口让男人操亚洲视频网站| 夜夜嗨av色综合久久久综合网| 欧美激情亚洲国产| 亚洲男人的天堂网站| 欧美第一淫aaasss性| 亚洲天堂av在线免费观看| 国产精品主播视频| 欧美理论电影网| 色综合老司机第九色激情| 国产欧美日韩精品在线观看| 欧美一级在线亚洲天堂| 日韩欧美精品中文字幕| 91老司机在线| 成人www视频在线观看| 日韩欧美成人区| 久热国产精品视频| 日韩美女写真福利在线观看| 久久精视频免费在线久久完整在线看| 在线免费看av不卡| 精品国产网站地址| 国产亚洲欧洲黄色| 97香蕉超级碰碰久久免费的优势| 国产香蕉97碰碰久久人人| 992tv成人免费影院| 精品国产乱码久久久久酒店| 91精品国产亚洲| 北条麻妃久久精品| 欧美高清电影在线看| 国产精品美乳在线观看| 欧美成人午夜激情视频| 久久精品一本久久99精品| 成人午夜高潮视频| 日韩高清不卡av| 久久这里有精品视频| 国产成人精品在线播放| 亚洲精品成人久久电影| 91久久国产精品| 日韩电影中文 亚洲精品乱码| 91精品国产综合久久香蕉最新版| 中文字幕在线日韩| 久久久精品在线| 日韩av在线网页| 国产精品啪视频| 日本成人免费在线| 亚洲性线免费观看视频成熟| 国产精品久久久| 久久久精品国产一区二区| 久久影院在线观看| 国产精品一区专区欧美日韩| 日韩精品极品毛片系列视频| 亚洲精品日韩丝袜精品| 一区二区三区亚洲| 欧美性理论片在线观看片免费| 久久久久久噜噜噜久久久精品| 欧美成人免费全部| 91精品久久久久久久久久另类| 日韩欧美在线免费观看| 久久久999国产精品| 国产精品96久久久久久又黄又硬| 国产成人在线视频| 九九热这里只有在线精品视| 亚洲国产天堂网精品网站| 欧美国产精品va在线观看| 欧美肥老妇视频| 97国产suv精品一区二区62| 日本精品久久久久影院| 亚洲人线精品午夜| 色午夜这里只有精品| 欧美性videos高清精品| 久久免费成人精品视频| 久久久久成人精品| 91av网站在线播放| 亚洲福利视频免费观看| 日韩精品在线私人| 亚洲另类图片色| 97超碰蝌蚪网人人做人人爽| 日本精品在线视频| 国产欧美精品日韩精品| 中文日韩电影网站| 另类美女黄大片| 91久久久久久| 中文字幕欧美精品日韩中文字幕| 亚洲国产精品人人爽夜夜爽| 国产一区二区在线免费| 不卡中文字幕av| 亚州国产精品久久久| 国产精品中文字幕久久久| 欧美最猛性xxxx| 91久久久在线| 亚洲免费精彩视频| 日韩电影免费观看在线观看| 国产97在线亚洲| 久久久国产精彩视频美女艺术照福利| 久久久久久网站| 日韩精品在线播放| 一区二区三区在线播放欧美| 国产午夜精品视频| 亚洲xxx视频| 中文字幕日韩欧美精品在线观看| 911国产网站尤物在线观看| 午夜精品三级视频福利| 中国china体内裑精亚洲片| 欧美日韩一区二区在线播放| 亚洲成人精品av| 欧美一区二区三区……| 91欧美日韩一区| 在线中文字幕日韩| 奇门遁甲1982国语版免费观看高清| 亚洲区中文字幕|