Mit Laravel 5, wie finde ich heraus, ob ein Mailgun-E-Mail wurde erfolgreich gesendet?

Bin ich mit dem native Mailgun-Treiber in Laravel 5 zum senden einer E-Mail

\Mail::send('emails.notification', $data, function($message) use ($data)
{
  $message->to('[email protected]', 'Joe Bob')->subject("Headline here");
});

Gut funktioniert und die E-Mails werden empfangen, aber ich würde gerne wissen, wie kann ich eine Antwort bekommen von Mailgun, lassen Sie mich wissen, dass die E-Mail gesendet wurde.

Wie kann ich darum, diese information?

InformationsquelleAutor zeckdude | 2016-03-03



2 Replies
  1. 2

    Dachte ich, die Lösung und es ist eigentlich ganz einfach.

    Mit Laravel (Mit der Bogardo Mailgun-Paket):

    $to_name = "Jim Bob";
    $to_email = "[email protected]";
    $subject = "Howdy everyone!";
    
    //Send the email and capture the response from the Mailgun server
    $response = Mailgun::send('emails.transactional', array('body' => $body), function($message) use($to_email, $to_name, $subject)
    {
      $message->to($to_email, $to_name)->subject($subject);
    });
    
    //HTTP Response Code 200 means everything worked as expected
    if ($response->http_response_code === 200) {
      echo "Woohoo! The message sent!";
    }


    In plain ol‘ PHP (Über die offizielle Mailgun PHP-SDK):

    //Config Information
    $mailgun = new Mailgun("key-v876876dfsv876csd8768d876cfsd4");
    $domain = "mg.mydomain.com";
    
    //Prepare the necessary information to send the email
    $send_data = array(
      'from' => $from_name . ' <' . $from_email . '>',
      'to' => $to_name . ' <' . $to_email . '>',
      'subject' => $subject,
      'html' => $html
    );
    
    //Send the email and capture the response from the Mailgun server
    $response = $mailgun->sendMessage($domain, $send_data);
    
    //HTTP Response Code 200 means everything worked as expected
    if ($response->http_response_code === 200) {
      echo "Woohoo! The message sent!";
    }

    Schauen Sie sich eine Liste aller Mailgun HTTP-Antwort-Codes: (https://documentation.mailgun.com/api-intro.html?highlight=401#errors)

  2. 1

    Wissen, den status der E-Mail können Sie Mailgun webhooks. Aus der Mailgun-admin-Bereich können Sie einen webhook url, die Mailgun-post zu, nachdem Sie bearbeitet haben, ist Ihre E-Mail.

    Sicherzustellen, dass alle url, die Sie verwenden, wie ein webhook in der Anwendung vorhanden ist und hat die route und die Methode, in welcher controller Sie verwenden. Sobald Sie Ihre Anwendung empfängt die gesendeten Daten können Sie analysieren die Daten, die gesendet und bestimmen Sie den status der E-Mail. Sie können dann aktualisieren Sie Ihre Datenbank oder was auch immer Sie tun müssen.

    Identifizieren, welche E-Mail Sie müssen hinzufügen einige benutzerdefinierte Header in die E-Mail-so erkennen Sie es später.

    finden Sie diese Antwort für weitere Einzelheiten über, wie das geht: Mit Laravel die Mailgun-Treiber, wie Sie (ordnungsgemäß) senden von eigenen Daten und tags mit Ihrer E-Mail?

    Den webhook url braucht, um sein Leben für ihn zu arbeiten, so dass, wenn Sie den Test lokal mit laravell homestead können Sie einen Blick auf ngrok, die Ihnen erlaubt, einen tunnel in Ihrem lokalen Umfeld zu einer url, die Arbeit für Testzwecke.

    • Vielen Dank für deine Antwort, aber glücklicherweise ist es gar nicht so schwierig. Webhooks sind ideal für die fortgeschrittenen Dinge, aber nicht notwendig, nur, um einen Erfolg Antwort von Mailgun. Bitte Lesen Sie meine Antwort, die ich gepostet.
    • Hat der 200-Antwort nicht darauf hin, dass Mailgun hat Ihre Anfrage erhalten erfolgreich, Mailgun gehen Sie dann auf, um die E-Mail-Angabe status geliefert, scheiterte, prallte etc auf jede mail. Ich bin mir nicht 100% sicher, dass es erfolgreich ist mit Ihrer Methode. Vielleicht könnten Sie versuchen, senden Sie eine E-Mail-Adresse, die nicht existiert und wenn, es gibt eine 200-response überprüfen Sie mailgun-Protokolle, die würde zeigte fehlgeschlagen senden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.