发送电子邮件时的线程

时间:2008-09-25 13:23:31

标签: c# multithreading email

我有一个发送电子邮件的简单功能,我将如何使用线程来加速电子邮件传送?

示例代码是理想的。

8 个答案:

答案 0 :(得分:8)

使用SendAsync isntead。

答案 1 :(得分:3)

有关sendAsync方法的演示,请查看以下链接。 [MSDN]

http://msdn.microsoft.com/en-ca/library/x5x13z6h(VS.80).aspx

答案 2 :(得分:2)

您可以在另一个线程中运行该函数。通过SendMail发送邮件发件人功能,您可以:

ThreadPool.QueueUserWorkItem(delegate { SendMail(message); });

答案 3 :(得分:2)

IN 4.0,您可以使用以下内容,

new Thread(x => SendMail(message)).Start();

public static void SendEmail(MailMessage message)
{
    using (SmtpClient client = new SmtpClient("smtp.XXXXXX.com"))
    {
        client.Send(message);
    }
}

答案 4 :(得分:1)

使用静态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类。

有关主题的更多信息 - http://msdn.microsoft.com/en-us/library/xx3ezzs2.aspx

有关ThreadPool的更多信息 - http://msdn.microsoft.com/en-us/library/3dasc8as(VS.80).aspx

答案 5 :(得分:1)

拥有单独的主题不会加快电子邮件的传递速度。它所要做的就是更快地将控制权返回给调用方法。因此,除非你需要这样做,否则我甚至不愿意这样做。

答案 6 :(得分:1)

当您使用多个线程发送电子邮件时,请注意由您的isp识别为垃圾邮件。最好选择较小的批次,每批次之间有一些延迟。

答案 7 :(得分:-1)

您知道创建应用程序后端并每30分钟发送一次电子邮件会更好,更容易。将信息丢弃到需要发送到该数据库的数据库中,创建一个每30分钟启动一次的应用程序池。启动时,您可以发送电子邮件。无需等待您的事件处理程序发送电子邮件...

它对我们有用。只是觉得这会对你有所帮助。