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

2

我找到了答案。我需要添加Async="True"标签@page

<%@ Page Language="c#" Async="true" AutoEventWireup="false" CodeFile="TestHotmail.aspx.cs" Inherits="TestHotmail" %>
于 2013-09-16T16:03:14.483 回答
0

在这个例子中.. http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx 没有 SmtpServer.Send(message); SmtpServer.SendAsync(message, null) 之前;

该文章还提到,您必须等待发送完成,然后再尝试另一次发送。

因此,当 SmtpServer.SendCompleted 时,可能会将异步调用包装在 if 中。

于 2013-09-16T15:51:35.130 回答