2016-01-05 17 views
5

Ich versuche, meine erste E-Mail mit Sendgrid senden:Sendgrid API - Bad Benutzername/Passwort Fehler

$sendgrid = new SendGrid('username', 'xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx'); 
$email = new SendGrid\Email(); 

$email->addTo("[email protected]") 
     ->setFrom("[email protected]") 
     ->setSubject("Sending with SendGrid is Fun") 
     ->setHtml("and easy to do anywhere, even with PHP"); 

Hier ist der Fehler, den ich in laufen:

PHP Fatal error: Uncaught exception 'SendGrid\Exception' with message '{"errors":["Bad username/password"],"message":"error"}'


Statt von 'Benutzername' und 'xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx' Ich benutze natürlich echte API-Schlüssel-Informationen von Sendgrid-Einstellungen: enter image description here

Ich habe den langen String-Schlüssel verwendet, der nach dem Erstellen des API-Schlüssels bereitgestellt wurde. Aber mit dieser Zeile scheint noch etwas nicht in Ordnung zu sein: $ sendgrid = new SendGrid ('Benutzername', 'xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx');

Woher soll ich die Informationen für die Autorisierung bekommen, damit ich nicht den Fehler Bad username/password bekomme?

Antwort

8

Eine andere mögliche Antwort ist, nur den API-Schlüssel an den SendGrid() - Konstruktor zu übergeben;

$sendgrid = new SendGrid('xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx'); 
$email = new SendGrid\Email(); 

$email->addTo("[email protected]") 
     ->setFrom("[email protected]") 
     ->setSubject("Sending with SendGrid is Fun") 
     ->setHtml("and easy to do anywhere, even with PHP"); 
+1

Wenn das auch funktioniert und das Problem löst, würde ich diesen Konstruktor dringend empfehlen, weil a) Ihr Vollzugriff Benutzername und Passwort wird nicht in Ihrem Code oder möglicherweise durchgesickert und b) mit dem API-Schlüssel können Sie einen Schlüssel und setzen auch viel feinere Rechte. –

+2

Das ist die richtige Antwort, der Asker sollte nur ihren SendGrid-API-Schlüssel übergeben. Durch das Übergeben von zwei Zeichenfolgen denkt die SendGrid-Bibliothek, dass sie sich dafür entscheiden, einen Benutzernamen und ein Kennwort anstelle eines API-Schlüssels zu verwenden. –

3

Anstatt "Benutzername" zu verwenden, was der Name des API-Schlüssels ist, versuchen Sie Ihren SendGrid-Benutzernamen zu verwenden (den Benutzernamen, mit dem Sie sich im Dashboard anmelden usw.).

EDIT: Um es zu funktionieren, verwenden Sie auch Sendgrid-Kennwort anstelle von API-Schlüssel. Das hat für mich funktioniert.

EDIT 2: Während das Problem gelöst wurde, sollte man nur die API-Taste verwenden, wie in der ausgewählten Antwort erwähnt.

+0

Danke Justin! – Sergey

+0

Ich fügte eine weitere mögliche Antwort/Lösung hinzu. –

+0

Bitte verwenden Sie die andere Antwort/Lösung, die ich zur Verfügung gestellt habe. Vielen Dank. –

Verwandte Themen