Отправка электронной почты имеет решающее значение для любого веб-приложения. Обычно отправляется электронное письмо, чтобы уведомить пользователя о какой-либо деятельности на сайте, например, когда были сделаны обновления или когда были найдены новые друзья. В этом коротком руководстве я покажу вам, как быстро отправлять электронную почту с помощью 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 ознакомьтесь с онлайн-документацией . Спасибо за прочтение.