ASP.NET MVC:Отправка электронной почты с помощью SendAsync (System.Net.Mail)
-
06-09-2019 - |
Вопрос
есть ли какой-нибудь способ в MVC чтобы заставить System.Net.Mail SendAsync работать вместо блокирующего метода отправки?
Я попытался использовать его, но наткнулся на ошибку "Страница, запускающая асинхронную операцию, должна иметь атрибут Async", которую я, очевидно, не могу разрешить (или могу?), потому что нет страницы ASPX с директивой @Page, куда я мог бы добавить атрибут Async.
Мы очень ценим помощь :(
Решение
Похоже, ты хочешь Асинхронная поддержка ASP.NET MVC.Смотрите также "Расширить ASP.NET MVC для асинхронного действия".
Это ТАКОЙ вопрос это тоже актуально.
Другие советы
Если вы используете сторонний сервис, такой как 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.
зависит от того, насколько важны эти электронные письма, но если они важны с точки зрения бизнеса и не должны потеряться, то вам следует использовать этот подход.