2017-10-19 2 views
0

Ich E-Mail über asp.net Core 2.0 wie diese tutorial senden, so habe ich so etwas wie dies in meinem ControllerSenden Mail 2.0

SmtpClient client = new SmtpClient("mysmtpserver"); 
client.UseDefaultCredentials = false; 
client.Credentials = new NetworkCredential("username", "password"); 

MailMessage mailMessage = new MailMessage(); 
mailMessage.From = new MailAddress("[email protected]"); 
mailMessage.To.Add("[email protected]"); 
mailMessage.Body = "body"; 
mailMessage.Subject = "subject"; 
client.Send(mailMessage); 

und es funktioniert, aber Ich möchte es weniger generisch machen. Wie Code an die Klasse senden und vom Controller aus aufrufen. Zum Beispiel in der Klasse möchte ich Variablen statt statische Inhalte wie

mailMessage.Body = "body"; 

Statt das ich etwas verwenden wollen, verwenden wie:

var body; 
mailMessage.Body = body; 

So in den Controller haben die Fähigkeit, diese Inhalte zu ändern. Wie kann ich das erreichen? Grüße

+0

So Sie den Code E-Mail senden namens ... Und Sie wollen die Code zum Schreiben eines Controllers und Modells zum Senden von E-Mails? Das ist ein bisschen zwiespältig, vor allem ohne MVC für wo Sie stecken bleiben ... ' –

+0

Ich habe Arbeit senden E-Mail-Code ... Ich möchte nur weniger generische und Daten ändern, wenn ich will. Zum Beispiel in Heimcontroller möchte ich meine Mail-Methode aus der Klasse aufrufen. Daher möchte ich "mailMessage.Body" für diese Nachricht außer Kraft setzen. Jetzt im Produkt-Controller möchte ich die gleiche Klasse verwenden, aber ich möchte "mailMessage.Body" für diese Controller-Methode zu überschreiben ... Also abschließend möchte ich eine Methode in Klasse haben und Inhalt in Controller ändern, wenn ich @ AustinFrench – Louis

+0

Warum machen Sie nicht einfach eine Funktion SendEmail und übergeben die resultierende Variable vom Controller als Parameter an die Funktion? – progrAmmar

Antwort

0

In Ihrem Controller, fügen Sie eine private Funktion SendEmail so etwas wie

private bool SendEmail(string mail_to, string mail_subject, mail_body) 
{ 
    bool result = false; 
    try 
    { 
    SmtpClient client = new SmtpClient("mysmtpserver"); 
    client.UseDefaultCredentials = false; 
    client.Credentials = new NetworkCredential("username", "password"); 
    MailMessage mailMessage = new MailMessage(); 
    mailMessage.From = new MailAddress("[email protected]"); 
    mailMessage.To.Add(mail_to); 
    mailMessage.Body = mail_body; 
    mailMessage.Subject = mail_subject; 
    client.Send(mailMessage); 
    result = true; 
    } 
    catch(Exception ex){ result = false; } 
    return result; 
} 

Verwenden Sie es in Ihrem Controller

string mailBody = "Anything can be in the body\n. Mail contents."; 
string subject = "Mail Subject"; 
string mailTo = "[email protected]" 
SendEmail(mailTo, subject, mailBody)