# WebService (三)SMTP邮件发送功能
本文介紹用如何?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 下載附件時,附件的建立時間變成了當前時間, ?? 所以,這個問題還沒有好的解決方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Vim中,为什么我不能将键重新映射到`w`?
- scala – Akka,SQS和Camel的消费者民意调查
- spray.io如何使用scala 2.11.1 akka 2.3.2
- 《数据结构》实验1.3:VC编程环境灵活应用
- WebService CXF学习(高级篇1):整合Spring框架
- vim – gccsense vs. clang_complete
- twitter-bootstrap – 如何让我的Twitter引导按钮右对齐?
- angular – 如何防止PWA在新的Safari窗口中打开链接和Auth0
- unix – 查找返回绝对路径的命令
- 使用 MEAN 进行全栈开发基础篇——4、接着前面玩儿添加