✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Senden Sie E-Mails mit Mailjet (Alternative zum Gmail-SMTP-Server) in PHP

35

Die Website-Betreiber müssen regelmäßig E-Mails an unsere Benutzer senden. Wenn Sie die mail()-Funktion von PHP zum Versenden von E-Mails verwenden, werden Sie bald feststellen, dass Ihre E-Mails im Spam enden und nicht im Posteingang des Benutzers. Infolgedessen bemerken die meisten Benutzer Ihre wichtigen E-Mails nicht. Um dieses Problem zu beheben, müssen Sie SMTP-Server verwenden, um Ihre E-Mails zu senden.

Der Gmail-SMTP-Server ist bei Entwicklern eine sehr beliebte Wahl. Es gibt jedoch 2 Probleme bei der Verwendung dieses Google-Dienstes. Erstens konnten Sie beim Senden der E-Mail die Absenderadresse nicht festlegen. Gmail hat Ihre E-Mail-Adresse (Google E-Mail-ID) als Absenderadresse festgelegt. Zweitens müssen Sie die von Google nicht empfohlene Einstellung "Weniger sichere Apps zulassen" aktivieren.

Um diese Einschränkungen zu vermeiden, habe ich eine alternative Lösung für den Gmail-SMTP-Server gefunden, nämlich Mailjet. Mailjet ist ein E-Mail-Zustelldienst für Marketing- und Entwicklerteams. Wir können ganz einfach E-Mails mit Mailjet in PHP versenden. Sie bieten ihre eigene E-Mail-API, um E-Mails zu verschießen. Sie können auch ihren SMTP-Dienst verwenden.

Einstieg

Mailjet bietet ein Kontingent von 6000 kostenlosen E-Mails pro Monat (200 E-Mails pro Tag). Für kleine Unternehmen ist dieses kostenlose Kontingent ausreichend. Wenn Ihr Unternehmen mehr E-Mails benötigt, sehen Sie sich die Preisseite an.

Während des Anmeldevorgangs werden Sie aufgefordert, die Versandmethode auszuwählen. In diesem Tutorial besprechen wir sowohl die E-Mail-API als auch das SMTP-Relay, also nehmen Sie vorerst die API-Option auf.

Senden Sie E-Mails mit Mailjet (Alternative zum Gmail-SMTP-Server) in PHP

Folgen Sie den nächsten Schritten. Klicken Sie im unteren Bildschirm auf die Schaltfläche "Erste Schritte" im Entwicklerbereich.

Senden Sie E-Mails mit Mailjet (Alternative zum Gmail-SMTP-Server) in PHP

Um Ihre API-Schlüssel abzurufen, gehen Sie zu "Kontoeinstellungen". Klicken Sie auf der nächsten Seite im Abschnitt REST-API auf "Verwaltung des Haupt-API-Schlüssels und des Unter-API-Schlüssels". Kopieren Sie den API-Schlüssel und den geheimen Schlüssel, die in den nächsten Schritten benötigt werden.

Senden Sie E-Mails mit Mailjet (Alternative zum Gmail-SMTP-Server) in PHP

Mailjet ermöglicht es uns, die Absenderadresse festzulegen. Klicken Sie unter ‘Absender & Domains’ auf ‘Absender-Domain oder -Adressen hinzufügen’ und fügen Sie auf der nächsten Seite eine Absender-Adresse hinzu.

Senden Sie E-Mails mit Mailjet (Alternative zum Gmail-SMTP-Server) in PHP

Wenn Sie eine andere Adresse als Ihre Konto-E-Mail-Adresse festlegen, erhalten Sie eine E-Mail zur Überprüfung.

Senden Sie E-Mails mit Mailjet über cURL in PHP

Wir sind mit unseren API-Schlüsseln fertig und können unsere E-Mails mit Mailjet und cURL in PHP senden. Stellen Sie sicher, dass cURL auf Ihrem Server aktiviert ist, sonst funktioniert der folgende Code nicht wie erwartet. Ersetzen Sie die Platzhalter durch die tatsächlichen Werte, bevor Sie den folgenden Code ausführen.

<?php
$body = [
    'Messages' => [
        [
        'From' => [
            'Email' => "SENDER_EMAIL_ADDRESS",
            'Name' => "SENDER_NAME"
        ],
        'To' => [
            [
                'Email' => "RECIPIENT_EMAIL_ADDRESS",
                'Name' => "RECIPIENT_NAME"
            ]
        ],
        'Subject' => "Greetings from Mailjet.",
        'HTMLPart' => "<h3>Dear User, welcome to Mailjet!</h3><br />May the delivery force be with you!"
        ]
    ]
];
  
$ch = curl_init();
  
curl_setopt($ch, CURLOPT_URL, "https://api.mailjet.com/v3.1/send");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json')
);
curl_setopt($ch, CURLOPT_USERPWD, "API_KEY:SECRET_KEY");
$server_output = curl_exec($ch);
curl_close ($ch);
  
$response = json_decode($server_output);
if ($response->Messages[0]->Status == 'success') {
    echo "Email sent successfully.";
}

Senden Sie E-Mails mit Mailjet über Guzzle in PHP

Vielleicht möchten Sie Guzzle verwenden, um Ihre E-Mails zu senden. Wahrscheinlich läuft Ihre Anwendung auf einem Framework oder CMS, in dem Sie einen Composer zum Verwalten von Bibliotheken verwenden. In diesem Fall wäre Guzzle eine bessere Option als cURL.

Installieren Sie in diesen Szenarien die Guzzle-Bibliothek, indem Sie den folgenden Befehl ausführen:

composer require guzzlehttp/guzzle

Nach der Installation der Bibliothek können Sie mit dem folgenden Code E-Mails mit Guzzle in PHP senden.

<?php
require_once "vendor/autoload.php";
  
use GuzzleHttpClient;
  
$body = [
    'Messages' => [
        [
        'From' => [
            'Email' => "SENDER_EMAIL_ADDRESS",
            'Name' => "SENDER_NAME"
        ],
        'To' => [
            [
                'Email' => "RECIPIENT_EMAIL_ADDRESS",
                'Name' => "RECIPIENT_NAME"
            ]
        ],
        'Subject' => "Greetings from Mailjet.",
        'HTMLPart' => "<h3>Dear User, welcome to Mailjet!</h3><br />May the delivery force be with you!"
        ]
    ]
];
  
$client = new Client([
    // Base URI is used with relative requests
    'base_uri' => 'https://api.mailjet.com/v3.1/',
]);
  
$response = $client->request('POST', 'send', [
    'json' => $body,
    'auth' => ['API_KEY', 'SECRET_KEY']
]);
  
if($response->getStatusCode() == 200) {
    $body = $response->getBody();
    $response = json_decode($body);
    if ($response->Messages[0]->Status == 'success') {
        echo "Email sent successfully.";
    }
}

Senden Sie E-Mails mit Mailjet SMTP Server und PHPMailer

In den obigen Schritten haben wir die Verwendung der Mailjet-E-Mail-API zum Senden von E-Mails besprochen. In diesem Abschnitt zeige ich Ihnen, wie Sie mit dem Mailjet SMTP-Server eine E-Mail an Benutzer senden.

Klicken Sie im Dashboard auf „Mein SMTP einrichten”. Auf der nächsten Seite erhalten Sie alle SMTP-Anmeldeinformationen.

Senden Sie E-Mails mit Mailjet (Alternative zum Gmail-SMTP-Server) in PHP

Sehen wir uns an, wie Sie SMTP-Anmeldeinformationen in PHP verwenden und eine E-Mail senden. Installieren Sie zunächst die PHPMailer-Bibliothek in Ihrem Projekt, indem Sie den folgenden Befehl ausführen:

composer require phpmailer/phpmailer

Schreiben Sie als Nächstes den folgenden Code in Ihre PHP-Datei, der eine E-Mail über Ihre SMTP-Anmeldeinformationen sendet.

<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
  
require_once "vendor/autoload.php";
  
$mail = new PHPMailer(true);
  
try {
    $mail->isSMTP();
    $mail->Host = 'MAILJET_SMTP_SERVER'; // host
    $mail->SMTPAuth = true;
    $mail->Username = 'API_KEY'; //username
    $mail->Password = 'SECRET_KEY'; //password
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587; //smtp port
    
    $mail->setFrom('SENDER_EMAIL_ADDRESS', 'SENDER_NAME');
    $mail->addAddress('RECIPIENT_EMAIL_ADDRESS', 'RECIPIENT_NAME');
  
    $mail->isHTML(true);
    $mail->Subject = 'Email Subject';
    $mail->Body    = '<b>Email Body</b>';
  
    $mail->send();
    echo 'Email has been sent.';
} catch (Exception $e) {
    echo 'Email could not be sent. Mailer Error: '. $mail->ErrorInfo;
}

Senden Sie E-Mails mit Mailjet SMTP Server und Swift Mailer

Wie PHPMailer ist auch Swift Mailer eine beliebte Bibliothek, die zum Senden einer E-Mail über den SMTP-Server nützlich ist. Sie sollten PHP-Version 7.0 oder höher haben, um E-Mails mit der Swift Mailer-Bibliothek zu senden. Installieren Sie die Swift Mailer-Bibliothek mit dem Befehl:

composer require swiftmailer/swiftmailer

Nach der Installation der Bibliothek können Sie die E-Mail mit den Mailjet SMTP-Server-Anmeldeinformationen über den untenstehenden Code senden.

<?php
require_once 'vendor/autoload.php';
  
try {
    // Create the Transport
    $transport = (new Swift_SmtpTransport('MAILJET_SMTP_SERVER', 587, 'tls'))
      ->setUsername('API_KET')
      ->setPassword('SECRET_KEY')
    ;
  
    // Create the Mailer using your created Transport
    $mailer = new Swift_Mailer($transport);
  
    // Create a message
    $body = '<b>Email Body</b>';
  
    $message = (new Swift_Message('Email Subject'))
      ->setFrom(['SENDER_EMAIL_ADDRESS' => 'SENDER_NAME'])
      ->setTo(['RECIPIENT_EMAIL_ADDRESS'])
      ->setBody($body)
      ->setContentType('text/html')
    ;
  
    // Send the message
    $mailer->send($message);
  
    echo 'Email has been sent.';
} catch(Exception $e) {
    echo $e->getMessage();
}

Ersetzen Sie die Platzhalter durch die tatsächlichen Werte und testen Sie den Code. Der Empfänger sollte die E-Mail erhalten haben.

Fazit

In diesem Tutorial haben wir die E-Mail-API und das SMTP-Relay von Mailjet untersucht. Wir haben das Senden einer E-Mail über die Mailjet-E-Mail-API mit cURL und Guzzle besprochen. Mailjet stellt einen SMTP-Server bereit, daher haben wir einen Code geschrieben, der den Mailjet-SMTP-Server verwendet und eine E-Mail an die Benutzer sendet. Basierend auf diesen 3 Optionen können Benutzer je nach Projektanforderung eine der Optionen auswählen.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen