【问题标题】:How to create list member with ADDRESS using Mailchimp API v3如何使用 Mailchimp API v3 创建具有地址的列表成员
【发布时间】:2016-11-18 22:53:55
【问题描述】:

ADDRESS 是一个合并字段,但文档 (http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/) 并不清楚如何将其传递给 API,因为它有街道、邮政编码、城市等的子字段。有没有人有示例如何做这个?

【问题讨论】:

  • 我也面临同样的问题。我尝试了电子商务商店中为客户记录的地址格式和纯文本。都没有用。
  • 我只是喜欢 Mailchimp API 和文档。公司已经成立 20 年了,他们的 API 文档很糟糕。
  • 请注意,将 CSV 导入中的地址设置为字符串 确实 有效,但在 API 中将其设置为字符串 -使用这个问题的解决方案作为后者的指南。

标签: mailchimp mailchimp-api-v3.0


【解决方案1】:

此 JSON 有效:

{
  "addr1" : "first line",
  "addr2" : "second line",
  "city" : "city",
  "state": "state",
  "zip": "zip code",
  "country": "country"
}

它在此处的架构中记录: https://us1.api.mailchimp.com/schema/3.0/Lists/Members/MergeField.json

【讨论】:

  • 谢谢!我已经搜索了好几个小时了!
  • 我赢了,我为此工作了好几天。谢谢 Mailchimp API 文档!
  • 这对我有用,但当某些字段不为空时。我认为我的组合是addr1cityzipcountry
  • @ACJ Mailchimp 还需要美国地址以及各个国家(如中国、意大利、希腊、加拿大等)的州字段。他们似乎没有记录哪些国家需要 state 字段,但肯定有很多确实需要它。有趣的是,引用的架构文件似乎表明所有地址都需要 state 字段,尽管它似乎并未对某些国家/地区强制执行。
【解决方案2】:

合并字段可以这样传递:

'FNAME' => $contact->first_name,
'LNAME' => $contact->last_name,
'ADDRESS' => (Object)[
        'addr1' => $contact->fulladdress,
        //'addr2' => $contact->address2,
        'city' => $contact->city,
        'state' => $contact->state_region,
        'zip' => $contact->zip_postal_code,
        'country' => $contact->country->shortcode,
        'language' => $contact->language->code,
 ],

【讨论】:

    【解决方案3】:

    以防万一有人遇到同样的问题。

    我创建了自己的地址类并尝试将ADDRESS-MergeField 设置为 JSON 字符串,如下所示:

    member.MergeFields["ADDRESS"] = Newtonsoft.Json.JsonConvert.SerializeObject(MyAddressObject);
    

    这样不设置地址,也不会返回错误。


    需要分配一个Dictionary<string, object>

    var adr = new Dictionary<string, object>
    {
        { "addr1", "123 Whatever" },
        { "addr2", "" },
        { "city", "New York" },
        { "state", "NY" },
        { "zip", "12345" },
        { "country", "US" }
    };
    
    member.MergeFields["ADDRESS"] = adr;
    

    【讨论】:

      【解决方案4】:

      它适用于我 (php)

      $address = new stdClass();
      $address->addr1 = $customer->address;
      $address->city = $customer->city;
      $address->state = $customer->state;
      $address->zip = $customer->zip;
      $address->country = $customer->country;
      
      $options = [
          'status' => 'subscribed',
          'email_address' => $customer->email,
          'merge_fields' => [
              'FNAME'=> $customer->first_name,
              'LNAME'=> $customer->last_name,
              'PHONE' => $customer->phone,
              'ADDRESS' => $address,
          ]
      ];
      ...
      curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($options));
      ...
      

      【讨论】:

        【解决方案5】:

        Python 答案

        我收到了错误,因为地址第 1 行是空的。这是一个有效的复制和粘贴代码:

        added_user= {}
        added_user.update({'email_address': "ground0@yahoo.com"})
        #status options: "subscribed", "unsubscribed", "cleaned", "pending", or "transactional"
        added_user.update({'status': 'subscribed'})
        address_dict = {
                    "addr1": "line 1",
                    "addr2": "made up address",
                    "city": "Kirkland",
                    "state": "WA",
                    "zip": "12345",
                    "country": "US",
                    "language": "en"
                }
        
        added_user.update({'merge_fields':{ 'FNAME': "Corona",'LNAME': "Virus", 'ADDRESS':address_dict}})
        client.lists.members.create(list_id=list_id,data=added_user)
        

        【讨论】:

          【解决方案6】:

          您可以创建自己的地址类并按如下方式分配它

            public class Address
              {
                  [JsonProperty("addr1")]
                  public string Address1 { get; set; }
          
                  [JsonProperty("addr2")]
                  public string Address2 { get; set; }
          
                  [JsonProperty("city")]
                  public string City { get; set; }
          
                  [JsonProperty("state")]
                  public string State { get; set; }
          
                  [JsonProperty("zip")]
                  public string Zip { get; set; }
          
                  [JsonProperty("country")]
                  public string Country { get; set; }
          
              }
          
               var address = new Address()
                                          {
                                              Address1 = "1 Main Street,
                                              Address2 = "",
                                              City = "Brooklyn",
                                              State = "NY",
                                              Zip = "11299",
                                              Country = "US"
                                          };
          
          member.MergeFields["ADDRESS"] = address;
          

          【讨论】:

            猜你喜欢
            • 2012-09-12
            • 2016-11-18
            • 2017-12-24
            • 2017-04-24
            • 2016-01-21
            • 2011-12-20
            • 2017-10-19
            • 2016-09-11
            • 2015-12-27
            相关资源
            最近更新 更多