我正在尝试在我的 MVC 项目中发送格式化的电子邮件。我在我的 BaseService 类中使用此方法完美发送了普通电子邮件,所有其他服务都继承自:
public void SendAsyncEmail(MailMessage message)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("cred", "password"),
EnableSsl = true
};
client.SendCompleted += (s, e) =>
{
client.Dispose();
message.Dispose();
};
ThreadPool.QueueUserWorkItem(o => client.SendAsync(message, Tuple.Create(client, message)));
}
现在,我需要将每个 MailMessage.Body 转换为 HTML 页面,而不是纯文本正文,最好使用 Razor 模板。我找到了 MVCMailer:
https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide
我安装了它,搭建了一些模板,并在我的 BaseService 中添加了以下内容:
public virtual MvcMailMessage Welcome()
{
ViewBag.Name = "Test";
return Populate(x =>
{
x.viewName = "Welcome";
x.To.Add("sohan39@example.com");
});
}
但是我的服务没有 HTTPContext,所以 ViewBag 没有解析(也没有填充)。
让这个工作最简单的方法是什么?