Отправка электронной почты имеет решающее значение для любого веб-приложения. Обычно отправляется электронное письмо, чтобы уведомить пользователя о какой-либо деятельности на сайте, например, когда были сделаны обновления или когда были найдены новые друзья. В этом коротком руководстве я покажу вам, как быстро отправлять электронную почту с помощью Gmail из примера приложения Laravel, расширяя функциональные возможности, которые мы создали в моем последнем руководстве, Аутентификация с помощью Laravel 4 .
Итак, мы возьмем это приложение для аутентификации (вы можете загрузить исходный код предыдущего урока на Github, чтобы дать вам отправную точку), которое мы закончили в прошлый раз, и добавим новую функцию, чтобы всякий раз, когда пользователь регистрируется на сайте, мы вышлю им подтверждение по электронной почте, приветствуя их в приложении!
Конфигурация почты
Прежде чем мы сможем отправлять электронные письма с помощью Laravel 4, нам нужно настроить файл app/config/mail.php . В этом файле мы можем установить следующие параметры:
| вариант | Описание |
driver |
Почтовый драйвер, который вы хотели бы использовать. По умолчанию это значение SMTP, но вы также можете изменить его, чтобы использовать функцию почты PHP или Sendmail. |
host |
Это адрес вашего SMTP-сервера. |
port |
Ваш порт SMTP. |
from |
Это позволяет вам установить поле from в вашем письме, чтобы все письма отправлялись с одного адреса. |
encryption |
Это протокол шифрования, который будет использоваться при отправке электронных писем. |
username |
Это ваше имя пользователя SMTP. |
password |
Это ваш пароль SMTP. |
sendmail |
Это путь, по которому Sendmail можно найти на сервере при использовании драйвера sendmail. |
pretend |
Если установлено значение true , сообщения электронной почты будут записываться в файл журнала, а не отправлять реальное сообщение электронной почты. |
Отправка почты с помощью Gmail
В этом уроке я буду использовать Gmail для отправки своих электронных писем, поскольку это очень просто в использовании. Все, что вам нужно для отправки почты с помощью Gmail — это иметь активную учетную запись Gmail с именем пользователя и паролем. Я предоставлю вам все остальное. Давайте отредактируем наш файл app/config/mail.php чтобы он выглядел примерно так (я удалил комментарии, чтобы сделать код более компактным):
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
return array(
‘driver’ => ‘smtp’,
‘host’ => ‘smtp.gmail.com’,
‘port’ => 587,
‘from’ => array(‘address’ => ‘authapp@awesomeauthapp. com’, ‘name’ => ‘Awesome Laravel 4 Auth App’),
‘encryption’ => ‘tls’,
‘username’ => ‘your_gmail_username’,
‘password’ => ‘your_gmail_password’,
‘sendmail’ => ‘/usr/sbin/sendmail -bs’,
‘pretend’ => false,
);
|
Здесь я оставил driver установленным для smtp . Я настроил host на использование smtp.gmail.com который является SMTP-сервером Gmail. Я установил port на 587 , from фальшивого адреса электронной почты, который подходит для нашего приложения. Я оставил для encryption значение tls и, наконец, вы захотите ввести свое username и password Gmail для своей учетной записи и оставить для false значение false .
Отправка почты
Пример кода
Для этого приложения, когда пользователь успешно регистрируется, мы хотим отправить ему электронное письмо с приветствием на сайте. Отправка электронной почты с помощью Laravel осуществляется с помощью метода Mail::send() . Вот небольшой фрагмент кода, например, для целей:
|
1
2
3
|
Mail::send(‘folder.view’, $data, function($message) {
$message->to(‘registered-user@gmail. com’, ‘Jon Doe’)->subject(‘Welcome to the Laravel 4 Auth App!’);
});
|
Первый аргумент — это файл представления, который мы хотели бы использовать для форматирования нашего электронного письма. Второй аргумент — это любые данные, которые мы хотели бы передать в этот файл представления. Третий аргумент — это замыкание, которое принимает объект $message который мы можем использовать, чтобы сообщить отправителю, кому мы отправляем электронное письмо и какой будет тема этого письма. В этом закрытии вы также можете указать другие параметры, такие как вложения и т. Д. Затем будет отправлено электронное письмо пользователю.
Довольно легко, верно?
Отправка писем при успешной регистрации
Давайте теперь UsersController действие postCreate() нашего UsersController и возьмем то, что мы узнали об отправке электронных писем, чтобы отправлять приветственное электронное сообщение нашим пользователям всякий раз, когда они регистрируются в приложении.
В postCreate() нашего действия postCreate() , где мы проверяем, прошла ли проверка, сразу после того, как мы сохранили пользователя в базе данных, давайте добавим следующий код:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
if ($validator->passes()) {
$user = new User;
$user->firstname = Input::get(‘firstname’);
$user->lastname = Input::get(‘lastname’);
$user->email = Input::get(’email’);
$user->password = Hash::make(Input::get(‘password’));
$user->save();
Mail::send(‘users.mails.welcome’, array(‘firstname’=>Input::get(‘firstname’)), function($message){
$message->to(Input::get(’email’), Input::get(‘firstname’).’ ‘.Input::get(‘lastname’))->subject(‘Welcome to the Laravel 4 Auth App!’);
});
return Redirect::to(‘users/login’)->with(‘message’, ‘Thanks for registering!’);
} else {
return Redirect::to(‘users/register’)->with(‘message’, ‘The following errors occurred’)->withErrors($validator)->withInput();
}
|
Здесь мы вызвали метод Mail::send() и сказали ему использовать users.mails.welcome представления users.mails.welcome . Затем мы передаем массив в качестве данных, которые должны быть доступны в файле представления, в этом случае мы просто отправили имя пользователя, используя метод Input::get('firstname') . Затем мы создаем наше закрытие и устанавливаем его для отправки электронного письма на адрес электронной почты пользователя. Мы также устанавливаем имя, используя имя и фамилию пользователя из формы. Наконец, мы просто даем этому довольно общий предмет (вы можете использовать любой предмет, который вам нравится), чтобы пользователь знал, о чем идет речь.
Создание файла представления электронной почты
Теперь нам нужно создать наш welcome почтовый файл. В app/views/users создайте новую папку с именем mails и внутри нее создайте новый файл с именем welcome.blade.php и добавьте следующий код:
|
1
2
3
|
<h1>Hi, {{ $firstname }}!</h1>
<p>We’d like to personally welcome you to the Laravel 4 Authentication Application.
|
В этом файле представления у нас просто есть некоторый базовый HTML- $firstname , использующий переменную $firstname которую мы передали в качестве данных из нашего контроллера в представление, приветствуя пользователя в приложении. В этом нет ничего особенного, вы можете использовать файлы представлений для электронных писем так же, как и для любого другого представления.
Давайте попробуем это
Убедитесь, что ваш веб-сервер запущен с использованием php artisan serve и мы можем посетить localhost:8000/users/register , а затем создать нового пользователя:

… и затем проверьте учетную запись электронной почты этого пользователя, чтобы убедиться, что электронное письмо было успешно отправлено:

Отлично! Наше письмо было отправлено.
В заключение
И это все, что нужно для отправки сообщений электронной почты с помощью Laravel 4 и Gmail. Конечно, вы можете настроить свои почтовые сообщения так, как вам хочется, чтобы почта была более привлекательной.
Теперь это самый простой способ отправки почты с помощью Laravel, и он может замедлить ваше приложение, так как оно отправляет электронную почту, но у вас есть другие варианты. Вы по-прежнему будете использовать класс почты Laravel, но вместо того, чтобы отправлять его немедленно, вы можете поставить в очередь свои электронные письма, чтобы они отправлялись в фоновом режиме, не заставляя пользователей ждать. Но эту тему лучше всего сохранить для отдельной статьи.
Для получения дополнительной информации об отправке электронной почты с Laravel ознакомьтесь с онлайн-документацией . Спасибо за прочтение.