将标签添加到 MailChimp 成员对象
Posted
技术标签:
【中文标题】将标签添加到 MailChimp 成员对象【英文标题】:Adding Tags to MailChimp Member object 【发布时间】:2019-09-25 06:54:38 【问题描述】:我正在使用 Brandon Seydel 的 MailChimp.Net.V3(此软件包的第 4 版)。我正在尝试使用以下代码为成员添加标签
using MailChimp.Net;
private async Task MaintainTagsAsync()
string apikey = "<apikey>";
string listid = "<listid>";
string emailaddress = "x@x.com";
try
MailChimpManager Mcm = new MailChimpManager(apikey);
Member m = await Mcm.Members.GetAsync(listid, emailaddress);
m.Tags.Add(new MemberTag
Name = "MyTag"
);
m.TagsCount = +1;
await Mcm.Members.AddOrUpdateAsync(listid, m);
catch (Exception e)
上面的代码似乎执行正常,但是当我检查成员时,我发现标签没有被添加。我已经尝试过增加和不增加 TagsCount 属性,结果相同。
有没有人有任何使用此功能的经验,并且可以指出我哪里出错了。
【问题讨论】:
你认为async-await
为什么会这样?
好吧,由于进程使用异步处理,我的异步代码实现可能会导致代码无法按预期工作。
唯一的异步代码是await Mcm.Members.AddOrUpdateAsync(listid, m)
。你的问题似乎在那之前。不是吗?
我不确定你是否在帮忙。如果仔细观察,例程中实际上有 2 个等待。我不认为问题与异步有关,但我添加了标签以防万一其他人认为它可能是。
你从一个等待的电话中得到m
。从那里到下一个await
代码是同步的。您是否查看过 MailChimp API 的源代码?
【参考方案1】:
我现在找到了一种似乎有效的方法。请看以下代码:
using MailChimp.Net;
private async Task MaintainTagsAsync()
string apikey = "<apikey>";
string listid = "<listid>";
string emailaddress = "x@x.com";
try
MailChimpManager Mcm = new MailChimpManager(apikey);
Member m = await Mcm.Members.GetAsync(listid, emailaddress);
Tags tags = new Tags();
tags.MemberTags.Add(new Tag()
Name = "MyTag",
Status = "active"
);
await Mcm.Members.AddTagsAsync(listId, emailaddress, tags);
catch (Exception e)
【讨论】:
【参考方案2】:对于它的价值,我仍在使用 Segment API,MailChimp 说它仍然受支持,上次我问过。 “标签”本质上是相同的,您可以使用当前版本的 API 轻松地在列表段中添加或删除成员。
【讨论】:
以上是关于将标签添加到 MailChimp 成员对象的主要内容,如果未能解决你的问题,请参考以下文章
Mailchimp 使用 php 和 drupal 8 将标签添加到列表中的现有成员
如何通过 api 向 mailchimp 订阅者添加“标签”