我在这里只是想在" INBOX"中下载电子邮件。从使用IMAP和ComponentPro .net组件(Asynchronous Task-Based Approach)的服务器,但每当我尝试异步方法时它都会抛出错误。
我已经使用带有同步方法的IMAP下载了Inbox电子邮件,但这需要将近3-4分钟才能下载至少80多封电子邮件,所以我想尝试使用异步方法对此进行任何建议,因为我是第一次尝试异步方法
错误:
此时无法启动异步操作。异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动。
控制器代码:
public ActionResult ImportEmailDemo()
{
var sImportedEmails = ARepository.ImportEmailForDemo();
return null;
}
存储库代码:
public async Task<string> ImportEmailForDemo()
{
//Async
// Create a new instance of the Imap class.
Imap client1 = new Imap();
// Connect to the server.
client1.Connect("Server Address");
// Or you can specify the IMAP port with
// client.Connect("myserver", 143);
// Login to the server.
client1.Authenticate("EmailID", "Password");
// Select 'INBOX' mailbox.
client1.Select("INBOX");
// Download a mail message with sequence number 1.
ComponentPro.Net.Mail.MailMessage msg = await client1.DownloadMailMessageAsync(1);
// ...
Console.WriteLine("Message downloaded successfully.");
Console.WriteLine("Message ID: {0}, Subject: {1}", msg.MessageIdentifier, msg.Subject);
// Disconnect.
client1.Disconnect();
return null;
}
我尝试了不同的方法来解决互联网上的错误,但没有任何方法可以帮助我,任何人都可以帮助我。 干杯!!
答案 0 :(得分:2)
我已经使用带有同步方法的IMAP下载了Inbox电子邮件,但这需要将近3-4分钟才能下载至少80多封电子邮件,所以我想尝试异步方法
异步不会更快。
此时无法启动异步操作。
当您的代码在同步处理程序中启动异步操作时,会发生此错误。您应该不使用Wait
或Result
;相反,您需要await
返回的任务,它会生成该方法async
等,直到您的处理程序更改为异步。
但如上所述,使用async
无论如何都不会让它更快。