✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Wyślij e-mail za pomocą Mailjet (alternatywa dla serwera SMTP Gmail) w PHP

93

Właściciele witryn muszą regularnie wysyłać e-maile do naszych użytkowników. Jeśli używasz funkcji mail() PHP do wysyłania e-maili, wkrótce zorientujesz się, że Twoje e-maile kończą się w spamie, a nie w skrzynce odbiorczej użytkownika. W rezultacie większość użytkowników nie zauważa Twoich ważnych e-maili. Aby rozwiązać ten problem, musisz używać serwerów SMTP do wysyłania wiadomości e-mail.

Serwer SMTP Gmaila jest dość popularnym wyborem wśród programistów. Ale są 2 problemy z korzystaniem z tej usługi Google. Po pierwsze, nie można było ustawić adresu nadawcy podczas wysyłania e-maila. Gmail ustaw swój adres e-mail (identyfikator e-mail Google) jako adres nadawcy. Po drugie, musisz włączyć ustawienie „Zezwalaj na mniej bezpieczne aplikacje", które nie jest zalecane przez Google.

Aby uniknąć tych ograniczeń, znalazłem alternatywne rozwiązanie dla serwera SMTP Gmaila, którym jest Mailjet. Mailjet to usługa dostarczania poczty e-mail dla zespołów marketingowych i programistów. Możemy łatwo wysyłać e-maile za pomocą Mailjet w PHP. Zapewniają własny interfejs API poczty e-mail do strzelania e-maili. Możesz również skorzystać z ich usługi SMTP.

Pierwsze kroki

Mailjet zapewnia limit 6000 bezpłatnych e-maili miesięcznie (200 e-maili dziennie). Dla małych firm ten bezpłatny limit jest wystarczający. Jeśli Twoja firma potrzebuje więcej e-maili, sprawdź ich stronę z cennikiem.

Podczas procesu rejestracji zostaniesz poproszony o wybranie metody wysyłki. W tym samouczku omawiamy zarówno Email API, jak i przekaźnik SMTP, więc na razie wybierz opcję API.

Wyślij e-mail za pomocą Mailjet (alternatywa dla serwera SMTP Gmail) w PHP

Wykonaj kolejne kroki. Na poniższym ekranie kliknij przycisk „Rozpocznij” w sekcji programisty.

Wyślij e-mail za pomocą Mailjet (alternatywa dla serwera SMTP Gmail) w PHP

Aby pobrać klucze API, przejdź do „Ustawienia konta”. Na następnej stronie, w sekcji REST API, kliknij „Zarządzanie kluczami Master API i Sub API”. Skopiuj klucz API i klucz tajny, które są wymagane w kolejnych krokach.

Wyślij e-mail za pomocą Mailjet (alternatywa dla serwera SMTP Gmail) w PHP

Mailjet pozwala nam ustawić adres nadawcy. W sekcji „Nadawcy i domeny” kliknij „Dodaj domenę lub adresy nadawcy”, a na następnej stronie dodaj adres nadawcy.

Wyślij e-mail za pomocą Mailjet (alternatywa dla serwera SMTP Gmail) w PHP

Jeśli ustawiasz adres inny niż e-mail konta, otrzymasz wiadomość e-mail do weryfikacji.

Wyślij e-mail za pomocą Mailjet przez cURL w PHP

Jesteśmy gotowi z naszymi kluczami API i gotowi do wysłania naszego e-maila za pomocą Mailjet i cURL w PHP. Upewnij się, że masz włączony cURL na swoim serwerze, w przeciwnym razie poniższy kod nie będzie działał zgodnie z oczekiwaniami. Zastąp symbole zastępcze rzeczywistymi wartościami przed uruchomieniem poniższego kodu.

<?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.";
}

Wyślij e-mail za pomocą Mailjet przez Guzzle w PHP

Możesz użyć Guzzle do wysyłania e-maili. Prawdopodobnie Twoja aplikacja działa na frameworku lub CMS, w którym używasz Composera do zarządzania bibliotekami. W takim przypadku Guzzle byłby lepszą opcją niż cURL.

W tych scenariuszach zainstaluj bibliotekę Guzzle, uruchamiając polecenie:

composer require guzzlehttp/guzzle

Po zainstalowaniu biblioteki, korzystając z poniższego kodu, możesz wysyłać e-maile za pomocą Guzzle w PHP.

<?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.";
    }
}

Wyślij e-mail za pomocą serwera Mailjet SMTP i PHPMailer

W powyższych krokach omówiliśmy użycie interfejsu API poczty e-mail Mailjet do wysyłania wiadomości e-mail. W tej sekcji pokażę, jak używać serwera Mailjet SMTP do wysyłania wiadomości e-mail do użytkowników.

W panelu kliknij „Skonfiguruj moje SMTP”. Na następnej stronie otrzymasz wszystkie dane uwierzytelniające SMTP.

Wyślij e-mail za pomocą Mailjet (alternatywa dla serwera SMTP Gmail) w PHP

Zobaczmy, jak używać poświadczeń SMTP w PHP i wysyłać e-maile. Najpierw zainstaluj bibliotekę PHPMailer w swoim projekcie, uruchamiając poniższe polecenie:

composer require phpmailer/phpmailer

Następnie wpisz poniższy kod w pliku PHP, który wyśle ​​wiadomość e-mail za pośrednictwem Twoich danych logowania SMTP.

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

Wyślij e-mail za pomocą serwera Mailjet SMTP i Swift Mailer

Podobnie jak PHPMailer, Swift Mailer jest również popularną biblioteką przydatną do wysyłania wiadomości e-mail za pomocą serwera SMTP. Aby wysyłać e-maile za pomocą biblioteki Swift Mailer, powinieneś mieć PHP w wersji 7.0 lub nowszej. Zainstaluj bibliotekę Swift Mailer za pomocą polecenia:

composer require swiftmailer/swiftmailer

Po zainstalowaniu biblioteki, używając poświadczeń serwera Mailjet SMTP, możesz wysłać wiadomość e-mail za pomocą poniższego kodu.

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

Zastąp symbole zastępcze rzeczywistymi wartościami i przetestuj kod. Odbiorca powinien był otrzymać wiadomość e-mail.

Wniosek

W tym samouczku omówiliśmy interfejs API poczty e-mail i przekaźnik SMTP firmy Mailjet. Rozmawialiśmy o wysyłaniu wiadomości e-mail przez Mailjet email API za pomocą cURL i Guzzle. Mailjet udostępnia serwer SMTP, więc napisaliśmy kod, który wykorzystuje serwer SMTP Mailjet i wysyła wiadomość e-mail do użytkowników. Tak więc, w oparciu o te 3 opcje, użytkownicy mogą wybrać dowolną z opcji w zależności od wymagań projektu.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów