[英].Net smtp SendMailAsync function returns IsCanceled
我對SendMailAsync
例程有疑問。 在ContinueWith()
方法中,我使用的是SendMailContinuation()
方法,其中task.IsCanceled
始終為真。
.Net 版本 4.6.1
private void SendEMail()
{
try
{
using (SmtpClient smtpClient = new SmtpClient(EmailServerAddress))
{
_logger.Info("Sending Email to: {0} ", recipient);
MailAddress from = new MailAddress(EmailAddress, EmailAddress, Encoding.UTF8),
to = new MailAddress(recipient, recipient, Encoding.UTF8);
using (MailMessage message = new MailMessage(from, to))
{
message.SubjectEncoding = Encoding.UTF8;
message.Priority = MailPriority.High;
message.Body = "";
message.BodyEncoding = Encoding.UTF8;
smtpClient.Credentials = new NetworkCredential(UserName, UserPassword);
smtpClient.SendMailAsync(message)
.ContinueWith(SendMailContinuation);
}
}
catch (Exception ex)
{
_logger.Error(ex);
}
}
private void SendMailContinuation(Task task)
{
if (task.IsFaulted)
{
_logger.Error(task.Exception);
}
else if (task.IsCanceled)
{
_logger.Warn(task.Status);
}
}
您應該等待 smtpClient.SendMailAsync() function。 您可以通過將 function 'SendEMail()' 設為異步任務並在 smtpClient.SendMailAsync() 調用之前添加 await 來做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.