В рамках отправки электронной почты Mailtrap также доступен API электронной почты.
Чтобы интегрировать этот API электронной почты в ваше приложение Laravel, вы можете использовать Mailtrap PHP SDK, который делает интеграцию проще и эффективнее, чем написание кода интеграции для вашего проекта вручную.
Вот шаги для использования SDK:
composer require railsware/mailtrap-php symfony/http-client nyholm/psr7
Добавьте транспорт Mailtrap в файл config/mail.php
:
return [ /* |-------------------------------------------------------------------------- | Mailer Configurations |-------------------------------------------------------------------------- */ 'mailers' => [ // start mailtrap transport 'mailtrap' => [ 'transport' => 'mailtrap' ], // end mailtrap transport ] ];
Добавьте настройки Mailtrap в Laravel в .env
файл:
MAIL_MAILER="mailtrap" MAILTRAP_HOST="send.api.mailtrap.io" MAILTRAP_API_KEY="YOUR_API_KEY_HERE" MAILTRAP_INBOX_ID=1000001Создайте Mail класс для отправки электронной почты:
php artisan make:mail WelcomeMailПоявится файл
app/Mail/WelcomeMail.php
.
Вот примерное содержимое класса:
namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Attachment; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Address; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Mail\Mailables\Headers; use Illuminate\Queue\SerializesModels; use Mailtrap\EmailHeader\CategoryHeader; use Mailtrap\EmailHeader\CustomVariableHeader; use Symfony\Component\Mime\Email; use Symfony\Component\Mime\Header\UnstructuredHeader; class WelcomeMail extends Mailable { use Queueable, SerializesModels; private string $name; /** * Create a new message instance. */ public function __construct(string $name) { $this->name = $name; } /** * Get the message envelope. */ public function envelope(): Envelope { return new Envelope( from: new Address('jeffrey@example.com', 'Jeffrey Way'), replyTo: [ new Address('taylor@example.com', 'Taylor Otwell'), ], subject: 'Welcome Mail', using: [ function (Email $email) { // Headers $email->getHeaders() ->addTextHeader('X-Message-Source', 'example.com') ->add(new UnstructuredHeader('X-Mailer', 'Mailtrap PHP Client')); // Custom Variables $email->getHeaders() ->add(new CustomVariableHeader('user_id', '45982')) ->add(new CustomVariableHeader('batch_id', 'PSJ-12')); // Category (should be only one) $email->getHeaders() ->add(new CategoryHeader('Integration Test')); }, ] ); } /** * Get the message content definition. */ public function content(): Content { return new Content( view: 'mail.welcome-email', with: ['name' => $this->name], ); } /** * Get the attachments for the message. * * @return arrayДалее создадим шаблон, файл*/ public function attachments(): array { return [ Attachment::fromPath('https://mailtrap.io/wp-content/uploads/2021/04/mailtrap-new-logo.svg') ->as('logo.svg') ->withMime('image/svg+xml'), ]; } /** * Get the message headers. */ public function headers(): Headers { return new Headers( 'custom-message-id@example.com', ['previous-message@example.com'], [ 'X-Custom-Header' => 'Custom Value', ], ); } }
resources/views/mail/welcome-email.blade.php
Привет, {{$name}} и добро пожаловать 😉Теперь можем отправить письмо. Для разнообразия, сделаем это из консоли. Для этого в файле
С уважением, администрация сайта
app/routes/console.php
напишем следующий код:
use App\Mail\WelcomeMail; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Mail; /* |-------------------------------------------------------------------------- | Console Routes |-------------------------------------------------------------------------- | */ Artisan::command('send-welcome-mail', function () { Mail::to('testreceiver@gmail.com')->send(new WelcomeMail("Jon")); // Also, you can use a specific mailer if your default mailer is not "mailtrap", but you want to use it for welcome emails // Mail::mailer('mailtrap')->to('testreceiver@gmail.com')->send(new WelcomeMail("Jon")); })->purpose('Send welcome mail');Теперь можете запустите команду CLI, которая отправит ваше электронное письмо:
php artisan send-welcome-mailВот и все! API отправки электронной почты Mailtrap теперь интегрирован с вашим приложением Laravel.