✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Надіслати електронну пошту за допомогою SMTP-сервера Gmail та бібліотеки Swift Mailer

47

Ви хочете надсилати свої електронні листи за допомогою SMTP-сервера Gmail? Коли ви використовуєте SMTP-сервер для своїх електронних листів, існує велика ймовірність, що ваші електронні листи надходитимуть в папку "Вхідні" користувача, а не в спам. SMTP-сервер запобігає позначенню ваших електронних листів як спаму. У цій статті ми вивчаємо, як надсилати електронну пошту за допомогою SMTP-сервера Gmail та бібліотеки Swift Mailer.

Як власник сайту ви завжди хочете, щоб ваша електронна пошта надходила прямо в папку "Вхідні" користувача, а не в спам чи сміття. Це збільшує ймовірність того, що користувач прочитає вашу електронну пошту та зробить бажану дію.

Навіщо потрібно використовувати сервер SMTP?

Для веб-сайту звичайно мати форму, яка надсилає електронне повідомлення користувачам або адміністраторам. Це може бути ваш бюлетень, контактна форма або процес реєстрації, де вам потрібно надіслати електронне повідомлення як підтвердження.

PHP забезпечує mail()функцію надсилання електронних листів. Однак, якщо ваш сервер неправильно налаштовує параметри пошти, цей спосіб не працює. Інша можливість полягає в тому, що коли ви надсилаєте електронні листи mail()методом, це може потрапити в спам.

Щоб подолати ці 2 ситуації, слід використовувати SMTP-сервер для надсилання електронних листів.

Використовуючи бібліотеку Swift Mailer, користувач може використовувати будь-який SMTP-сервер, такий як Gmail, Sendgrid, Mandrill або власний SMTP-сервер, що надається для надсилання електронних листів. У цьому посібнику я вибираю сервер SMTP Gmail.

Сказавши це, давайте подивимося, як використовувати бібліотеку Swift Mailer для надсилання електронних листів.

Установка швидкої розсилки

Для того, щоб використовувати бібліотеку Swift Mailer, на вашому сервері має бути PHP версії 7.2 або новішої. Якщо ви використовуєте стару версію, оновіть її до останньої версії PHP. Більшість хостинг-провайдерів, таких як Bluehost, оновлюють версію PHP за запитом. Вам не потрібно витрачати свій час на оновлення версії.

Надалі я рекомендую використовувати Composer для встановлення бібліотеки Swift Mailer. Відкрийте термінал у кореневому каталозі проекту та запустіть команду:

composer require swiftmailer/swiftmailer

Оскільки ми будемо використовувати Gmail SMTP, вам потрібно змінити деякі налаштування свого облікового запису Google. Увійдіть у свій обліковий запис Google і натисніть на Обліковий запис. Опинившись на сторінці облікового запису Google, натисніть на Безпека. Прокрутіть униз, і ви знайдете налаштування "Менш безпечний доступ до програми". Встановіть його на ON.

Надіслати електронну пошту за допомогою SMTP-сервера Gmail та бібліотеки Swift Mailer

Надіслати електронну пошту за допомогою SMTP-сервера Gmail та бібліотеки Swift Mailer

На цьому етапі ви готові до роботи з бібліотекою Swift Mailer, а також змінили налаштування облікового запису Gmail. Тепер вам добре йти вперед.

Скажімо, у вас є файл, sendmail.phpде вам потрібно написати код, який надсилає електронні листи. Напишіть код нижче у своєму PHP-файлі.

sendmail.php

<?php
require_once 'vendor/autoload.php';
 
try {
    // Create the Transport
    $transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
      ->setUsername('YOUR_GMAIL_USERNAME')
      ->setPassword('YOUR_GMAIL_PASSWORD')
    ;
 
    // Create the Mailer using your created Transport
    $mailer = new Swift_Mailer($transport);
 
    // Create a message
    $body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
 
    $message = (new Swift_Message('Email Through Swift Mailer'))
      ->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
      ->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
      ->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
      ->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
      ->setBody($body)
      ->setContentType('text/html')
    ;
 
    // Send the message
    $mailer->send($message);
 
    echo 'Email has been sent.';
} catch(Exception $e) {
    echo $e->getMessage();
}

У наведеному вище коді я передав наведені нижче значення для налаштувань SMTP-сервера Gmail.

  • Адреса сервера SMTP Google: smtp.googlemail.com
  • SMTP-порт Gmail: 465
  • Шифрування: ssl

Окрім цих значень, вам потрібно змінити інші заповнювачі, такі як YOUR_GMAIL_USERNAME, YOUR_GMAIL_PASSWORD тощо.

Після заміни всіх значень запустіть цей файл у браузері. Ви повинні отримувати електронний лист у папці "Вхідні", а не в спамі.

Надіслати по електронній пошті окремі або кілька вкладень

Іноді вам може знадобитися надіслати вкладення в електронному листі. За допомогою Swift Mailer ви можете надсилати одне або кілька вкладень таким чином:

$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png')); //absolute path for your attachment
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'));

Все, що вам потрібно зробити, це використати attachметод і передати абсолютний шлях до файлу, який потрібно надіслати як вкладення. Тут я припускаю, що вам потрібно надіслати ‘sample.png’ та ‘sample-ebook.pdf’ як вкладення.

Отже, наш остаточний код такий.

sendmail.php

<?php
require_once 'vendor/autoload.php';
 
try {
    // Create the Transport
    $transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
      ->setUsername('YOUR_GMAIL_USERNAME')
      ->setPassword('YOUR_GMAIL_PASSWORD')
    ;
 
    // Create the Mailer using your created Transport
    $mailer = new Swift_Mailer($transport);
 
    // Create a message
    $body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
 
    $message = (new Swift_Message('Email Through Swift Mailer'))
      ->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
      ->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
      ->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
      ->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
      ->setBody($body)
      ->setContentType('text/html')
      ->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png'))
      ->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'))
    ;
 
    // Send the message
    $mailer->send($message);
 
    echo 'Email has been sent.';
} catch(Exception $e) {
    echo $e->getMessage();
}

Вся справа в надсиланні електронної пошти через бібліотеку Swift Mailer. Ви також можете використовувати Symfony Swift Mailer для надсилання повідомлень через кілька SMTP-серверів, таких як Mailgun, Mandrill тощо. Я хотів би почути ваші думки та пропозиції в розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі