Louis
Louis

Reputation: 1

Sending Mail using dynamic values with asp.net core 2.0

I'm sending email via asp.net Core 2.0 like this tutorial, so I have something like this into my controller

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

and it works, but I want to do it less generic. Like sending code to class and call it from controller. For example in class I want to use variables instead static content like

mailMessage.Body = "body";

Instead this I want to use something like:

 var body;
 mailMessage.Body = body;

So into controller have ability to change that content. How can I achieve that? Regards

Upvotes: 0

Views: 2871

Answers (1)

progrAmmar
progrAmmar

Reputation: 2670

In your controller, add a private function called SendEmail something like

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

Use it in your controller

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

Upvotes: 1

Related Questions