我通过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
答案 0 :(得分:2)
我找到了答案。我需要在Async="True"
代码中添加@page
:
<%@ Page Language="c#" Async="true" AutoEventWireup="false" CodeFile="TestHotmail.aspx.cs" Inherits="TestHotmail" %>
答案 1 :(得分:0)
在这个例子中.. http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx 没有 的 SmtpServer.Send(消息); 强> 之前 SmtpServer.SendAsync(message,null);
文章还提到在尝试另一次发送之前,您必须等待发送完成。
因此,当在SmtpServer.SendCompleted时将ifync包装在if中。