从 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 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

电子邮件不会从 Mandrill 发送到 Gmail

尝试从 Mandrill 发送电子邮件时出现 html 或车把编码问题

通过 Mandrill 使用 Elmah 发送错误电子邮件

Mandrill 电子邮件不从本地应用程序发送

使用 PHP 使用 Mandrill 发送电子邮件

发送电子邮件传输 Mandrill 失败