SendMailAsync永远不会返回,仍会发送邮件

时间:2016-05-13 13:24:43

标签: c# asp.net email asp.net-core

我通过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。

1 个答案:

答案 0 :(得分:0)

看起来这是一个错误 - 可能是因为与Federico Dipuma在评论中的讨论,OSX上的Kestrel。解决方法是不以异步方式发送邮件。

将此标记为答案,除非可以发现更多信息。