長年の読者、初めての質問者。
110人のBCC受信者にメールを送信するとタイムアウトになります。
ウェブサイトから、自分が運営しているウェブサイトを運営しているクラブのメンバーに1通のメールメッセージを送信しようとしています。自分を送信者と受信者として追加すると、メンバーのメールアドレスがBCCリストに追加されます。会員数は約110名です。送信者のユーザー名とパスワードを使用してサーバーに対して認証します。
MailMessageは問題なく準備できますが、SmtpClient.Send()を呼び出すと、しきい値が10分であってもタイムアウトになります。受信者の数が少ない場合でも、Send()メソッドには時間がかかります(5〜7分)が、正常に完了します。これは、添付ファイルがなくても、メッセージまたは添付ファイルのサイズに関係なく発生します。
私のメールサーバー(ホストされているWebサーバー上)は、スパム/ブラックリストなどの外部システムまたは各受信者のメールサーバーに対して、各受信者の電子メールアドレスを何らかの形でチェックしていると思います。
私のホスティング会社は困惑しています、彼らはそれがすべて大丈夫だと盲目的に誓います。
メールサーバーにこれを行わないように指示するように設定できるStmpClientまたはMailMessageのメンバーを知っていますか?または、おそらく(さらに良い)Parallels HSPhere電子メールサーバーでこのアクションを停止するように設定しますか?
よろしくお願いします。
サンプルコード
bool SendEmail(string[] emailAddresses)
{
MailMessage message = new MailMessage();
SmtpClient smtp = new SmtpClient("mail.myServer.org");
message.From = new MailAddress("website@myServer.org", "Display name");
message.To.Add("website@myServer.org");
foreach (string recipient in emailAddresses)
{
// ABout 110 recipients
message.Bcc.Add(recipient);
}
message.Subject = "Whatever";
message.ReplyTo = new MailAddress("myOtherEmailAddress@external.com");
smtp.Credentials = new NetworkCredential(message.From.Address, "whatever");
try
{
message.Body = "A few hundred bytes";
smtp.Timeout = 300000; // 10 mins
smtp.Send(message);
}
catch (Exception ex)
{
// Report here
}
return true;
}