Как лучше всего отправлять большие пакеты электронных писем в ASP.NET?
-
09-06-2019 - |
Вопрос
В настоящее время я просматриваю устройство чтения данных и вызываю метод Send() System.Net.Mail.SmtpClient.Проблема в том, что это медленно.Отправка каждого письма занимает около 5-10 секунд (возможно, это проблема моего хостера).Мне пришлось переопределить значение по умолчанию для выполненияTimeout в моем файле web.config (по умолчанию оно составляет 90 секунд) следующим образом:
<httpRuntime executionTimeout="3000" />
Одно предостережение:Я использую общий хост, поэтому не думаю, что смогу отправить сообщение с помощью параметра PickupDirectoryFromIis (по крайней мере, при его включении у меня выдавались ошибки).
Решение
Вы можете отправлять почту асинхронно.Таким образом, тайм-аут не должен прерывать вашу отправку.
Эта статья должна помочь вам начать работу с этим: Асинхронная отправка электронных писем в C#.
Здесь есть другой подход: http://www.vikramlakhotia.com/Sending_Email_asynchronous_in_AspNet_20.aspx
И, конечно же, существует несколько коммерческих клиентов, но единственный, который я попробовал и могу порекомендовать, — это http://www.aspnetemail.com/
Другие советы
Обязательно создайте его в фоновом рабочем процессе, чтобы они работали асинхронно.
Кстати, 5-10 секунд на одно электронное письмо кажутся мне слишком медленными.На моем сервере обработка одного письма занимает доли секунды.