如何使用 Mailchimp API v3 创建具有地址的列表成员

Posted

技术标签:

【中文标题】如何使用 Mailchimp API v3 创建具有地址的列表成员【英文标题】:How to create list member with ADDRESS using 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 中将其设置为字符串 -使用这个问题的解决方案作为后者的指南。 【参考方案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 = "***lyn",
                                    State = "NY",
                                    Zip = "11299",
                                    Country = "US"
                                ;

member.MergeFields["ADDRESS"] = address;

【讨论】:

以上是关于如何使用 Mailchimp API v3 创建具有地址的列表成员的主要内容,如果未能解决你的问题,请参考以下文章

使用 MailChimp API v3.0 创建新的订阅者验证错误

MailChimp 发送邮件 v3.0

如何在 mailchimp api v3 中安排活动?

Mailchimp API v3 创建列表 REST 客户端 Ruby

Mailchimp api v3 - 无法基于文本合并字段创建段

如何使用 MailChimp API V3 过滤 http 响应?