从 C# 发送 Mandrill 电子邮件
Posted
技术标签:
【中文标题】从 C# 发送 Mandrill 电子邮件【英文标题】:Sending Mandrill Email from C# 【发布时间】:2015-04-23 07:23:38 【问题描述】:我定义了一个想要发送的 Mandrill 电子邮件模板。在发送之前,我想替换模板中定义的某些参数。
例如,其中一封电子邮件是忘记密码,我想替换模板中参数|NEW_PASSWORD|
的新密码
我的模板是在 MailChimp 中创建并导入 Mandrill,我正在使用以下 .Net 库:
这是我目前的代码
var api = new MandrillApi(api_key);
var recipients = new List<Mandrill.Messages.Recipient>();
recipients.Add(new Mandrill.Messages.Recipient(user_email, user_name));
Mandrill.NameContentList<string> content = new Mandrill.NameContentList<string>();
MVList<Mandrill.Messages.SendResult> result = api.SendTemplate(template, content, message);
感谢任何帮助。
谢谢
罗希特
【问题讨论】:
那么你的问题是什么? 您可能需要考虑电子邮件模板服务,而不是直接与 Mandrill 交互。结帐 sendwithus.com 或 customer.io。两者都使管理变量变得更加容易,并且可以很好地与 C# 配合使用。 感谢您的建议。但是为什么要在 Mandrill 和应用程序之间添加另一个接口呢? Mandrill 模板公开了变量,所以只是为了让这些变量正常工作,我觉得在两者之间添加另一个接口并不合理。 我正在使用gist.github.com/andyhuey/3444063 上的代码,虽然我真的不知道执行此操作的上下文,但我相信它足以掌握合并变量的工作方式。 【参考方案1】:1)从
安装nuget包https://github.com/shawnmclean/Mandrill-dotnet
2)在您的模板中添加占位符之类的。 供应商名称
3) 在 api 中使用 global_merge_vars 替换占位符。
他们提供 带有要替换的占位符名称和值的 AddGlobalVariable 方法。
Mandrill.Models.EmailMessage email = new Mandrill.Models.EmailMessage();
email.FromEmail = "teste@xxx.com";
email.Subject = "Mandrill API Template Replace";
email.RawMessage = "Hello Pradip Patel";
email.MergeLanguage = "handlebars";
email.AddGlobalVariable("vendor_name", "FI Test");
//your template name
string TemplateName = "Your Template Name.";
email.To = new List<Mandrill.Models.EmailAddress>()
new Mandrill.Models.EmailAddress("pradippatel1411@gmail.com")
;
Mandrill.Requests.Messages.SendMessageTemplateRequest objTemp =
new Mandrill.Requests.Messages.SendMessageTemplateRequest(email, TemplateName);
var results = await api.SendMessageTemplate(objTemp);
【讨论】:
【参考方案2】:我在 mandrill http://blog.mandrill.com/handlebars-for-templates-and-dynamic-content.html 上使用把手作为合并语言
然后我发送与模板中具有相同名称的变量,甚至是具有相同成员名称的完整对象以匹配模板中的变量,然后 Handlebar 和 Mandrill 处理将这些映射到模板。
【讨论】:
以上是关于从 C# 发送 Mandrill 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章