Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SendMailAsync从未返回,仍发送邮件_C#_Asp.net_Email_Asp.net Core - Fatal编程技术网

C# SendMailAsync从未返回,仍发送邮件

C# SendMailAsync从未返回,仍发送邮件,c#,asp.net,email,asp.net-core,C#,Asp.net,Email,Asp.net Core,我通过C#的SmtpClient.SendMailAsync发送邮件,但我遇到了一些非常奇怪的行为 当我打电话到SendMailAsync时,电子邮件会被发送-我每次都会收到它。然而,我的应用程序从未返回。它似乎挂在wait上,我不知道它为什么不回来。如果我切换到使用Send,邮件会立即发送,当然,一切都会按照我的预期完成 这是我实际发送电子邮件的来源 public async Task SendEmailAsync(string toAddress, string subject, strin

我通过C#的
SmtpClient.SendMailAsync
发送邮件,但我遇到了一些非常奇怪的行为

当我打电话到
SendMailAsync
时,电子邮件会被发送-我每次都会收到它。然而,我的应用程序从未返回。它似乎挂在
wait
上,我不知道它为什么不回来。如果我切换到使用
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发送这些电子邮件。无论我寄到哪个地址,同样的问题也会发生。我的链在整个调用堆栈中都是异步的。我运行的是OSX,ASP.NET Core 1。

这似乎是一个bug-根据评论中与Federico Dipuma的讨论,可能是OSX上的Kestrel。解决方法是不异步发送邮件


除非能发现更多信息,否则将此标记为答案。

外部
sendmailasync
方法名为哪里?@FedericoDipuma如果您指的是
sendmailasync
的调用方方法,则它是一个名为
async Task CreateAndAssign(…)的异步MVC控制器操作
。您提到您正在OSX上运行该应用程序,您能否隔离该问题,并验证它是否在Windows计算机中也会出现?@FedericoDipuma是的,让我让运行Windows的其他团队成员中的一位来尝试一下。我会让你知道的。顺便说一句,如果我不等待client.SendMailAsync,而是让任务返回,事情似乎会正常完成。不知道这是否有什么区别。我会发布一个更新,只要我有一个从我的同事。谢谢。如果您使用的是
Kestrel
服务器,这可能与您的奇怪行为有关。您可以尝试将
ConfigureAwait(false)
添加到对
client.SendMailAsync(mailMessage)
的调用中,并查看发生了什么。您好,先生,很抱歉恢复了此线程。但我也有同样的问题。当我运行我的程序是localhost时,它工作正常,但当我托管我的网站时,邮件正在发送,但SendMailAsync永远不会返回。我刚接触这种东西,希望你能帮我,先生,先谢谢你。这是我的控制器: