我尝试在我的应用中使用SmtpClient.SendAsync
发送电子邮件,但我收到了例外情况。以下是我发送电子邮件的相关代码:
//preparing message data
....
....
SmtpClient client = new SmtpClient(_smtpServer);
client.Timeout = TIMEOUT;
//client.Send(message); //this works well.
object userState = message;
client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
client.SendAsync(message, userState);
回调:
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
//Get the Original MailMessage object
MailMessage mail = (MailMessage)e.UserState;
//write out the subject
string subject = mail.Subject;
if (e.Cancelled)
{
Console.WriteLine("Send canceled for mail with subject [{0}].", subject);
}
if (e.Error != null)
{
Console.WriteLine("Error {1} occurred when sending mail [{0}] ", subject, e.Error.ToString());
}
else
{
Console.WriteLine("Message [{0}] sent.", subject);
}
}
例外是:
此时无法启动异步操作。异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动。如果在执行页面时发生此异常,请确保将页面标记为<%@ Page Async = \" true \" %取代。此异常还可能表示尝试调用\" async void \"方法,在ASP.NET请求处理中通常不受支持。相反,异步方法应该返回一个Task,调用者应该等待它。"} System.Exception {System.InvalidOperationException}`。
我在网上看到我需要<%@ Page Async =" true"%>在我的.aspx文件中。但我的应用程序是混合角度移动应用程序这意味着我获得了桌面版的.aspx,移动版的.html。所以我不确定我应该把它放在哪里?