SMTP发送邮件已取消

杰拉德

尝试发送邮件,但是任务被取消。知道为什么吗?

public static Task SendAsync(this SmtpClient client, MailMessage message)
{
    TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
    Guid sendGuid = Guid.NewGuid();

    SendCompletedEventHandler handler = null;
    handler = (o, ea) =>
    {
        if (ea.UserState is Guid && ((Guid)ea.UserState) == sendGuid)
        {
            client.SendCompleted -= handler;
            if (ea.Cancelled)
            {
                tcs.SetCanceled(); // TASK CANCELLED: Why?
            }
            else if (ea.Error != null)
            {
                tcs.SetException(ea.Error);
            }
            else
            {
                tcs.SetResult(null);
            }
        }
    };

    client.SendCompleted += handler;
    client.SendAsync(message, sendGuid);
    return tcs.Task;
}

致电者:

using( SmtpClient smtpClient = new SmtpClient() )
{
    return smtpClient.SendAsync(msg);
}

在此先感谢您的帮助!杰拉德

尤瓦尔·伊茨恰科夫(Yuval Itzchakov)

完成执行块时,一条using语句将调用一个objectsDispose方法。smtpClient.SendAsync不使用awaitasync方法的情况下进行调用将导致执行块结束并被Dispose调用SmtpClient,即使该SendAsync方法仍在执行中,这也解释了为什么有些邮件会完成,有些邮件可能会在处理对象之前完成,而另一些则不会

做这个:

using (SmtpClient smtpClient = new SmtpClient())
{
    await smtpClient.SendAsync(msg);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SMTP发送邮件已取消

来自分类Dev

Woocommerce不发送已取消订单的电子邮件

来自分类Dev

Python smtp(Postfix MTA)邮件:收件人打开已发送邮件时收到通知

来自分类Dev

在yii中发送smtp邮件

来自分类Dev

使用smtp SendAsync发送邮件

来自分类Dev

Rails ActionMailer将电子邮件复制到已发送的文件夹SMTP ruby

来自分类Dev

Net :: SMTP :: SSL(通过gmail和Amazon smtp)-发送带有附件的电子邮件时“连接已关闭”

来自分类Dev

发送smtp gmail电子邮件``失败发送邮件''

来自分类Dev

在Dart中发送SMTP电子邮件

来自分类Dev

使用phpmailer smtp发送邮件的最快方法?

来自分类Dev

在日本ISP上通过SMTP发送邮件

来自分类Dev

Ruby通过gmail smtp发送邮件

来自分类Dev

MailKit SMTP发送邮件时变慢

来自分类Dev

如何从本地主机发送SMTP邮件

来自分类Dev

配置CakePhp以使用SMTP发送邮件

来自分类Dev

从SMTP服务器发送邮件

来自分类Dev

使用Indy和smtp发送邮件

来自分类Dev

发送邮件时php SMTP connect()失败

来自分类Dev

使用swiftMailer SMTP和Debian发送邮件

来自分类Dev

动态配置SMTP在yii中发送邮件

来自分类Dev

如何从Smtp客户端发送邮件?

来自分类Dev

配置SMTP服务器发送邮件

来自分类Dev

使用 Gmail SMTP 发送邮件失败

来自分类Dev

未发送 Gsuite SMTP 电子邮件

来自分类Dev

从邮箱发送邮件不会保存在已发送邮件中

来自分类Dev

从邮箱发送邮件不会保存在已发送邮件中

来自分类Dev

跟踪是否已阅读已发送的邮件

来自分类Dev

如何撤回已发送的电子邮件?

来自分类Dev

在Thunderbird上跟踪已发送的邮件