0

Asp .net 経由で電子メールを送信します。非同期モードで送信しようとすると、機能せず、エラーが発生しました。 Failure sending mail. ---> System.InvalidOperationException: Asynchronous operations are not allowed in this context. Page starting an asynchronous operation has to have the Async attribute set to true and an asynchronous operation can only be started on a page prior to PreRenderComplete event.

これが私のコードです:

    MailMessage message = new MailMessage();
    message.From = new MailAddress("chani.poz@gmail.com");
    message.To.Add(new MailAddress(to));
    message.Subject = subject;
    message.Body = body;

    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
    SmtpServer.Port = 587;
    SmtpServer.Credentials = new NetworkCredential(userName, pass);
    SmtpServer.EnableSsl = true;
    SmtpServer.Send(message); //sends successful
    SmtpServer.SendCompleted += SmtpServer_SendCompleted;
    SmtpServer.SendAsync(message, null); //failure sending
4

2 に答える 2

0

この例では.. http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx SmtpServer.Send(message); はありません 。 SmtpServer.SendAsync (メッセージ、null) の前;

この記事では、別の送信を試みる前に、送信が完了するまで待つ必要があるとも述べています。

したがって、SmtpServer.SendCompleted の場合は、非同期呼び出しを if でラップすることができます。

于 2013-09-16T15:51:35.130 に答える