Интеграция Mailgun для отправки электронной почты в Laravel 9
Laravel предлагает настройку и интеграцию сторонних библиотек. Эти библиотеки делают приложения более функциональными. Если говорить о почтовом сервисе, то Laravel уже предоставляет библиотеку SwiftMailer для отправки писем. Лучше всего то, что эта библиотека поддерживает множество драйверов для конфигураций электронной почты. Вы можете настроить его с любой службой электронной почты, такой как SMTP, Mailgun, Postmark, Amazon SES, Sendmail и т. д. Драйверы на основе API намного быстрее и эффективнее, чем службы SMTP. Скорость доставки электронной почты очень высока. Даже если вы отправляете электронные письма массово, почтовые драйверы на основе API будут хорошим вариантом. Итак, сегодня в этом посте я расскажу об одном из мощных сервисов под названием Mailgun, который используется для отправки электронных писем. Я покажу вам интеграцию Laravel Mailgun в этом посте о Laravel 9.
Но прежде чем перейти к электронной почте, давайте узнаем о Mailgun и о том, что он делает.
Что такое Mailgun
Mailgun - это почтовый сервис, предоставляющий услуги электронной почты на основе API. Вы можете отправить N-ное количество электронных писем с коэффициентом доставки 98%. Они гарантируют отправку более безопасных писем получателям. Он позволяет отправлять любые транзакционные электронные письма с самого сайта. Вы можете создать шаблон электронной почты и использовать его при отправке писем с их сайта. Они также предоставляют редактор электронной почты. Таким образом, вы можете настроить форматирование электронной почты в соответствии с вашими потребностями.
Давайте сосредоточимся на интеграции Mailgun в Laravel 9.
Предварительные условия
Для создания проекта Laravel 9 вам потребуются следующие конфигурации.
- PHP >=8.0.2
- Composer
- Сервер Apache/Nginx
- Редактор кода VS Code (опционально)
- MySQL (версия > 5)
Как только вы будете готовы, давайте создадим проект.
Создание проекта Laravel для интеграции Mailgun
Зайдите в терминал и выполните следующую команду.
composer create-project --prefer-dist laravel/laravel laravel-mailgun
Теперь нам нужно создать базу данных.
CREATE DATABASE laravel_email
После того как вы создали базу данных, перейдите в папку проекта и посмотрите на файл .env.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_mail
DB_USERNAME=DB_USER_NAME
DB_PASSWORD=DB_PASSWORD
Теперь вы можете приступать к интеграции с Mailgun.
Как интегрировать Mailgun в Laravel
На самом первом этапе вам потребуется учетная запись Mailgun. Поэтому, если у вас её нет, вам нужно будет создать. Зайдите на официальный сайт Mailgun и зарегистрируйте новый аккаунт.
После регистрации вам нужно будет верифицировать свой аккаунт, подтвердив электронную почту и номер мобильного телефона. Поэтому я рекомендую вам выполнить эти шаги.
Как только вы закончите, давайте настроим домен для отправки электронной почты с помощью Mailgun.
Настройка домена в Mailgun для отправки электронной почты
Доменное имя необходимо для отправки электронной почты с помощью Mailgun. По умолчанию для бесплатной учетной записи вам будет предоставлено случайное доменное имя. Если вы хотите изменить его, вам придется заплатить за это.
Вы увидите опцию домена в панели инструментов, в разделе Sending -> Domain.
Получение учетных данных SMTP для интеграции с Mailgun в Laravel
Для интеграции Mailgun в Laravel вам потребуются имя пользователя, пароль, настройки SMTP и т.д. Вы найдете эти учетные данные в панели управления в меню Sending->Domains.
Когда вы нажмете на домен, вы получите следующий результат. Mailgun предоставляет API и SMTP для интеграции с приложениями.
Здесь вам нужно выбрать опцию SMTP, как показано ниже. Это сгенерирует учетные данные для интеграции Laravel.
Интеграция Mailgun в Laravel 9
Получив учетные данные от Mailgun, снова перейдите к файлу .env. Там вы увидите настройки электронной почты. Вам нужно будет добавить учетные данные, как показано ниже.
Также необходимо добавить доменное имя. Поэтому вы можете скопировать его из панели управления Mailgun и вставить в конфигурацию.
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME={{ USERNAME_BY_MAILGUN }}
MAIL_PASSWORD={{ PASSWORD_BY_MAILGUN }}
MAIL_ENCRYPTION=tls
MAILGUN_DOMAIN={{ DOMAIN_CREATED_IN_MAILGUN }}
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
Вы можете увидеть эти конфигурации для Mailgun в файле config/services.php внутри проекта.
Интеграция с Mailgun завершена, но нам нужно проверить, можем ли мы отправлять электронные письма.
Создание почтового класса в Laravel 9 для отправки электронной почты
Вы можете создать почтовый класс с помощью приведенной ниже команды.
php artisan make:mail TestMail
После создания класса давайте добавим адрес отправителя вместе с шаблоном письма.
TestMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class TestMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('sendermail@mail.com')->view('mail-template');
}
}
В приведенном выше фрагменте кода, необходимо добавить фактический адрес электронной почты отправителя. Кроме того, мы создадим новый шаблон электронной почты, который здесь включен.
Создание шаблона электронной почты в Laravel 9
Нам нужно создать представление шаблона с именем mail-template.blade.php. Мы добавили очень простой шаблон с несколькими сообщениями. (это просто для демонстрации)
mail-template.blade.php
<!doctype html>
<html lang="en">
<head>
<title>Mailgun Integration in Laravel 9</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xl-6 col-lg-6 col-sm-12 m-auto">
<h3> Mailgun integration in Laravel 9 | MakeCodes </h3>
<p> Hey, </p>
<p> Welcome to the MakeCodes </p>
<p> This is a basic demo for sending email in Laravel 9 using Mailgun. </p>
<p> I hope you will enjoy this post. </p>
<br/>
<br/>
<p> Best Regards</p>
<p> Team, MakeCodes</p>
</div>
</div>
</div>
</body>
</html>
Далее вам нужен контроллер для запуска функции электронной почты. Следовательно, создайте контроллер.
Создание контроллера для отправки электронной почты в Laravel 9
Вы можете создать контроллер с помощью приведенной ниже команды.
php artisan make:controller MailController
Теперь добавьте следующую функцию внутри этого контроллера.
MailController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\TestMail;
class MailController extends Controller
{
public function sendEmail(Request $request) {
$to_email = "youremail@gmail.com";
Mail::to($to_email)->send(new TestMail);
if(!Mail::flushMacros()) {
return "<p> Success! Your E-mail has been sent.</p>";
}
else {
return "<p> Failed! Your E-mail has not sent.</p>";
}
}
}
Далее необходимо добавить маршрут для вышеуказанной функции.
Добавьте маршрут
Перейдите в файл routes/web.php и добавьте приведенный ниже маршрут.
web.php
<?php
use App\Http\Controllers\MailController;
use Illuminate\Support\Facades\Route;
Route::get('/send-email', [MailController::class, 'sendEmail']);
Теперь пришло время проверить интеграцию.
Запустите приложение и перейдите по URL, который мы определили в маршруте.
Проверьте почтовый ящик на наличие ответа по электронной почте.
Вывод
В этом посте, мы интегрировали Mailgun в Laravel 9 для отправки электронной почты. Он обеспечивает более быструю доставку электронной почты с 98% успешного ответа. Надеюсь, этот пост будет вам полезен.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.