日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows Azure Cloud Service (27) 在Windows Azure发送邮件(上)

發布時間:2025/10/17 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows Azure Cloud Service (27) 在Windows Azure发送邮件(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  《Windows Azure Platform 系列文章目錄》

?

  許多Web應用都具有發送郵件通知的功能,不管是作為用戶注冊流程的一部分,還是通知用戶一系列重要事件的發生。如果您是一個.NET的開發人員,你可能使用System.Web.Mail這個命名空間來完成該功能。然而,這些類需要訪問一個SMTP電子郵件服務器發送消息,Windows Azure目前并不能提供這樣的功能。我將會寫量部分系列文章,介紹一些設計模式,使得部署到Windows Azure平臺的應用可以使用電子郵件的功能。

  1.使用用戶部署在內部局域網上的郵件轉發服務器(Email Forward Service),這種模式將在本章中做詳細介紹。利用局域網內部的郵件服務器,替代Windows Azure公有云上的應用程序發送電子郵件。這種方式通過創建一個使用分布式異步模式的自定義服務,使用Windows Azure Storage Queues和Blob來實現。

  2.使用電子郵件服務器的Web Service API。這種模式將在下一部分中介紹:使用由Microsoft Exchange Web Services API提供直接從Windows Azure發送電子郵件。這種模式可以應用到其他的通訊產品,提供了一個相似的Web服務接口。

  3.使用第三方的SMTP服務。這種模式將在第三部分介紹,利用像SendGrid或者AuthSMTP第三方電郵服務中繼電子郵件。同時我們也會介紹如何從Windows Azure應用程序接收電子郵件,利用25端口監聽SMTP流量。

?

使用用戶部署在內部局域網上的郵件轉發服務器

這種模式利用您現有的內部郵件服務器,替代Windows Azure公有云上的應用程序發送電子郵件。這種模式通過創建一個自定義的郵件轉發服務器,使用Windows Azure Storage和Blob來實現。該模式分為兩個主要部分:

  1.準備和發送電子郵件的工作:由Windows Azure Web Role和Worker Role來實現,生成郵件的工作。它序列化郵件對象,然后在Windows Azure Storage中創建一個電子郵件的工作項目。

  2.接收和發送電子郵件的工作:由一個郵件轉發服務來實現。從Windows Azure Storage中獲得電子郵件的工作項目,反序列化電子郵件對象,并把該對象發送到郵件服務器。

對于從Windows Azure到內部局域網的分布式郵件服務器,我們將定義一個"工作項目"的概念。工作項目是一個邏輯容器組成:

  1.一個Queue(隊列)項目:這個隊列項目保存了,存儲在Blob中的郵件信息的引用(通過URL)。它也可以容納多達8K的元數據。

  2.一個Blob項目:這個Blob項目包含了序列化后的郵件對象。因為Blob的存儲上限高達1TB,電子郵件對象可以包含多個大數據量的附件。

下圖展示了該模式的工作流:

當一個在Windows Aure中托管的應用程序需要發送電子郵件時,會發生如下情況:

  1.Worker / Web Role 生成一封電子郵件。這個郵件信息生成一個System.Net.Mail.MailMessage的實例。這個郵件對象可以包含任意數量的附件。

  2.電子郵件的對象被序列化,并存儲到Blob中。Blob的URL被添加到Queue項目。Queue項目和Blob項目組合,成為了電子郵件的工作項目。您可以使用Queue和Blob項目的元數據存儲額外的信息。

  3.在內部局域網里,電子郵件轉發服務器不斷的監視郵件隊列。隊列項目可以一次被檢索32項。郵件轉發服務器首先檢索隊列,然后提取Blob URL和檢索序列化的電子郵件。

  4.一旦反序列化結束,郵件轉發服務器使用局域網的郵件服務器信息,發送電子郵件。當發送電子郵件結束后,它會從Queue和Blob Storage中刪除該工作項。

  5.局域網內的郵件服務器接收郵件。因為這是一個內部的應用程序,身份驗證和授權應該非常直接。

  6.郵件服務器發送電子郵件到相應的用戶。

?

為了更好的說明該模式,一個簡單的郵件轉發服務器和Windows Azure應用的工程文件可供下載。該代碼示例包含以下項目:

  • 郵件轉發服務:實現了局域網內的郵件轉發服務。為了簡單的演示,我們實現了一個Windows Form應用。然而在實際部署中,最好在Windows Service中實現該功能。為了測試這個示例服務,請編輯app.config文件,包含SMTP服務器的配置。
  • 實體:類庫中包含了郵件信息序列化功能,和從Windows Azure Storage中添加、刪除電子郵件的操作。郵件轉發服務和Web / Worke Role都使用此項目。
  • 生成電子郵件的Web Role:實現了一個簡單的Web Role,可以發送電子郵件。該Role提供了一個Web用戶界面,可以讓您輸入想要發送的電子郵件的細節。
  • 生成電子郵件的Worker Role:實現一個簡單的Worker Role,可以發送電子郵件。Worker Role每10秒鐘生成和發送郵件信息,具體可以參考該Role下的app.config文件。

?

建構思考:

對于任何解決方案來說,了解架構是非常重要的。在自定義的郵件轉發服務器中,我們需要考慮一些問題包含:

  • 成本:對于局域網內的服務來說,存儲在Blobs、Queues和數據流中的數據會對整個解決方案增加額外的費用??偝杀居擅恳粋€單獨的解決方案中的郵件數量來決定,必須在實現該模式之前進行考慮。使用壓縮是可取的,以減少序列化的電子郵件對象的大小。為了盡量減少帶寬成本,使用Blobs和Queue的Windows Azure Storage賬戶必須和發送郵件的Worker Role/ Web Role 在同一個數據中心里。
  • 性能:性能主要有兩點需要考慮:

    1.序列化那些包含巨大附件的郵件對象,可能會帶來一些性能的影響。因為這些內容需要被序列化,保存到Storage里,然后被局域網內的郵件轉發服務器檢索和反序列化。

    2.考慮到這種模式異步的特性,電子郵件轉發服務器定期檢查Windows Azure Storag Queue。這產生了郵件發送到郵件服務器的邊際演示(marginal delay)。這個必須仔細研究,并對不同的需求進行設置。

  • 管理:必須監測服務。我們建議增加記錄和實施監控。
  • 可靠性:應該實施采取適當的重試機制(retry mechanisms),包括指數回退(exponential back-off),讓電子郵件轉發服務器提高可靠性。

?

參考資料:

http://msdn.microsoft.com/zh-tw/windowsazure/gg486877.aspx

?

http://blogs.msdn.com/b/windowsazure/archive/2010/10/08/adoption-program-insights-sending-emails-from-windows-azure-part-1-of-2.aspx

轉載于:https://www.cnblogs.com/threestone/archive/2012/06/24/2560448.html

總結

以上是生活随笔為你收集整理的Windows Azure Cloud Service (27) 在Windows Azure发送邮件(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。