gpt4 book ai didi

C# 使用 System.Threading 发送 SMTP

转载 作者:太空狗 更新时间:2023-10-29 20:54:54 24 4
gpt4 key购买 nike

我开发了一个主要使用 SMTP 发送电子邮件的应用程序。一条一条地发送消息是可以的,但是我希望加快这个过程。我已经创建了 SmtpClient 的多个实例以及消息以避免彼此之间的冲突。由于存在不同的实例,我假设在多个线程上执行 .Send() 会很好。但是,仅使用我的 Thread 代码是行不通的,因为我无法使用此代码在一个线程上发送一封电子邮件。我只是收到一个模糊的 “发送邮件失败” 异常。我将发布有效的代码,以及无效的 Thread。有人可以分享他们认为可能是什么原因吗?

注意 我目前不打算使用较新的 async 功能,而是利用 Thread

工作声明和方法调用:

var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};

using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})

{
SMTP.Send(message);
}

不工作的线程声明和方法调用:

var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};

using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})

{
Thread T1 = new Thread(delegate() { SMTP.Send(message); } );
T1.Start();
}

最佳答案

已解决:

var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};

Thread T1 = new Thread(delegate()
{
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
{
SMTP.Send(message);
}
}
});

T1.Start();

关于C# 使用 System.Threading 发送 SMTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com