這次的 CASE 是要送信,差別在於信中的版面是文字加上圖片。其實有很多種方式可以做到這效果,一般的作法都是在信中給予外部物件(i.e., image, flash)的連結(URI),這樣當使用者收到信的時候,就會連回該網站並顯示內嵌的物件。

不知道是哪根筋出問題,我當下想做的是,收到信的時候就直接可以完整的顯示內容,不需要每次都要連回伺服器;奈何功力太鳥,還好在網路上找到解法,所以把這次的相關資料做一個整理,給有需要的開發者參考。

Solution:SMTP + LinkedResource Class(.NET 2.0)

[Microsoft SMTP Service]

    相關的設定可參考下列的文章:
  1. Easy SMTP Mail Using ASP.NET 2.0
    這篇寫的非常清楚,包括新增 SMTP 元件,到 IIS 的細部權限設定,都配合詳盡的文字與圖,相信基本設定應該沒有問題。
  2. SendMail 101 - How to send e-mails over SMTP (C# and ASP.NET)

[SMTP 可能發生的錯誤]
  1. 伺服器回應為: 5.7.1 Unable to relay for xxx@xxx

[Simple Mail Transfer Protocol]
郵件編碼的部分,是這次遇到問題才去找資料,實在也不是很確切的可以寫完整。所以附上所找到的資訊,做一個整理。

  1. Simple Mail Transfer Protocol
    相關的編碼格式在 Wiki 裡面都有。
  2. E-MAIL 編碼‧霧裏看花
  3. 解读邮件原文(二)--邮件编码介绍

[Add embedded objects - LinkedResource Class - .NET 2.0]
MSDN:這是 .NET 2.0 之後新增的類別,用於表示電子郵件附件中的內嵌外部資源,例如 HTML 附件中的影像。細部寫法請參閱下列文章。

  1. Using LinkedResource Class for Sending HTML E-mail in .NET 2.0
  2. Embed image in Email
  3. Adding Embedded Objects in Email

小結:這樣的作法雖可以內嵌外部資源,但相對的也會增加 Mail Size,且有些收信系統並不支援這種 MIME 的編碼格式,所以會出現無法顯示該郵件的情形,目前測試用 Gmail 與 Outlook Express 都支援,但是例如 Mail2000 或是 Horde 在我測試的現行版本中無法正確的將信件解碼與顯示內嵌的外部資源。

0 comments: