C# 发送电子邮件时线程
我有一个发送电子邮件的简单功能,我如何使用线程来加快电子邮件的发送C# 发送电子邮件时线程,c#,multithreading,email,C#,Multithreading,Email,我有一个发送电子邮件的简单功能,我如何使用线程来加快电子邮件的发送 示例代码非常理想。使用SendAsync isntead。使用静态void方法创建类,该方法将使类开始在单独的线程上执行您希望执行的操作,如下所示: using System; using System.Threading; class Test { static void Main() { Thread newThread = new Thread(new ThreadStart(Work
示例代码非常理想。使用SendAsync isntead。使用静态void方法创建类,该方法将使类开始在单独的线程上执行您希望执行的操作,如下所示:
using System;
using System.Threading;
class Test
{
static void Main()
{
Thread newThread = new Thread(new ThreadStart(Work.DoWork));
newThread.Start();
}
}
class Work
{
Work() {}
public static void DoWork() {}
}
如果不想自己管理线程,另一种选择是使用ThreadPool类
更多关于线程的信息-
更多关于线程池的信息-但是,使用单独的线程不会加快电子邮件的发送速度。它所能做的就是更快地将控制返回到调用方法。因此,除非您需要这样做,否则我甚至不会为此费心。您知道,创建一个应用程序后端并每30分钟发送一次电子邮件会更好、更简单。将信息放入需要发送到的数据库中,然后创建一个每30分钟启动一次的应用程序池。当它启动时,您可以发送电子邮件。无需等待事件处理程序发送电子邮件
它对我们有用。我想这会对您有所帮助。查看下面的链接,了解sendAsync方法的演示。[MSDN]
您可以在另一个线程中运行该函数。使用“向您的邮件发件人发送邮件”功能,您可以:
ThreadPool.QueueUserWorkItem(delegate { SendMail(message); });
当您使用多线程发送电子邮件时,请小心被isp识别为垃圾邮件。最好选择较小的批次,每个批次之间有一定的延迟。在4.0中,您可以使用以下选项:
new Thread(x => SendMail(message)).Start();
及
您仍然只能发送1个异步。每个Smtp客户端一次发送一封电子邮件(如果还有另一个正在进行中,则不会让您调用)。因此,当从一个客户端发送大量电子邮件时,此路由没有多大帮助。如果你说然后使用多个客户端,那么async实际上只会加快创建客户端的速度,并告诉它们发送。。。更好的选择:创建线程,为每个线程创建一个客户端,并使用常规Send()。至少在我的测试中,线程是更快的选择,当然它也取决于硬件。。。“调用SendAsync后,您必须等待电子邮件传输完成,然后才能尝试使用send或SendAsync发送另一封电子邮件。”是否有完整源代码的最终解决方案?如果要发送多封电子邮件,您不希望让用户等待太长时间。Le函数是poop。。。调用SendAsync后,您必须等待电子邮件传输完成,然后才能尝试使用send或SendAsync发送另一封电子邮件
public static void SendEmail(MailMessage message)
{
using (SmtpClient client = new SmtpClient("smtp.XXXXXX.com"))
{
client.Send(message);
}
}