От автора: в Laravel отправка почты происходит с использованием бесплатной многофункциональной библиотеки SwiftMailer . С помощью функций этой библиотеки, мы можем без проблем отправлять электронные письма. Шаблоны электронной почты загружаются так же, как и представления, это означает, что вы можете использовать синтаксис Blade и вводить в свои шаблоны данные. Ниже приведен синтаксис функции send.
В третьем аргументе завершение $callback получает экземпляр электронного письма, и с помощью этого экземпляра мы также можем вызывать следующие функции и изменять электронное письмо, как показано ниже.
$message->subject(‘Welcome to the Tutorials Point’);
$message->from(’email@example.com’, ‘Mr. Example’);
$message->to(’email@example.com’, ‘Mr. Example’);
Также используются другие менее распространенные методы:
$message->sender(’email@example.com’, ‘Mr. Example’);
$message->returnPath(’email@example.com’);
$message->cc(’email@example.com’, ‘Mr. Example’);
$message->bcc(’email@example.com’, ‘Mr. Example’);
$message->replyTo(’email@example.com’, ‘Mr. Example’);
$message->priority(2);
Для прикрепления или встраивания файлов, вы можете использовать следующие методы:
$message->attach(‘path/to/attachment.txt’);
$message->embed(‘path/to/attachment.jpg’);
Электронное письмо может быть отправлено в формате HTML или как обычный текст. Вы можете указать тип письма в первом аргументе, передав через него массив, как показано ниже. Тип по умолчанию — HTML. Если вы хотите отправить обычное текстовое письмо, используйте следующий синтаксис.
1 |
Mail::send(['text'=>'text.view'], $data, $callback); |
Здесь первый аргумент принимает массив. Используйте «text» в качестве ключа, а имя представления «name of the view» в качестве значения ключа.
Пример
Шаг 1 — Теперь мы отправим электронное письмо через учетную запись Gmail. Для этого вам нужно настроить свою учетную запись Gmail в файле среды Laravel .env . Включите двухэтапную аутентификацию для своей учетной записи Gmail и создайте специальный пароль приложения, а затем измените параметры .env, как показано ниже.
1 2 3 4 5 6 |
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.
1 |
php artisan config:cache |
Шаг 3 — Создайте контроллер с именем MailController, выполнив следующую команду.
1 |
php artisan make:controller MailController --plain |
Шаг 4 – В результате вы получите следующее:
Шаг 5 — Скопируйте в файл app/Http/Controllers/MailController.php следующий код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?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('abc@gmail.com', 'Tutorials Point')->subject ('Laravel Basic Testing Mail'); $message->from('xyz@gmail.com','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('abc@gmail.com', 'Tutorials Point')->subject ('Laravel HTML Testing Mail'); $message->from('xyz@gmail.com','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('abc@gmail.com', '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('xyz@gmail.com','Virat Gandhi'); }); echo "Email Sent with attachment. Check your inbox."; } } |
Шаг 6 — Скопируйте в файл resources/views/mail.blade.php следующий код.
1 2 |
<h1>Hi, {{ $name }}</h1> <p>Sending Mail from Laravel.</p> |
Шаг 7 — Добавьте в файл app/Http/routes.php следующие строки.
1 2 3 |
Route::get('sendbasicemail','MailController@basic_email'); Route::get('sendhtmlemail','MailController@html_email'); Route::get('sendattachmentemail','MailController@attachment_email'); |
Шаг 8 – Перейдите по следующему URL-адресу, чтобы проверить работу функции отправки электронной почты. //localhost:8000/sendbasicemail
Шаг 9 – Вы должны увидеть на экране следующее. Проверьте свой электронный ящик, чтобы увидеть как будет выглядеть отправленное письмо.
Шаг 10 – Перейдите по следующему URL-адресу, чтобы проверить функцию отправки HTML-письма. //localhost:8000/sendhtmlemail
Шаг 11 – Вы должны увидеть на экране примерно следующее. Проверьте свой почтовый ящик, чтобы увидеть как будет выглядеть HTML-письмо.
Шаг 12 –Перейдите по следующему URL-адресу, чтобы проверить функцию отправки электронного письма с вложением //localhost:8000/sendattachmentemail
Шаг 13 – Вы должны увидеть на экране примерно следующее. Проверьте свой почтовый ящик, чтобы увидеть как будет выглядеть электронное письмо с вложением.
Примечание. В файле MailController.php «email address» в методе from замените на адрес электронной почты, с которого вы можете отправлять электронные письма. Как правило, это адрес электронной почты, настроенный на вашем сервере.
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.