Laravel — Відправка електронної пошти

21

Від автора: в Laravel відправка пошти відбувається з використанням безкоштовної багатофункціональної бібліотеки SwiftMailer . З допомогою функцій цієї бібліотеки, ми можемо без проблем відправляти електронні листи. Шаблони електронної пошти завантажуються так само, як і уявлення, це означає, що ви можете використовувати синтаксис Blade і вводити в свої шаблони дані. Нижче наведено синтаксис функції send.

Laravel — Відправка електронної пошти

У третьому аргументі завершення $callback отримує примірник електронного листа, і з допомогою цього примірника ми також можемо викликати наступні функції і змінювати електронний лист, як показано нижче.

$message->subject(‘Welcome to the Tutorials Point’);

$message->from(’[email protected]’, ‘Mr. Example’);

$message->to(’[email protected]’, ‘Mr. Example’);

Також використовуються інші менш поширені методи:

$message->sender(’[email protected]’, ‘Mr. Example’);

$message->returnPath(’[email protected]’);

$message->cc(’[email protected]’, ‘Mr. Example’);

$message->bcc(’[email protected]’, ‘Mr. Example’);

$message->replyTo(’[email protected]’, ‘Mr. Example’);

$message->priority(2);

Для прикріплення або вбудовування файлів, ви можете використовувати наступні методи:

$message->attach(‘path/to/attachment.txt’);

$message->embed(‘path/to/attachment.jpg’);

Електронний лист може бути надіслано у форматі HTML або звичайний текст. Ви можете вказати тип письма у першому аргументі, передавши через нього масив, як показано нижче. Тип за умовчанням — HTML. Якщо ви хочете відправити звичайне текстове лист, використовуйте наступний синтаксис.

Mail: send([‘text’=>’text.view’], $data, $callback);

Тут перший аргумент приймає масив. Використовуйте «text» в якості ключа, а ім’я подання «name of the view» в якості значення ключа.

Приклад

Крок 1 — Тепер ми відправимо електронний лист через обліковий запис Gmail. Для цього вам потрібно налаштувати обліковий запис Gmail в файлі середовища Laravel .env . Увімкніть двоетапну перевірку свого облікового запису Gmail і створіть спеціальний пароль додатки, а потім змініть параметри .env, як показано нижче.

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Крок 2. Після зміни файлу .env виконайте наступні дві команди, щоб очистити кеш і перезапустити сервер Laravel.

php artisan config:cache

Крок 3 — Створіть контролер з ім’ям MailController, виконавши наступну команду.

php artisan make:controller MailController —plain

Крок 4 – В результаті ви отримаєте наступне:

Laravel — Відправка електронної пошти

Крок 5 — Скопіювати в файл app/Http/Controllers/MailController.php наступний код.

«Virat Gandhi»);
Mail: send([‘text’=>’mail’], $data, function($message) {
$message->to(‘[email protected]’, ‘Tutorials Point’)->subject
(‘Laravel Basic Testing Mail’);
$message->from(‘[email protected]’,’Virat Gandhi’);
});
echo «Basic Email Sent. Check your inbox.»;
}
public function html_email(){
$data = array(‘name’=>»Virat Gandhi»);
Mail: send(‘mail’, $data, function($message) {
$message->to(‘[email protected]’, ‘Tutorials Point’)->subject
(‘Laravel HTML Testing Mail’);
$message->from(‘[email protected]’,’Virat Gandhi’);
});
echo «HTML Email Sent. Check your inbox.»;
}
public function attachment_email(){
$data = array(‘name’=>»Virat Gandhi»);
Mail: send(‘mail’, $data, function($message) {
$message->to(‘[email protected]’, ‘Tutorials Point’)->subject
(‘Laravel Testing Mail with Attachment’);
$message->attach(‘C:\laravel-master\laravel\public\uploads\image.png’);
$message->attach(‘C:\laravel-master\laravel\public\uploads\test.txt’);
$message->from(‘[email protected]’,’Virat Gandhi’);
});
echo «Email Sent with attachment. Check your inbox.»;
}
}

Крок 6 — Скопіювати в файл resources/views/mail.blade.php наступний код.

Hi, {{ $name }}

Sending Mail from Laravel.

Крок 7 — Додайте в файл app/Http/routes.php наступні рядки.

Route::get(‘sendbasicemail’,’[email protected]_email’);
Route::get(‘sendhtmlemail’,’[email protected]_email’);
Route::get(‘sendattachmentemail’,’[email protected]_email’);

Крок 8 – Перейдіть за наступним URL-адресою, щоб перевірити роботу функції відправки електронної пошти. http://localhost:8000/sendbasicemail

Крок 9 – Ви повинні побачити на екрані наступне. Перевірте свою електронну скриньку, щоб побачити, як буде виглядати відправлений лист.

Laravel — Відправка електронної пошти

Крок 10 – Перейдіть за наступним URL-адресою, щоб перевірити функцію відправки HTML-листи. http://localhost:8000/sendhtmlemail

Крок 11 – Ви повинні побачити на екрані приблизно наступне. Перевірте свою поштову скриньку, щоб побачити, як буде виглядати HTML-лист.

Laravel — Відправка електронної пошти

Крок 12 –Перейдіть за наступним URL-адресою, щоб перевірити функцію відправки електронного листа з вкладенням http://localhost:8000/sendattachmentemail

Крок 13 – Ви повинні побачити на екрані приблизно наступне. Перевірте свою поштову скриньку, щоб побачити, як буде виглядати електронний лист з вкладенням.

Laravel — Відправка електронної пошти

Примітка. У файлі MailController.php «email address» в методі from замініть на адресу електронної пошти, з якого ви можете відправляти електронні листи. Як правило, це адреса електронної пошти, налаштований на вашому сервері.