ASP.NET MVC框架,自动发送电子邮件。

13

我希望我的asp.net mvc框架系统在某个控制器内的某个操作被触发时自动发送电子邮件。是否有任何第三方库或.NET标准方法可以实现此功能?

4个回答

21

一种更为现代的方法是使用System.Net.Mail - 这是System.Web.Mail的2.0替代品。

可以从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
从BaseController创建所有其他控制器继承。 在BaseController中重写OnActionExecuted方法,并插入您的代码以发送电子邮件。
public class BaseController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // Send mail here
        base.OnActionExecuted(filterContext);
    }
}

2

SmtpClient类和其他System.Net.Mail类可以轻松地从任何.NET程序中使用,用于发送邮件。您只需要将其指向一个可用且愿意的SMTP服务器即可。


1

使用.NET发送电子邮件并不难。您可以在操作内部发送邮件。

但是,在这里我们要谈论一下日志记录,对于日志记录,有许多第三方库可供选择。我知道有一个叫做Log4Net的库。

大多数这些日志框架都可以配置如何存储日志,并且可能还有一个设置,当它记录某些内容时发送电子邮件。

但在您的情况下,它只会编写一个简单的邮件函数,在用户输入操作时发送邮件。您可以查看:http://www.developer.com/net/asp/article.php/3096831 - 这是使用.NET发送邮件的演示 - 虽然是WebForms,但基本原理仍适用于MVC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接