特定のクラスを使用して電子メールを非同期で送信します。元のクラスhereが見つかります。C#で非同期でメールを送信した後、すべてのメールを受信しなかったのはなぜですか?
public class Email
{
public bool SendEmail(MailMessage message)
{
try
{
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
...
smtpClient.Send(message);
}
catch (Exception ex)
{
ErrorLogger.SaveLog(ex);
}
return true;
}
public delegate bool SendEmailDelegate(MailMessage message);
public void GetResultsOnCallback(IAsyncResult ar)
{
SendEmailDelegate del = (SendEmailDelegate)((AsyncResult)ar).AsyncDelegate;
try
{
bool result = del.EndInvoke(ar);
}
catch (Exception ex)
{
ErrorLogger.SaveLog(ex);
}
}
public void SendEmailAsync(MailMessage message)
{
try
{
SendEmailDelegate dc = new SendEmailDelegate(this.SendEmail);
AsyncCallback cb = new AsyncCallback(this.GetResultsOnCallback);
IAsyncResult ar = dc.BeginInvoke(message, cb, null);
}
catch (Exception ex)
{
ErrorLogger.SaveLog(ex);
}
}
}
をしかし、私は96通の電子メールを送信しようとすると、ASP.NET MVC 2で開発された私のウェブサイト上で、それらのほんの数は、受信されています
このクラスは、電子メールを送信するために、デリゲート関数を使用しています。私の最初のテストでは、私は52の電子メールを受信し、2番目の57の電子メールで受信しました。
私は、送信メールは
public static class EmailSender
{
private static void SendEmail(MailMessage mail)
{
Email sender = new Email();
sender.SendEmailAsync(mail);
}
public static void SendRevival(UserViewModel user){
...
SendEmail(mailMessage);
}
}
をオブジェクトと、私はこのようにそれを使用呼び出すために、この静的クラスを持っている:
foreach(UserViewModel user in users){
EmailSender.SendRevival(user);
}
エラーがアプリケーションからもサーバーからでもない、ありません。
何が起こったのか知っていますか?
Thx。
メールサーバーから送受信されるHTTPトラフィックを確認しましたか? – scottheckel
あなたのメールサーバがスパムのようなものを扱っていないことを確認しましたか、またはあなたがリクエストをサーバに "流し込んでいる"ために拒否しましたか? –
Webサーバーインスタンスをすべて送信するのに十分な長さのままにしておきますか?プロセスを終了すると、単に送信を停止します。 –