asp.net MVC Framework, автоматически отправлять электронную почту - PullRequest
13 голосов
/ 20 января 2009

Я хочу, чтобы моя система asp.net mvc framework отправляла электронную почту каждый раз, когда происходит определенное действие (внутри определенного контроллера). Существуют ли сторонние библиотеки или .net стандартные способы для достижения этой цели?

Ответы [ 4 ]

21 голосов
/ 20 января 2009

Более современным методом будет использование System.Net.Mail - это замена 2.0 для System.Web.Mail.

Нечто подобное, вызываемое либо из BaseController (если есть другие контроллеры, которые нуждаются в этом), чем фактический рассматриваемый контроллер.

У меня есть следующий код внутри статического класса для обработки отправки простых простых текстовых элементов с сервера:

internal static void SendEmail(MailAddress fromAddress, MailAddress toAddress, string subject, string body)
{
    var message = new MailMessage(fromAddress, toAddress)
                      {
                          Subject = subject,
                          Body = body
                      };

    var client = new SmtpClient("smtpServerName");
    client.Send(message);
}

Очевидно, что вам, вероятно, понадобится некоторая обработка ошибок и т. Д. - Send может выдать исключение, например, если сервер отказывает в соединениях.

3 голосов
/ 20 января 2009

Создайте BaseController, от которого наследуются все остальные ваши контроллеры. В BaseController переопределите метод OnActionExecuted и введите свой код для отправки электронного письма.

public class BaseController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // Send mail here
        base.OnActionExecuted(filterContext);
    }
}
2 голосов
/ 20 января 2009

Класс SmtpClient с другими System.Net.Mail классами легко использовать из любой программы .NET для отправки почты. Вам просто нужно указать на доступный и готовый SMTP сервер.

1 голос
/ 20 января 2009

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

Но, я думаю, что мы мало говорим о регистрации здесь, и для регистрации есть ряд сторонних библиотек. Я знаю, что есть один, который называется Log4Net.

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

Но в вашем сценарии он просто написал бы простую почтовую функцию, которая отправляет почту, когда пользователь вводит действие. Вы можете взглянуть на: http://www.developer.com/net/asp/article.php/3096831 - это демонстрационная версия отправки почты с использованием .NET - веб-форм, хотя основные вещи все еще применимы к MVC.

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