Как лучше всего отправлять письма со страницы asp.net? - PullRequest
2 голосов
/ 12 марта 2009

Как лучше всего отправить электронное письмо со страницы asp.net?

Я не имею в виду код для фактической отправки сообщения, я имею в виду, например, в моем приложении, ссылка потерянного пароля отправляет электронное письмо пользователю при нажатии кнопки, но если серверу SMTP требуется 10 секунд чтобы отправить сообщение, пользователь будет ждать загрузки страницы в течение 10 секунд.

Что бы вы предложили, чтобы избежать этого?

спасибо!

Ответы [ 5 ]

1 голос
/ 12 марта 2009

asynch send не будет работать в рабочем потоке asp.net (попробуйте - он генерирует исключение), поэтому либо создайте вторичный поток, отправьте электронное письмо во всплывающем окне или просто дайте пользователю подождать.

и действительно ли это занимает 10 секунд? я никогда не видел, чтобы это заняло более 1 ...

0 голосов
/ 12 марта 2009

Создайте базу данных для всех исходящих писем и обработайте ее в другом потоке.

0 голосов
/ 12 марта 2009

Вызовите отправку электронной почты через Ajax-вызов веб-службе. В качестве альтернативы вы можете использовать метод асинхронной отправки в классе SmtpClient

0 голосов
/ 12 марта 2009

Очень часто обрабатывать электронную почту и другие долго выполняющиеся процессы в отдельном потоке или процессе. Это довольно легко настроить с помощью системы очереди сообщений или обычного фонового процесса типа пакета.

Сказав это, я думаю, вы также должны рассмотреть асинхронные методы, отмеченные ckramer.

Другой вариант - иметь локальный SMTP-сервер.

0 голосов
/ 12 марта 2009

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

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

Таким образом, вы отменили синхронизацию отправки электронной почты.

Общая информация о создании фоновых процессов:

http://www.codeproject.com/KB/cs/tsnewlib.aspx

http://forums.asp.net/t/1134253.aspx

...