WebService SMTP邮件发送功能

来源:互联网 发布:海马苹果助手for mac 编辑:程序博客网 时间:2024/05/29 17:06

本文介紹用如何 C# 實現 SMTP 發送郵件的功能

 

一、功能與規劃:

程序分為3個部分:

1. WebService: 提供用戶 WebService 接口調用, 檢查用戶參數,返回錯誤提示,將參數存儲到數據庫.

2. 數據庫, 存儲需要發送的郵件數據(包含收件人、主旨、郵件內容、發送時間等), 與發送log

3. 后臺發送郵件程序,并設置 windows 排程1分鐘執行一次,

    后臺發送郵件程序, 每天發送一次日報表給管理員, 將1天內的發送錯誤數通知管理員, 以便了解有無異常并分析原因

 

 

 

實現思路:

1. 排程: 數據庫提供2個欄位 SendTimeString [字符串] 和 SendTime [日期型]

    判斷 SendTimeString 的內容:

    0 : 馬上發送, 在 SendTime 欄位寫入當前時間

    1 : 后面接一個指定的時間, 表示在該時間發送

    2 : 后面接 D數值/H數值/M數據,分別表示在當前時間的基礎上延時n天/n小時/n分鐘后發送

    3 : 后面接分鐘數, 如: 30 表示在下一個半小時,如果當前時間為 08:40, 那發送時間為 9:30, 如果當前時間為 8:10,則發送時間為 8:30

 

2. 附件:WebService 接收 3 個參數 attString / attName / attDate, 分別表示文件內容字符串,文件名字符串,文件日期字符串(建立時間/修改時間/存取時間)

    如果用戶需要發送附件,則需要把等發送的文件轉換為 16 進制的字符串, 比如文件內容 0123456789,

    用16進制字符串表達為 30313233343536373839 

    WebService 接收到附件后將文件存儲在 webservice 所在的服務器上, 排程發送郵件時,再添加附件發送。

  

3. 日志記錄:

    記錄每次 webservice 調用事件、后臺排程的執行結果、發送每封郵件的結果到數據庫,以便追溯

 

4. WebService 權限驗證

    調用 WebService 時驗證用戶提供的用戶名和密碼及綁定的 IP 地址是否與數據庫中預先設定的數據相匹配,只有驗證通過才允許發送郵件。

 

二、實現步驟:

1. 建表

1) USERS 表: 用來存放用戶名、密碼及IP地址

2) TASK 表: 用來存放 WebService 接收到的任務列表

3) TASK_DETAIL 表: 用來關聯 TASK 表的 TASK ID,存放對應的每一位收件人是否發送成功

4) RUN_LOG 表: 每一次執行后臺程式產生一條記錄,存放發送成功的 TASK ID 列表及是否發生錯誤。

5) DEY_REPORT 表: 每天用 SMTP 發送報表的內容(檢查 RUN_LOG表是否出現錯誤)給SMTP管理員

6) CONFIG 表: 存放系統數據 (比如:系統管理員郵箱、SMTP 服務器地址、等等)

 

2.開發 WebService

代碼省略.

 

 

3.開發后臺 windows 應用程序

代碼省略

 

其它說明:

1. 調用 WEBSERVICE 時需要將文件轉換為 16進制字符串

2. 調用 WEBSERVICE 時可以把附件的建立時間/修改時間/存取時間通過字符串傳給 Webservice, 保存附件時設置附件的時間,

   但是,使用SMTP時發送附件給 Lotus Notes 服務器后, 使用 Lotus Notes 下載附件時,附件的建立時間變成了當前時間,

   所以,這個問題還沒有好的解決方法。

0 0
原创粉丝点击