在 webconfig 中不使用 <mailSettings> 通过 hangfire 发送电子邮件

Send Email by hangfire without using <mailSettings> in webconfig

我和 asp.net mvc 5 C# 一起工作过。 我想通过 hangfire 发送电子邮件而不从 webconfing 获取数据。 在 webconfig 我有这个代码:

<mailSettings>
  <smtp from="email@site.com">
    <network host="host" port="25" userName="email@site.com" password="*****" enableSsl="false" defaultCredentials="false" />
  </smtp>
</mailSettings>

当我在 Webconfig 中使用时,一切正常。 但是现在我想将电子邮件和密码存储在数据库中并从数据库中获取值。

这是 .cs 代码

 [AutomaticRetry(Attempts = 20)]
        public static void SendEmailToMember(Member obj,string Subject, string Details){        
        var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails"));
                var engines = new ViewEngineCollection();
                engines.Add(new FileSystemRazorViewEngine(viewsPath));

                var emailService = new Postal.EmailService(engines);

                var ee = new SendEmailToMember
                {
                    To = obj.Email,
                    FullName = obj.FullName,
                    Subject=Subject,
                    Details = Details,
                    ViewName = "SendEmailToMember"
                };

                emailService.Send(ee);

}

如何更改它以从数据库获取邮件设置?

您可以使用 SmtClient 创建新的 Postal.EmailService,导入 System.Net.Mail 命名空间并使用此代码

        MailMessage mail = new MailMessage();

        SmtpClient smtpServer = new SmtpClient("smtp.gmail.com"); //gmail smtp server
        smtpServer.Credentials = new System.Net.NetworkCredential("loginFromDB", "passwordFromDB");
        smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpServer..EnableSsl = false;
        smtpServer.Port = 587; // gmail works on this port

        mail.From = new MailAddress("yourMail@gmail.com");
        mail.To.Add("recepient@gmail.com");
        mail.Subject = "Hello from the other side";
        mail.Body = "your body";

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

        emailService.Send(email);