2016-04-12 7 views
2

Ich erstelle eine App in nodejs, um eine E-Mail mit MailChimp zu senden. Ich habe versucht, https://apidocs.mailchimp.com/sts/1.0/sendemail.func.php zu verwenden, aber änderte es, um 3.0 API zu verwenden, weil 1.0 scheint, nicht mehr zu arbeiten (große Überraschung). Ich habe Setup meine app mitSo senden Sie eine E-Mail mit der MailChimp-API

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); 
    } 
}); 

Ich halte eine 401-Antwort bekommen (nicht autorisiert, weil ich nicht die API-Schlüssel richtig Senden)

Ich habe Nadel zu verwenden, aufgrund der Beschränkungen auf dem Server .

Antwort

1

In API v3.0 gibt es keinen Endpunkt "SendEmail". Der STS von MailChimp war ein Vorläufer seines Mandrill-Transaktionsdienstes und funktioniert möglicherweise nur noch für Benutzerkonten mit vorhandenen STS-Kampagnen. Es können keine neuen STS-Kampagnen erstellt werden. Wenn Sie einen monatlichen, bezahlten MailChimp-Account haben, sollten Sie sich Mandrill ansehen. Wenn nicht, hatte ich Glück mit Mailgun.

+0

Dies ist die richtige Antwort. Es sollte auch erwähnt werden, dass, selbst wenn dies funktioniert, ich die Authentifizierung nicht korrekt eingerichtet habe. @micia erwähnt die korrekte Einrichtung der Authentifizierung. –

+0

Bevor ich eine neue Frage beginne, irgendeine Idee, warum dies eine 405 zurückgeben würde (Methode nicht erlaubt) var apiKey = '<>', url = 'https://us13.api.mailchimp.com/3.0/campaigns/ <>/Aktionen/senden '; try { needle.post (url, {username: 'anystring', Passwort: apikey}, Funktion (err, headers) { if (err) { console.error (err); } console.log (headers); –

+0

Method Not Allowed ist ein [Standard-HTTP-Fehler] (http://www.checkupdown.com/status/E405.html) Dies bedeutet, dass die HTTP-Methode, die Sie verwenden (in diesem Fall POST) nicht gültig für die ausgewählte Ressource MailChimp verwendet HTTP-Methoden, um zwischen Vorgängen zu unterscheiden: POST für create, GET for read usw. Wie Sie das Problem beheben können, hängt davon ab, was Sie tun möchten, aber Sie möchten es entweder Verwenden Sie eine andere Methode (PATCH oder GET) oder verwenden Sie einen anderen Endpunkt (wie/campaigns /) – TooMuchPete

0

Sie sollten die HTTP-Standardauthentifizierung in MailChimp API 3.0 verwenden.

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

EDIT

@TooMuchPete ist richtig, die SendMail Endpunkt in MailChimp API v3.0 nicht gültig ist. Ich habe das nicht bemerkt und meine Antwort bearbeitet.

+0

Muss "anystring" etwas Spezifisches sein oder kann es buchstäblich eine beliebige Zeichenfolge sein? Ich habe das versucht, aber ich bekomme immer noch einen 401 Fehler. –

+0

Also dies behoben, ich hatte einen Tippfehler in Benutzername. –

+0

Dies gilt zwar für die Authentifizierung, es ist jedoch zu beachten, dass SendEmail kein gültiger API v3-Endpunkt ist. – TooMuchPete