首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WWW::Mailchimp (订阅)中添加语言变量

在WWW::Mailchimp (订阅)中添加语言变量
EN

Stack Overflow用户
提问于 2015-10-06 17:39:49
回答 2查看 624关注 0票数 0

我正在努力找出如何使用WWW::Mailchimp ( http://search.cpan.org/~arcanez/WWW-Mailchimp/ )将某人注册到我们的列表中,但也指定了此人的语言(即英语、法语、德语、西班牙语等)。

以下是我到目前为止所拥有的:

代码语言:javascript
运行
复制
my $mailchimp = WWW::Mailchimp->new(apikey => 'xxxx' );
   $mailchimp->listSubscribe( id => "xxx", email_address => $in->{Email}, merge_vars => [ FNAME => $name[0], LNAME => $name[1], mc_language => "fr", LANG => "fr", LANGUAGE => "fr" ] );

mc_language => "fr",LANG => "fr",LANGUAGE => "fr"似乎什么也没做(我一直在尝试我所看到的所有平躺在一起的比喻,只希望其中一个能成功!)

当它工作(并要求您确认您的订阅)时,所有语言变量都会被忽略。看看他们的文档,我有点搞不懂该用什么:

https://apidocs.mailchimp.com/api/2.0/lists/subscribe.php

代码"fr“是可以的,但我不知道要传递给它的是什么参数。

以前有人有过这方面的经验吗?除了语言之外,它还能正常工作(但我需要能够用自己的语言发送确认邮件,然后在发送邮件时也要过滤)。

更新: Ok,所以它看起来不是更新的简单例子。我一直在研究v3.0API,这是对旧API(新的函数名、发送请求的新方法等)的彻底改进。我要做的是研究一个"Curl“方法,所以我们至少可以让它继续下去。一旦我做到了这一点,我可能会考虑编写一些代码来处理LWP::UserAgent,因为这样做比处理大量的curl请求更干净。遗憾的是,对于Perl和MailChimp (使用新的API,甚至2.0版本),已经没有任何东西可供使用了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-14 15:59:13

好吧,最后我到了!我一直在与MailChimp支持部门交谈,他们非常有帮助。原来这是个双重问题。

1)需要为所讨论的列表启用Auto-Translate。他们的回答是:

在看了这个电话之后,它似乎已经被正确地设置好了,所以你们在这方面都很好。话虽如此,我看到自动翻译选项似乎没有为您的任何列表启用。为了使确认和所有其他回复电子邮件自动翻译,这将需要为所有正在使用的列表启用。 我们有一些关于这方面的附加信息,在这里,如果您想查看一下:http://kb.mailchimp.com/lists/signup-forms/translate-signup-forms-and-emails#Auto-Translate-Forms

2)在通过API进行请求时,需要专门设置Accept-Language: xx值。例如,en,fr,es,de等。

这是一个工作的功能,任何人谁需要它在未来。只需确保更新apikey、listId和端点URL。

代码语言:javascript
运行
复制
do_register_email_list('foo@bar.com','Andrew Test',"en")

sub do_register_email_list {
# (email,name,lang)

    use WWW::Curl::Easy;
    use Digest::MD5;
    use JSON;

    my @name = split /\s+/, $_[1];
    my $apikey = 'xxxx-us6';
    my $listid = 'xxxx';
    my $email = $_[0];
    my $endpoint = "https://us6.api.mailchimp.com/3.0/lists";
    my $lang = $_[2]||'en';

    my $json = JSON::encode_json({
        'email_address' => $email,
        'status'        => 'pending',
        'language' => $lang,
        'merge_fields'  => {
            'FNAME'     => $name[0]||'',
            'LNAME'     => $name[1]||''
        }
    });

    my $curl = WWW::Curl::Easy->new;

    my $url = "$endpoint/$listid/members/" . Digest::MD5::md5(lc($email));

    $curl->setopt(CURLOPT_HEADER,1);
    $curl->setopt(CURLOPT_URL, $url);

#    $curl->setopt(CURLOPT_VERBOSE, 1);
    $curl->setopt(CURLOPT_USERPWD, 'user:' . $apikey);
    $curl->setopt(CURLOPT_HTTPHEADER, ['Content-Type: application/json',"Accept-Language: $lang"]);
    $curl->setopt(CURLOPT_TIMEOUT, 10);
    $curl->setopt(CURLOPT_CUSTOMREQUEST, 'PUT');
    $curl->setopt(CURLOPT_SSL_VERIFYPEER, 0);
    $curl->setopt(CURLOPT_POSTFIELDS, $json);

    # A filehandle, reference to a scalar or reference to a typeglob can be used here.
    my $response_body;
    $curl->setopt(CURLOPT_WRITEDATA,\$response_body);

    # Starts the actual request
    my $retcode = $curl->perform;

#print "FOO HERE";
    # Looking at the results...
    if ($retcode == 0) {
        print "Transfer went ok\n";
        my $response_code = $curl->getinfo(CURLINFO_HTTP_CODE);
        print "Received response: $response_body\n";
    } else {
        # Error code, type of error, error message
        print "An error happened: $retcode ".$curl->strerror($retcode)." ".$curl->errbuf."\n";
    }
}

希望这能让其他人免受我的痛苦:) (这位MailChimp支持女士还说,她会让他们的团队在开发人员的笔记中添加这方面的一些内容,所以它变得更清晰了!)

票数 0
EN

Stack Overflow用户

发布于 2015-10-06 17:53:42

通过查看来源,它默认为API1.3:

代码语言:javascript
运行
复制
has api_version => (
  is => 'ro',
  isa => Num,
  lazy => 1,
  default => sub { 1.3 },
);

您需要使用显示的MC_LANGUAGE文档:

string MC_LANGUAGE设置成员的语言首选项。支持的代码完全区分大小写,可以找到这里

看起来,该模块只是将您提供的任何数据结构插入到JSON中,并将其发布到Mailchimp中,因此,您的目标API的适当Mailchimp文档版本应该作为主源引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32976195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档