簡體   English   中英

使用sql server 2005在c#dotnet中自動發送電子郵件通知

[英]Auto email notifications in c# dotnet using sql server 2005

我在ERP應用程序中有一個要求,(應用程序是使用c#和sql server 2005在asp.net4.0中開發的)

當我們從客戶收到訂單時,我們使用唯一的序列號注冊訂單(序列號是自動生成的主鍵)現在我們想要發送一個通知,基本上是一封電子郵件,說明您的訂單已經注冊了序列號:XXXXXX。

我能知道什么是最好的解決方案嗎????

我是否必須通過數據庫或應用程序發送電子郵件。

請幫我 !!!

ScottGu有一篇很棒的文章 它有點舊了,但這就是他所說的:

.NET 2.0在System.Net.Mail代碼命名空間中包含更豐富的Email API支持。 我已經看到人們想知道如何開始使用它的一些問題。 以下是一個簡單的片段,介紹如何從“sender@foo.bar.com”向多個電子郵件收件人發送電子郵件(請注意,To a CC屬性是集合,因此可以處理多個地址目標):

 MailMessage message = new MailMessage(); message.From = new MailAddress("sender@foo.bar.com"); message.To.Add(new MailAddress("recipient1@foo.bar.com")); message.To.Add(new MailAddress("recipient2@foo.bar.com")); message.To.Add(new MailAddress("recipient3@foo.bar.com")); message.CC.Add(new MailAddress("carboncopy@foo.bar.com")); message.Subject = "This is my subject"; message.Body = "This is the content"; SmtpClient client = new SmtpClient(); client.Send(message); 

System.Net.Mail從標准.NET配置系統中讀取SMTP配置數據(因此,對於ASP.NET應用程序,您可以在應用程序的web.config文件中對其進行配置)。 以下是如何配置它的示例:

  <system.net> <mailSettings> <smtp from="test@foo.com"> <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" /> </smtp> </mailSettings> </system.net> 

您應該使用sp_send_db_mail並且絕對不要嘗試在C#應用程序中實例化“SMTP”類的一種或另一種形式。 原因很多,但主要是:

  • 您需要確保以事務方式傳遞郵件:對sp_send_db_mail的調用必須放在注冊序列號的同一個DB事務中。 如果注冊回滾,則永遠不會發送郵件。
  • 您需要確保郵件可靠地傳遞:如果嘗試聯系您的傳出SMTP端點失敗,則必須有重試邏輯。 數據庫郵件 (它位於sp_send_db_mail調用之后)可以確保這一點,還可以提供跟蹤和日志記錄以進行故障排除(無法傳遞哪些電子郵件以及原因)。
  • 在HTTP請求完成后,您需要異步調用SMTP。 您不希望頁面加載無響應,因為頁面處理響應來自SMTP傳出中繼的響應。 sp_send_db_mail確保這一點,實際的郵件傳遞發生您的事務完成后,並且不以任何方式涉及C#客戶端。

你絕對可以使用C#發送電子郵件。 這是關於如何做到這一點的全面文章:

http://www.emailarchitect.net/easendmail/kb/csharp.aspx

基本上我所做的是創建一個包裝器函數,使用為我的環境設計的自定義設置發送電子郵件變得非常簡單。 例如,您可以創建一個接受新序列號的方法,並根據該方法查找所有信息。 然后,您可以傳遞新值並將自動格式化的電子郵件發送給客戶。

你絕對可以做到這兩點(只要SQL是2005+)

看到這個討論:

SQL調用CLR例程

從您的應用程序中發送郵件非常簡單:

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("luckyperson@online.microsoft.com");
message.Subject = "This is the Subject line";
message.From = new System.Net.Mail.MailAddress("From@online.microsoft.com");
message.Body = "This is the message body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("yoursmtphost");
smtp.Send(message);

如果要以最小的努力發送電子郵件通知,請使用數據庫郵件(配置它!)和sp_send_mail。 您將能夠發送包含可能的查詢結果的簡單文本消息作為附件。

如果您需要使用公司徽標圖像構建.NET Windows服務(或ConsoleApp並安排它)的豐富HTML。 我建議您使用Actionmailer.NET Standalone使用MVC邏輯,模板和Razor引擎構建HTML消息。 使用Actionmailer.NET Standalone,您可以在不使用IIS的情況下使用它。 見: http//geeksharp.com/2011/07/06/actionmailer-0-6-released/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM