Laravel использует бесплатную многофункциональную библиотеку SwiftMailer для отправки электронных писем. Используя функцию библиотеки, мы можем легко отправлять электронные письма без особых хлопот. Шаблоны электронной почты загружаются так же, как и представления, что означает, что вы можете использовать синтаксис Blade и вводить данные в свои шаблоны.
Следующая таблица показывает синтаксис и атрибуты функции отправки —
Синтаксис | void send (строка | массив $ view, массив $ data, Closure | строка $ callback) |
параметры |
|
Возвращает | ничего такого |
Описание | Отправляет электронную почту. |
$ view (string | array) — имя представления, которое содержит сообщение электронной почты
$ data (array) — массив данных для передачи на просмотр
$ callback — обратный вызов Closure, который получает экземпляр сообщения, позволяя настраивать получателей, тему и другие аспекты почтового сообщения.
В третьем аргументе $ callback closure получил экземпляр сообщения, и с этим экземпляром мы также можем вызвать следующие функции и изменить сообщение, как показано ниже.
- $ message → subject («Добро пожаловать в пункт учебников»);
- $ 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 ‘);
- $ сообщение → приоритет (2);
Чтобы прикрепить или встроить файлы, вы можете использовать следующие методы —
- $ message → attach (‘путь / к / attachment.txt’);
- $ message → embed (‘path / to / attachment.jpg’);
Почту можно отправлять в виде HTML или текста. Вы можете указать тип почты, которую вы хотите отправить в первом аргументе, передав массив, как показано ниже. Тип по умолчанию — HTML. Если вы хотите отправить текстовое сообщение, используйте следующий синтаксис.
Синтаксис
Mail::send([‘text’=>’text.view’], $data, $callback);
В этом синтаксисе первый аргумент принимает массив. Используйте текст в качестве имени ключа представления в качестве значения ключа.
пример
Шаг 1. Теперь мы отправим электронное письмо из учетной записи Gmail, для чего вам необходимо настроить свою учетную запись Gmail в файле среды Laravel — файле .env . Включите двухэтапную проверку в своей учетной записи Gmail и создайте специальный пароль приложения, а затем измените параметры .env, как показано ниже.
.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 — После успешного выполнения вы получите следующий вывод —
Шаг 5 — Скопируйте следующий код в
Файл app / Http / Controllers / MailController.php .
приложение / Http / Контроллеры / MailController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Mail; use App\Http\Requests; use App\Http\Controllers\Controller; class MailController extends Controller { public function basic_email() { $data = array('name'=>"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 .
ресурсы / виды / mail.blade.php
<h1>Hi, {{ $name }}</h1> l<p>Sending Mail from Laravel.</p>
Шаг 7 — Добавьте следующие строки в app / Http / rout.php.
приложение / Http / routes.php
Route::get('sendbasicemail','MailController@basic_email'); Route::get('sendhtmlemail','MailController@html_email'); Route::get('sendattachmentemail','MailController@attachment_email');
Шаг 8 — Посетите следующий URL, чтобы проверить основную электронную почту.
http://localhost:8000/sendbasicemail
Шаг 9 — Экран вывода будет выглядеть примерно так. Проверьте свой почтовый ящик, чтобы увидеть основной вывод электронной почты.
Шаг 10 — Посетите следующий URL, чтобы проверить электронную почту в формате HTML.
http://localhost:8000/sendhtmlemail
Шаг 11 — Экран вывода будет выглядеть примерно так. Проверьте свой почтовый ящик, чтобы увидеть HTML-вывод электронной почты.
Шаг 12 — Посетите следующий URL, чтобы проверить HTML-письмо с вложением.
http://localhost:8000/sendattachmentemail
Шаг 13 — Вы можете увидеть следующий вывод
Примечание. В файле MailController.php адрес электронной почты в методе from должен быть адресом электронной почты, с которого вы можете отправить адрес электронной почты. Как правило, это должен быть адрес электронной почты, настроенный на вашем сервере.