ASP.NET MVC:Отправка электронной почты с помощью SendAsync (System.Net.Mail)

StackOverflow https://stackoverflow.com/questions/931385

Вопрос

есть ли какой-нибудь способ в MVC чтобы заставить System.Net.Mail SendAsync работать вместо блокирующего метода отправки?

Я попытался использовать его, но наткнулся на ошибку "Страница, запускающая асинхронную операцию, должна иметь атрибут Async", которую я, очевидно, не могу разрешить (или могу?), потому что нет страницы ASPX с директивой @Page, куда я мог бы добавить атрибут Async.

Мы очень ценим помощь :(

Это было полезно?

Решение

Другие советы

Если вы используете сторонний сервис, такой как gmail, для отправки своей электронной почты и полагаетесь на SendEmail или SendAsync возможно, вы захотите настроить свой собственный SMTP-сервер, который затем будет ретранслироваться в gmail.Преимущество заключается в том, что SendEmail вернется намного быстрее, и вы, возможно, сможете забыть обо всей этой асинхронности.

Таким образом, если gmail отклонит вас по какой-либо причине, письмо по-прежнему будет находиться в вашей локальной очереди.

Это быстрый и грязный способ получить несколько надежную настройку отправки электронной почты.

Инструкции (лично не проверял, но я делал это много лет назад *) или смотрите это для Windows 7

* конечно, я вспомнил, что сделал это только после того, как потратил много времени на переход в асинхронный режим :-(

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

a) if youre not sending billions of emails you can have a log of what you sent
b) you can resend if something fails.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top