【问题标题】:Mandrill Editable Template: mc:edit link hrefMandrill 可编辑模板:mc:edit link href
【发布时间】:2014-07-22 18:55:25
【问题描述】:

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

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

我想知道是否有办法在变量中传递 href 链接,即 tracking_url

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

我正在为 Django 使用 Djrill,这是迄今为止发送电子邮件的代码,我想将 tracking_url 添加为 template_content 变量或类似的东西

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 方法(阅读 here),但我不知道如何使用它..

【问题讨论】:

    标签: html django hyperlink mailchimp mandrill


    【解决方案1】:

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

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

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

    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);
    

    例如,孔表:

    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 模板中,我只有(表格部分):

    <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>
    

    在你做的代码中:

    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 });
        }
    }
    

    并发送电子邮件。

    我希望它能帮助你做你需要的。


    注意,您只在代码中传递全局变量的名称,但在模板中您需要使用|**| 包装它来调用它:

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

    可以在模板中访问:

    <span class="completed">*|TASKCOMPLETE|*</span>
    

    【讨论】:

      【解决方案2】:

      这篇文章已经很老了,但我想我会分享我的答案,以防其他人在这里偶然发现。

      如果您使用 Mandrill API,您需要实际发送“global_merge_vars”或“merge_vars”键中的变量值。不要使用模板内容。 Mandrill API 这种方式相当不直观。

      所以你的内容将与一个变量保持不变:

      *|ITEMS_LIST|*
      

      那么你的 JSON 正文应该是这样的:

              "global_merge_vars": [
                  {
                      "name": "ITEMS_LIST",
                      "content": "This is a list"
                  }
              ],
      

      来源:How to add params to all links in a mandrill template through API?

      【讨论】:

        猜你喜欢
        • 2014-12-06
        • 1970-01-01
        • 2013-02-12
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 2014-10-20
        相关资源
        最近更新 更多