2017-10-19 16 views
0

J'envoyer des messages électroniques via asp.net Core 2.0 comme ce tutorial, j'ai donc quelque chose comme ça dans mon contrôleurEnvoi de courrier à l'aide des valeurs dynamiques avec asp.net core 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); 

et il fonctionne, mais Je veux le faire moins générique. Comme envoyer du code à la classe et l'appeler du contrôleur. Par exemple, dans la classe que je veux utiliser des variables plutôt que du contenu statique comme

mailMessage.Body = "body"; 

Au lieu de cela ce que je veux utiliser quelque chose comme:

var body; 
mailMessage.Body = body; 

Ainsi dans le contrôleur ont la capacité de changer ce contenu. Comment puis-je y parvenir? Cordialement

+0

Vous avez donc le code pour envoyer des courriels ... Et vous voulez que le code pour écrire un contrôleur et un modèle pour envoyer un courriel? C'est un peu ambigu, surtout sans MVC existant pour où vous êtes coincé ... ' –

+0

J'ai travailler envoyer un code email ... Je veux juste le faire moins générique et changer les données quand je veux. Par exemple dans le contrôleur de maison je veux appeler ma méthode de courrier de la classe. Donc, je veux remplacer 'mailMessage.Body' pour ce message. Maintenant Dans le contrôleur de produits je veux utiliser la même classe, mais je veux surcharger 'mailMessage.Body' pour cette méthode de contrôleur aussi ... Donc en conclusion je veux avoir une méthode dans la classe et changer le contenu du contrôleur quand je veux @ AustinFrench – Louis

+0

Pourquoi ne faites-vous pas simplement une fonction SendEmail et passez la variable résultante du contrôleur en tant que paramètre à la fonction? – progrAmmar

Répondre

0

Dans votre contrôleur, ajouter une fonction privée appelée SendEmail quelque chose comme

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

Utilisez-le dans votre contrôleur

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