我通过C#SmtpClient.SendMailAsync
发送邮件,但我的行为非常奇怪。
当我拨打SendMailAsync
电话时发送电子邮件 - 我每次都会收到。但是,我的申请永远不会回来。它似乎挂在了await
上,而且我没有真正了解它为什么不返回。如果我切换到使用Send
,邮件立即发送,当然,一切都完成了我的预期。
以下是我实际发送电子邮件的来源。
public async Task SendEmailAsync(string toAddress, string subject, string message)
{
using (var client = new SmtpClient(configuration["Email:Host"], Convert.ToInt32(configuration["Email:Port"])))
using (var mailMessage = new MailMessage(configuration["Email:FromAddress"], toAddress, subject, message))
{
client.Credentials = new NetworkCredential(configuration["Email:Username"], configuration["Email:Password"]);
client.EnableSsl = true;
mailMessage.IsBodyHtml = true;
try
{
await client.SendMailAsync(mailMessage);
}
catch (SmtpException)
{
throw;
}
}
}
其他一些可能有用或可能没有帮助的信息是我通过AWS SES发送这些电子邮件。无论我发送什么地址,都会出现同样的问题。我的链是Async,一直到调用堆栈。我正在运行OSX,ASP.NET Core 1。
答案 0 :(得分:0)
看起来这是一个错误 - 可能是因为与Federico Dipuma在评论中的讨论,OSX上的Kestrel。解决方法是不以异步方式发送邮件。
将此标记为答案,除非可以发现更多信息。