asp.net mvc框架,自动发送电子邮件

时间:2009-01-20 13:55:24

标签: asp.net visual-studio-2008 email

我希望我的asp.net mvc框架系统每次发出特定操作(在某个控制器内)时都会发送电子邮件。是否有任何第三方库或.net标准方法来实现此目的?

4 个答案:

答案 0 :(得分: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会抛出异常。

答案 1 :(得分:3)

创建一个BaseController,所有其他控制器都从该BaseController继承。 在BaseController中覆盖OnActionExecuted方法并插入用于发送电子邮件的代码。

public class BaseController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // Send mail here
        base.OnActionExecuted(filterContext);
    }
}

答案 2 :(得分:2)

可以从任何 .NET 程序轻松利用SmtpClient类和其他System.Net.Mail类来发送邮件。您只需将其指向可用且有意愿的SMTP服务器。

答案 3 :(得分:1)

使用.NET发送电子邮件并不是很难。您只需从行动中发送邮件即可。

但是,我认为我们在这里谈论的很少,而且对于日志记录,有一系列的第三方库。我知道有一个名为Log4Net。

这些日志记录框架中的大多数都可以配置日志的存储方式,并且可以在记录日志时设置发送电子邮件。

但是在您的场景中,它只会编写一个简单的简单邮件功能,在用户输入操作时发送邮件。您可以查看:http://www.developer.com/net/asp/article.php/3096831 - 它是使用.NET发送邮件的演示 - 尽管如此,但基本的东西仍然适用于MVC。