首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可编辑模板:mc:编辑链接href

可编辑模板:mc:编辑链接href
EN

Stack Overflow用户
提问于 2014-06-02 15:33:25
回答 2查看 4.8K关注 0票数 5

我试图使用Mandrill模板发送订单跟踪电子邮件。

使用mc:编辑可以很好地处理像<span mc:edit="ship_id">ship_id</span><br>这样的简单文本

我想知道是否有一种方法可以在变量tracking_url中传递href链接。

<a class="mcnButton " title="Track order" href=tracking_url target="_blank" style="font-weight: bold;text-align: center;">Track Order</a>

我使用Djrill作为Django,下面是发送电子邮件的代码,我想添加tracking_url作为一个template_content变量或类似的东西

代码语言:javascript
复制
msg = EmailMessage(subject="Track your order", from_email="admin@example.com", to=[user.email])
    msg.template_name = "order-sent"
    msg.template_content = {'order_id' : order_id, 'order_date' : order_date, 'order_type' : order_type, 'first_name' : user.first_name, 'last_name' : user.last_name, 'phone' : user.info.phone,
    'd_street' : d.street, 'd_zipcode' : d.zipcode, 'd_city' : d.city, 'd_country' : d.country}
    msg.send()

使用AddGlobalVariable方法(读取这里)似乎是可能的,但我不知道如何使用它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-02 16:52:08

我有一个电子邮件调度器,它使用MandripApp发送普通电子邮件(如SMTP)以及使用模板发送电子邮件。

我不知道如何传递您所要求的内容,因为我不再使用mc:edit属性(因为我的用户自己永远不会编辑模板,我或开发人员也会这样做),但是我可以为您提供全局变量的帮助。

全局变量与Mailchimp相同,比如*|EMAIL|*,我就是这样做的:

代码语言:javascript
复制
var mergeVars = Dictionary<string, string>();
mergeVars.Add("ORDER_ID", orderId);
mergeVars.Add("CUSTOMER_NAME", fullname);
mergeVars.Add("CUSTOMER_FNAME", fullname.Contains(" ") ? fullname.Split(' ')[0] : fullname);
mergeVars.Add("CUSTOMER_EMAIL", email);

例如,一个孔表:

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();
foreach (ProductInfo pi in products)
{
    sb.Append("<tr>");
    sb.AppendFormat("<td style=\"text-align:left;\"><img src=\"http://dynassets1.gavekortet.dk/{2}/products/trans/{1}_1.png\" alt=\"{0}\" /></td>", pi.Title, pi.ID, shopId);
    sb.AppendFormat("<td style=\"text-align:left;\">{0} x {1}</td>", pi.Qty, pi.Title);
    sb.AppendFormat("<td style=\"text-align:right;\">{0:N2}</td>", double.Parse(pi.CardValue));
    sb.Append("</tr>");
}

mergeVars.Add("ITEMS_LIST", sb.ToString());

在我的MandrillApp模板中,我只需要(对于表部分):

代码语言:javascript
复制
<table style="width: 100%; padding: 0 30px;">
    <thead>
      <tr>
        <th style="width:75px; text-align:left;">Gavekort</th>
        <th style="width:75px; text-align:left;">Ordreoversigt</th>
        <th style="width:75px; text-align:right;">Værdi (kr.)</th>
      </tr>
    </thead>

    <tbody>
        *|ITEMS_LIST|*
    </tbody>
</table>

在代码中,你这样做:

代码语言:javascript
复制
var tmplMessage = new MandrillSendTemplateItem();
tmplMessage.key = password;

tmplMessage.message = new MessageItem();

// Email Destination
tmplMessage.message.to = new List<MessageToItem>();
tmplMessage.message.to.Add(new MessageToItem() { name = destinationName, email = destinationEmail, type = "to" });
tmplMessage.message.to.Add(new MessageToItem() { name = "Bruno Alexandre", email = "my_email@domain.com", type = "bcc" }); // always send me a copy so I know what's going on

// Global Variables
tmplMessage.message.global_merge_vars = new List<TemplateContentItem>();
tmplMessage.message.global_merge_vars.Add(
    new TemplateContentItem() { 
        name = "TASKCOMPLETE", 
        content = DateTime.UtcNow.ToString("dd MMM yyyy HH:mm") });

// Global Variables passed in properties
if (properties != null)
{
    foreach (var p in properties)
    {
        tmplMessage.message.global_merge_vars.Add(
            new TemplateContentItem() { name = p.Key, content = p.Value });
    }
}

然后发邮件。

我希望它能帮你做你想做的事。

注意到,您只在代码中传递全局变量的名称,但是在模板中需要使用|**|对其进行包装,因此:

代码语言:javascript
复制
tmplMessage.message.global_merge_vars.Add(
    new TemplateContentItem() { 
        name = "TASKCOMPLETE", 
        content = DateTime.UtcNow.ToString("dd MMM yyyy HH:mm") });

将在模板中以下列方式访问:

代码语言:javascript
复制
<span class="completed">*|TASKCOMPLETE|*</span>
票数 4
EN

Stack Overflow用户

发布于 2017-08-31 21:26:09

这篇文章很老了,但我想我应该分享一下我的答案,以防别人在这里绊倒。

如果您正在使用Mandrill,则需要在"global_merge_vars“或"merge_vars”键中实际发送变量值。不要使用template_content。通过这种方式,Mandrill是非常不直观的。

因此,您的内容将与变量保持不变:

代码语言:javascript
复制
*|ITEMS_LIST|*

那么您的JSON主体应该有如下内容:

代码语言:javascript
复制
        "global_merge_vars": [
            {
                "name": "ITEMS_LIST",
                "content": "This is a list"
            }
        ],

来源:如何通过API向mandrill模板中的所有链接添加params?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23998219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档