✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP

35

Webbplatsägarna behöver regelbundet skicka e-post till våra användare. Om du använder PHP: s e-post() -funktion för att skicka e-postmeddelanden kommer du snart att inse att dina e-postmeddelanden slutar i skräppost och inte i användarens inkorg. Som ett resultat märker de flesta användare inte dina viktiga e-postmeddelanden. För att lösa detta problem måste du använda SMTP-servrar för att skicka dina e-postmeddelanden.

Gmail SMTP-server är ett ganska populärt val bland utvecklare. Men det finns två problem med den här Google-tjänsten. Först kunde du inte ställa in "från" -adressen när du skickade e-postmeddelandet. Gmail anger din e-postadress (Googles e-post-id) som avsändaradress. För det andra måste du aktivera inställningen "Tillåt mindre säkra appar" som inte rekommenderas av Google.

För att undvika dessa begränsningar hittade jag en alternativ lösning för Gmail SMTP-servern som är Mailjet. Mailjet är en e-postleveransservice för marknadsförings- och utvecklarteam. Vi kan enkelt skicka e-postmeddelanden med Mailjet i PHP. De tillhandahåller sitt eget e-post-API för att skjuta e-post. Du kan också använda deras SMTP-tjänst.

Komma igång

Mailjet tillhandahåller en kvot på 6000 gratis e-postmeddelanden per månad (200 e-postmeddelanden per dag). För små företag är denna fria kvot tillräcklig. Om ditt företag behöver fler e-postmeddelanden, kolla in deras prissida.

Under registreringsprocessen kommer du att bli ombedd att välja sändningsmetod. I denna handledning diskuterar vi både e-post-API och SMTP-relä, så för nu, plocka upp API-alternativet.

Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP

Följ nästa steg. Från skärmen nedan trycker du på knappen "Kom igång" under utvecklaravsnittet.

Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP

För att ta tag i dina API-nycklar, gå till ‘Kontoinställningar’. På nästa sida, under avsnittet REST API, klicka på "Master API-nyckel och Sub API-nyckelhantering". Kopiera API-nyckeln och den hemliga nyckeln som krävs i nästa steg.

Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP

Mailjet tillåter oss att ställa in avsändaradressen. Klicka på "Lägg till en avsändardomän eller adresser" under "Avsändare och domäner" och lägg till en avsändaradress på nästa sida.

Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP

Om du ställer in en annan adress än ditt kontos e-postmeddelande får du ett e-postmeddelande för verifiering.

Skicka e-post med Mailjet via cURL i PHP

Vi är redo med våra API-nycklar och redo att skicka e-post med Mailjet och cURL i PHP. Se till att du har aktiverat cURL på din server, annars fungerar följande kod inte som förväntat. Ersätt platshållarna med de faktiska värdena innan du kör koden nedan.

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

Skicka e-post med Mailjet via Guzzle i PHP

Du kanske vill använda Guzzle för att skicka dina e-postmeddelanden. Förmodligen körs din applikation på ett ramverk eller CMS där du använder en kompositör för att hantera bibliotek. I så fall skulle Guzzle vara ett bättre alternativ över CURL.

I dessa scenarier installerar du Guzzle-biblioteket genom att köra kommandot:

composer require guzzlehttp/guzzle

Efter att ha installerat biblioteket med hjälp av koden nedan kan du skicka e-postmeddelanden med Guzzle i 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.";
    }
}

Skicka e-post med hjälp av Mailjet SMTP-server och PHPMailer

I ovanstående steg diskuterade vi att använda Mailjet e-post-API för att skicka e-post. I det här avsnittet visar jag dig hur du använder Mailjet SMTP-servern för att skicka ett e-postmeddelande till användarna.

Klicka på ‘Konfigurera min SMTP’ från instrumentpanelen. På nästa sida får du alla SMTP-referenser.

Skicka e-post med Mailjet (alternativ till Gmail SMTP-server) i PHP

Låt oss se hur man använder SMTP-referenser i PHP och skickar ett e-postmeddelande. Först installerar du PHPMailer-biblioteket i ditt projekt genom att köra kommandot nedan:

composer require phpmailer/phpmailer

Skriv sedan koden nedan i din PHP-fil som skickar ett e-postmeddelande via dina SMTP-referenser.

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

Skicka e-post med hjälp av Mailjet SMTP-server och Swift Mailer

Liksom PHPMailer är Swift Mailer också ett populärt bibliotek som är användbart för att skicka ett e-postmeddelande med SMTP-servern. Du bör ha PHP version 7.0 eller högre för att skicka e-postmeddelanden med Swift Mailer-biblioteket. Installera Swift Mailer-biblioteket med kommandot:

composer require swiftmailer/swiftmailer

Vid installation av biblioteket kan du skicka e-postmeddelandet via koden nedan med hjälp av Mailjet SMTP-serveruppgifterna.

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

Ersätt platshållarna med de faktiska värdena och testa koden. Mottagaren borde ha fått e-postmeddelandet.

Slutsats

I den här guiden studerade vi Mailjets e-post-API och SMTP-relä. Vi diskuterade att skicka ett e-postmeddelande via Mailjet e-post-API med cURL och Guzzle. Mailjet tillhandahåller en SMTP-server så vi har skrivit en kod som använder Mailjet SMTP-servern och skickar ett e-postmeddelande till användarna. Så baserat på dessa tre alternativ kan användare välja något av alternativen beroende på deras projektbehov.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer