0

ERP アプリケーションに要件があります (アプリケーションは、c# と sql server 2005 を使用して asp.net4.0 で開発されています)。

クライアントから注文を受け取るたびに、一意のシリアル番号で注文を登録します(シリアル番号は自動的に生成されるプライマリキーです)。基本的に、注文がシリアル番号で登録されたことを示す電子メールを送信したいと思います:XXXXXX。

これに対する最善の解決策は何かわかりますか????

データベースまたはアプリケーションを介して電子メールを送信する必要がありますか?

私を助けてください !!!

4

5 に答える 5

1

ScottGu には、これに関する優れた記事があります。少し古いですが、彼の言い分は次のとおりです。

.NET 2.0 には、System.Net.Mail コード名前空間内に、より豊富な電子メール 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 は、SMTP 構成データを標準の .NET 構成システムから読み取ります (したがって、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>
于 2012-04-11T20:11:46.710 に答える
1

sp_send_db_mailC# アプリケーションで「SMTP」クラスのいずれかのフォームをインスタンス化することは絶対に避けてください。理由は複数ありますが、主に次のとおりです。

  • メールがトランザクション的に配信されるようにする必要があります。呼び出しはsp_send_db_mail、シリアル番号を登録したのと同じ DB トランザクションに配置する必要があります。登録がロールバックされると、メールは送信されません。
  • メールが確実に配信されるようにする必要があります。送信 SMTP エンドポイントへの接続に失敗した場合は、再試行ロジックが必要です。呼び出しの背後にあるDatabase Mailsp_send_db_mailはこれを保証し、トラブルシューティングの目的で追跡とログを提供します (配信できなかった電子メールとその理由)。
  • HTTP リクエストが完了した後、SMTP を非同期的に呼び出す必要があります。ページ処理が SMTP 発信リレーからの応答でアイドル状態になっているため、ページの読み込みが応答しなくなることは望ましくありません。sp_send_db_mail実際のメール配信はトランザクションの完了に行われ、C# クライアントは一切関与しません。
于 2012-04-11T21:03:16.320 に答える
0

C# を使用して間違いなくメールを送信できます。これを行う方法に関する非常に包括的な記事は次のとおりです。

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

基本的に私がしていることは、自分の環境用に設計されたセットアップ カスタムを使用して電子メールを送信することを非常に簡単にするラッパー関数を作成することです。たとえば、新しいシリアル番号を受け取り、それに基づいてすべての情報を検索するメソッドを作成できます。次に、新しい値を渡すだけで、自動フォーマットされた電子メールが顧客に送信されます。

于 2012-04-11T20:06:55.973 に答える
0

間違いなく両方を実行できます (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);
于 2012-04-11T20:09:57.683 に答える
0

最小限の労力で電子メール通知を送信したい場合は、データベース メール (構成してください) と sp_send_mail を使用します。可能なクエリ結果を添付ファイルとして簡単なテキスト メッセージを送信できます。

会社のロゴ イメージを含むリッチ HTML が必要な場合は、.NET Windows サービスをビルドします (または ConsoleApp とスケジュールを設定します)。MVC ロジック、テンプレート、および Razor エンジンを使用して HTML メッセージを作成するには、Actionmailer.NET スタンドアロンを使用することをお勧めします。Actionmailer.NET Standalone を使用すると、IIS を使用せずに使用できます。参照: http://geeksharp.com/2011/07/06/actionmailer-0-6-released/

于 2012-04-13T01:10:13.647 に答える