Учебники

Laravel — Отправка электронной почты

Laravel использует бесплатную многофункциональную библиотеку SwiftMailer для отправки электронных писем. Используя функцию библиотеки, мы можем легко отправлять электронные письма без особых хлопот. Шаблоны электронной почты загружаются так же, как и представления, что означает, что вы можете использовать синтаксис Blade и вводить данные в свои шаблоны.

Следующая таблица показывает синтаксис и атрибуты функции отправки

Синтаксис void send (строка | массив $ view, массив $ data, Closure | строка $ callback)
параметры
  • $ view (string | array) — имя представления, которое содержит сообщение электронной почты

  • $ data (array) — массив данных для передачи на просмотр

  • $ callback — обратный вызов Closure, который получает экземпляр сообщения, позволяя настраивать получателей, тему и другие аспекты почтового сообщения.

Возвращает ничего такого
Описание Отправляет электронную почту.

$ view (string | array) — имя представления, которое содержит сообщение электронной почты

$ data (array) — массив данных для передачи на просмотр

$ callback — обратный вызов Closure, который получает экземпляр сообщения, позволяя настраивать получателей, тему и другие аспекты почтового сообщения.

В третьем аргументе $ callback closure получил экземпляр сообщения, и с этим экземпляром мы также можем вызвать следующие функции и изменить сообщение, как показано ниже.

  • $ message → subject («Добро пожаловать в пункт учебников»);
  • $ message → from (’[email protected] ‘,’ Mr. Example ‘);
  • $ message → to (’[email protected] ‘,’ Mr. Example ‘);

Некоторые из менее распространенных методов включают в себя —

Чтобы прикрепить или встроить файлы, вы можете использовать следующие методы —

  • $ 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 — После успешного выполнения вы получите следующий вывод —

MailController

Шаг 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-вывод электронной почты.

HTML Email

Шаг 12 — Посетите следующий URL, чтобы проверить HTML-письмо с вложением.

http://localhost:8000/sendattachmentemail

Шаг 13 — Вы можете увидеть следующий вывод

Письмо отправлено

Примечание. В файле MailController.php адрес электронной почты в методе from должен быть адресом электронной почты, с которого вы можете отправить адрес электронной почты. Как правило, это должен быть адрес электронной почты, настроенный на вашем сервере.