如何使用 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 文档! 这对我有用,但仅当某些字段不为空时。我认为我的组合是addr1
、city
、zip
和country
。
@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 API v3 创建列表 REST 客户端 Ruby