How to Set SMTP Client in POSTAL MVC not in WEB.Config

1.8k views Asked by At

i have a problem when using POSTAL MVC in my Project. My hosting services company requires me to set smtp client config in code not in web config.

How to do that ?

I hope someone can give me a solution

Thank you.

2

There are 2 answers

8
Rafael Lourenço On BEST ANSWER

I had the same problem. There is no reference on the official Postal documentation, nor an How-to. So here goes one:

  1. Create the SmtpClient instance with the custom configuration
  2. Create an Postal.EmailService instance using the constructor which takes 2 arguments (ViewEngineCollection, Func «SmtpClient»)
  3. Now you can send the email using the custom SmtpClient configuration by calling emailService.

Here goes a complete sample code:

dynamic email = new Email("Example");
email.To = "[email protected]";
email.FunnyLink = DB.GetRandomLolcatLink();

SmtpClient client = new SmtpClient("mail.domain.com");
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "somepassword");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Port = 25;
client.EnableSsl = false;

Postal.EmailService emailService = new Postal.EmailService(new ViewEngineCollection(), () => client);

emailService.Send(email);
0
iAM On

To Add to Rafael's answer. If you use

Postal.EmailService emailService = new Postal.EmailService(new ViewEngineCollection(), () => client);

you might get this error: Email view not found for [name for he email template]. Locations searched because new Postal.EmailService(new ViewEngineCollection(), () => client) creates emailService with empty view engine. Use ViewEngines.Engines inplace of new ViewEngineCollection() (as sugested by @Houssam Hamdan in comment above) to use razor view engine.

Complete line:

Postal.EmailService emailService = new Postal.EmailService(ViewEngines.Engines, () => client);