...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Saada e-kirju PHP-s Mailjeti (alternatiiv Gmaili SMTP-serverile) abil

20

Veebisaitide omanikud peavad regulaarselt saatma meie kasutajatele e-kirju. Kui kasutate e-kirjade saatmiseks PHP funktsiooni mail(), saate varsti aru, et teie meilid lõpevad rämpsposti ja mitte kasutaja postkastis. Seetõttu ei märka enamik kasutajaid teie olulisi e-kirju. Selle probleemi lahendamiseks peate oma meilide saatmiseks kasutama SMTP-servereid.

Gmaili SMTP-server on arendajate seas üsna populaarne valik. Kuid selle Google’i teenuse kasutamisel on 2 probleemi. Esiteks ei saanud meili saatmise ajal määrata aadressi ‘alates’. Gmail määras saatja aadressiks teie e-posti aadressi (Google’i e-posti aadressi). Teiseks peate sisse lülitama sätte „lubada vähem turvalisi rakendusi", mida Google ei soovita.

Nende piirangute vältimiseks leidsin Gmaili SMTP-serveri jaoks alternatiivse lahenduse, milleks on Mailjet. Mailjet on turundus- ja arendusmeeskondade e-posti kohaletoimetamise teenus. Saame PHP-s Mailjeti abil hõlpsasti e-kirju saata. Nad pakuvad meilide salvestamiseks oma e-posti API-d. Võite kasutada ka nende SMTP-teenust.

Alustamine

Mailjet pakub kvoodi 6000 tasuta e-kirja kuus (200 meili päevas). Väikeettevõtete jaoks on see tasuta kvoot piisav. Kui teie ettevõte vajab rohkem e-kirju, vaadake nende hinnakujunduslehte.

Registreerumise käigus palutakse teil valida saatmisviis. Selles õpetuses käsitleme nii e-posti API-d kui ka SMTP-relee, nii et nüüd valige API-valik.

Saada e-kirju PHP-s Mailjeti (alternatiiv Gmaili SMTP-serverile) abil

Järgige järgmisi samme. Altpoolt ekraanilt vajutage arendaja jaotises nuppu "Alustage".

Saada e-kirju PHP-s Mailjeti (alternatiiv Gmaili SMTP-serverile) abil

API-võtmete haaramiseks minge jaotisse „Konto seaded”. Järgmisel lehel klõpsake jaotises REST API jaotisel „Põhi-API võtme ja alam-API võtme haldamine”. Kopeerige järgmistes toimingutes vajalikud API-võti ja salajane võti.

Saada e-kirju PHP-s Mailjeti (alternatiiv Gmaili SMTP-serverile) abil

Mailjet võimaldab meil määrata saatja aadressi. Klõpsake jaotises „Saatjad ja domeenid” nuppu „Lisa saatja domeen või aadressid” ja järgmisel lehel lisage saatja aadress.

Saada e-kirju PHP-s Mailjeti (alternatiiv Gmaili SMTP-serverile) abil

Kui määrate aadressi, mis pole teie konto e-posti aadress, saate kinnitamiseks meili.

E-kirja saatmine Mailjeti abil PHUR-is cURL-i kaudu

Oleme valmis oma API-võtmetega ja valmis oma e-kirju saatma, kasutades PHP-s Mailjet ja cURL. Veenduge, et teie serveris oleks CURL lubatud, muidu järgmine kood ei tööta ootuspäraselt. Enne alloleva koodi käivitamist asendage kohatäited tegelike väärtustega.

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

E-kirja saatmine Mailjeti abil PHP-s Guzzle’i kaudu

Võite oma e-kirjade saatmiseks kasutada Guzzle’i. Tõenäoliselt töötab teie rakendus raamistikus või CMS-is, kus kasutate teekide haldamiseks heliloojat. Sel juhul oleks Guzzle parem valik kui CURL.

Selle stsenaariumi korral installige Guzzle’i teek käsu abil:

composer require guzzlehttp/guzzle

Pärast teegi installimist saate alloleva koodi abil e-kirju saata PHP-s Guzzle’i abil.

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

E-kirja saatmine Mailjeti SMTP-serveri ja PHPMaileri abil

Eespool toodud sammudes arutasime Mailjeti e-posti API kasutamist meilide saatmiseks. Selles jaotises näitan teile, kuidas kasutada Mailjeti SMTP-serverit kasutajatele meilisõnumite saatmiseks.

Juhtpaneelil klõpsake nuppu "Minu SMTP seadistamine". Järgmisel lehel saate kõik SMTP mandaadid.

Saada e-kirju PHP-s Mailjeti (alternatiiv Gmaili SMTP-serverile) abil

Vaatame, kuidas PHTP-s SMTP-mandaate kasutada ja meilisõnumeid saata. Esmalt installige PHPMaileri teek oma projekti, käivitades alloleva käsu:

composer require phpmailer/phpmailer

Järgmisena kirjutage allolev kood oma PHP-faili, mis saadab teie SMTP-mandaadi kaudu meili.

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

E-kirja saatmine Mailjeti SMTP-serveri ja Swift Maileri abil

Nagu PHPMailer, on ka Swift Mailer populaarne teek, mis on kasulik e-kirjade saatmiseks SMTP-serveri abil. Swift Maileri teegi abil meilide saatmiseks peaks teil olema PHP versioon 7.0 või uuem. Installige Swift Maileri teek käsuga:

composer require swiftmailer/swiftmailer

Teegi installimisel saate Mailjeti SMTP-serveri mandaate kasutades meili saata alloleva koodi kaudu.

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

Asendage kohatäited tegelike väärtustega ja testige koodi. Saaja oleks pidanud meili saama.

Järeldus

Selles õpetuses uurisime Mailjeti e-posti API-d ja SMTP-relee. Arutasime meilisõnumi saatmist Mailjeti e-posti API kaudu, kasutades selleks cURL ja Guzzle. Mailjet pakub SMTP-serverit, nii et oleme kirjutanud koodi, mis kasutab Mailjeti SMTP-serverit ja saadab kasutajatele e-kirja. Nendest 3 võimalusest lähtuvalt saavad kasutajad valida ükskõik millise võimaluse, sõltuvalt oma projekti nõudest.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem