0

Webアプリ内に大量のメール送信機能を実装するための最良の方法は何ですか?2つの主要なケース:

  1. アクティビティに応じて個別の登録ユーザーに電子メールメッセージを送信します(作成したトピックの新しい投稿について、ユーザーに短いリマインダーを送信するだけです)

  2. 「すべての登録ユーザーにメールを送信する」機能。システム管理者がすべての登録ユーザーにメッセージを送信する機能があると便利です。もちろん、すべての電子メールを受信者に追加することは、各ユーザーの電子メールアドレスが匿名であるため、私たちが行うことができる方法ではありません。

ケースnr1について理解しているように、System.Net.Mailを介して新しいメールメッセージを作成して送信するだけで問題はありません...しかし、ケースnr2についてはどうでしょうか。

私はこのようなsmthを推測します:

foreach(var emailAddress in emailAddresses) { 

MailMessage mail = new MailMessage();

mail.From = new MailAddress("jondoe@bla.net");

mail.To.Add(emailAddress);

mail.Subject = "test";

mail.Body = "test";

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);

smtp.Send(mail); 
}

良い方法ではありません:)それで、問題はこれを達成するための最良の方法は何ですか?

ところで、電子メール送信用のサービスを展開する可能性はありません。これはWebアプリケーションに統合する必要があります。

4

3 に答える 3

1

ケース 2 で誰に送信するかを非表示にしたい場合、受信者を MailMessage の BCC に入れられないのはなぜですか?

私がお勧めすることの 1 つは、以下のように web.config でメール設定を定義することです。

<configuration>
  <!-- Add the email settings to the <system.net> element -->
  <system.net>
    <mailSettings>
      <smtp>
        <network 
             host="relayServerHostname" 
             port="portNumber"
             userName="username"
             password="password" />
      </smtp>
    </mailSettings>
  </system.net>

  <system.web>
    ...
  </system.web>
</configuration>
于 2010-05-19T14:34:36.283 に答える
1

別のこと: gmail を使用しないでください。まず、gmail には制限があります。とにかく、外部サーバーをまったく使用しないでください。

私はそのようなことを行い、ハードディスク上のドロップディレクトリを使用してから、実際の転送を行うために MTA (実際には Windows の SMTP サービス) を使用します。

このようにして、実際の電子メールには時間がかかる可能性がありますが、(ファイル生成だけで) すばやく完了します。

于 2010-05-19T14:36:07.043 に答える
0

「emailAddresses」インスタンスに大量の電子メールを受信すると、タイムアウトの問題に直面します。送信機能を処理する小さな Windows サービス アプリを検討しているかもしれません。わたしにはできる。

于 2010-09-24T21:57:41.027 に答える