2009-01-20 19 views
13

Ich möchte mein asp.net MVC-Framework-System eine E-Mail senden jedes Mal eine bestimmte Aktion (in einem bestimmten Controller) abgefeuert wird. Gibt es Bibliotheken von Drittanbietern oder .net Standardmethoden, um dies zu erreichen?asp.net mvc Rahmen, automatisch senden E-Mail

Antwort

21

Eine aktuellere Methode wäre die Verwendung System.Net.Mail - das ist der 2.0 Ersatz für System.Web.Mail.

In etwa so, von einem BaseController (wenn es andere Controller gibt, die dies benötigen) der eigentliche Controller aufgerufen.

Ich habe den folgenden Code in einer statischen Klasse Mailing einfach Klartext Elemente vom Server zu handhaben:

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); 
} 

Offensichtlich würden Sie wahrscheinlich einige Fehler wollen etc dort Handhabung - Senden Sie können eine Ausnahme auslösen zum Beispiel, wenn der Server Verbindungen verweigert.

3

Erstellen Sie einen BaseController, von dem alle anderen Controller erben. Im BaseController überschreiben Sie die OnActionExecuted-Methode und fügen Sie Ihren Code zum Senden der E-Mail ein.

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

Nun ist es nicht wirklich schwer, eine E-Mail mit .NET zu senden. Sie können die E-Mail einfach von innerhalb Ihrer Aktion senden.

Aber ich denke, wir reden hier wenig über Protokollierung, und für die Protokollierung gibt es eine Reihe von Bibliotheken der 3. Partei. Ich weiß, dass es ein Log4Net gibt.

Die meisten dieser Logging-Frameworks ermöglicht es zu konfigurieren, wie Protokolle gespeichert werden, und porsibally auch eine Einstellung zum Senden einer E-Mail, wenn es etwas protokolliert.

Aber in Ihrem Szenario würde es einfach eine einfache Mail-Funktion schreiben, die die Mail sendet, wenn der Benutzer die Aktion eingibt. Sie können sehen: http://www.developer.com/net/asp/article.php/3096831 - es ist eine Demo des Sendens einer Mail mit .NET - Webforms obwohl, aber die grundlegenden Dinge gelten immer noch für MVC.

2

Die SmtpClient Klasse mit den anderen System.Net.Mail Klassen sind einfach von jedem .NET Programm genutzt Mail zu versenden. Sie müssen es nur auf einen verfügbaren und willigen SMTP Server zeigen.

Verwandte Themen