Потоки при отправке писем - PullRequest
4 голосов
/ 25 сентября 2008

У меня есть простая функция, которая отправляет электронные письма. Как мне использовать потоки для ускорения доставки электронной почты?

Пример кода будет идеальным.

Ответы [ 8 ]

8 голосов
/ 25 сентября 2008

Использовать SendAsync isntead.

3 голосов
/ 25 сентября 2008

Проверьте следующую ссылку для демонстрации метода sendAsync. [MSDN]

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

2 голосов
/ 30 января 2013

В 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);
    }
}
2 голосов
/ 25 сентября 2008

Вы можете запустить функцию в другом потоке. Будучи SendMail вашей функцией отправки почты, вы можете:

ThreadPool.QueueUserWorkItem(delegate { SendMail(message); });
1 голос
/ 25 сентября 2008

Когда вы отправляете электронные письма, используя несколько потоков, будьте осторожны, чтобы ваш провайдер идентифицировал вас как спам. Будет лучше выбрать меньшие партии с некоторой задержкой между каждой партией.

1 голос
/ 25 сентября 2008

Наличие отдельной ветки не ускорит доставку электронной почты. Все, что он сделает, это вернет управление обратно вызывающему методу быстрее. Поэтому, если вам не нужно это делать, я бы даже не стал беспокоиться об этом.

1 голос
/ 25 сентября 2008

Создайте свой класс с помощью метода static 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

0 голосов
/ 25 сентября 2008

Вы знаете, что было бы лучше и проще создать приложение и отправлять электронные письма каждые 30 минут. Добавьте информацию в базу данных, которую нужно отправить туда и обратно, создайте пул приложений, который запускается каждые 30 минут. Когда он запускается, вы можете отправить электронное письмо. Не нужно ждать, пока ваш обработчик событий отправит электронное письмо ...

Это работает для нас. Просто подумал, что это поможет тебе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...