【问题标题】:How to send email using MailChimp API如何使用 MailChimp API 发送电子邮件
【发布时间】:2016-08-03 09:32:17
【问题描述】:

我正在 nodejs 中创建一个应用程序来使用 MailChimp 发送电子邮件。我尝试使用https://apidocs.mailchimp.com/sts/1.0/sendemail.func.php,但将其更改为使用 3.0 api,因为 1.0 似乎不再有效(大惊喜)。我已经设置了我的应用程序

var apiKey = '<<apiKey>>',
        toEmail = '<<emailAddress>>',
        toNames = '<<myName>>',
        message = {
            'html': 'Yo, this is the <b>html</b> portion',
            'text': 'Yo, this is the *text* portion',
            'subject': 'This is the subject',
            'from_name': 'Me!',
            'from_email': '',
            'to_email': toEmail,
            'to_name': toNames
        },
        tags = ['HelloWorld'],
        params = {
            'apikey': apiKey,
            'message': message,
            'track_opens': true,
            'track_clicks': false,
            'tags': tags
        },
        url = 'https://us13.api.mailchimp.com/3.0/SendEmail';
needle.post(url, params, function(err, headers) {
    if (err) {
                console.error(err);
            }
            console.log(headers);
    }
});

我不断收到 401 响应(未授权,因为我没有正确发送 API 密钥)

由于服务器的限制,我必须使用needle。

【问题讨论】:

    标签: javascript node.js curl mailchimp needle.js


    【解决方案1】:

    API v3.0 中没有“SendEmail”端点。 MailChimp 的 STS 是其 Mandrill 交易服务的前身,可能仍仅适用于具有现有 STS 活动的用户帐户。无法创建新的 STS 活动。如果您有一个按月付费的 MailChimp 帐户,您应该查看 Mandrill。如果没有,我在 Mailgun 上运气不错。

    【讨论】:

    • 这是正确答案。还应该提到的是,即使这确实有效,我也没有正确设置身份验证。 @micmia 提到了设置身份验证的正确方法。
    • 在我开始一个新问题之前,知道为什么这会返回 405(不允许的方法) var apiKey = '>', url = 'us13.api.mailchimp.com/3.0/campaigns/<<campaign>>/…';尝试 { needle.post(url, {username: 'anystring', password: apiKey}, function(err, headers) { if (err) { console.error(err); } console.log(headers);
    • 不允许的方法是standard HTTP error。这意味着您使用的 HTTP 方法(在本例中为 POST)对您选择的资源无效。 MailChimp 使用 HTTP 方法来区分操作。 POST 用于创建,GET 用于读取等。因此,如何解决该特定问题取决于您要执行的操作,但您要么想要使用不同的方法(PATCH 或 GET),要么使用不同的端点(比如/campaigns/)
    • 很好的答案,原来我的广告系列 ID 有误。我要在这里发表评论,以便其他人知道我将使用 Mandrill 来完成工作。如果您已经订阅了 MailChimp,那么您可以使用 Mandrill 发送消息。对于这项任务,这是一个更好的 API(在我看来)。
    【解决方案2】:

    您应该在MailChimp API 3.0 中使用HTTP Basic 身份验证。

    needle.get('https://<dc>.api.mailchimp.com/3.0/<endpoint>', { username: 'anystring', password: 'your_apikey' },
      function(err, resp) {
          // your code here...
    });
    

    编辑

    @TooMuchPete 是对的,SendMail 端点在 MailChimp API v3.0 中无效。我没有注意到这一点,我已经编辑了我的答案。

    【讨论】:

    • 'anystring' 是否需要是特定的,或者它可以是任何字符串。我已经尝试过了,但仍然出现 401 错误。
    • 所以这个解决了,我的用户名有错别字。
    • 虽然关于身份验证确实如此,但值得注意的是,SendEmail 不是有效的 API v3 端点。
    猜你喜欢
    • 2012-08-13
    • 2013-01-19
    • 2018-10-18
    • 2015-10-21
    • 2016-08-01
    • 2015-08-26
    • 2015-06-28
    • 2018-06-02
    • 2014-10-11
    相关资源
    最近更新 更多