Как отправлять Email сообщений, используя разную конфигурацию

Ромчик
0

Всем привет. Давно я не писал в блог, надо исправляться. Тем более есть о чем. Много проектов, есть много наработок.

В одном из проектов мне необходимо было отправлять email сообщения с разных SMTP. Вроде не сложно, но проблема оказалось в том, что мы можем задать одну конфигурацию для драйвера отправки почты. Как быть?

И так, я не буду рассказывать, как установить и настроить Laravel. Об этом вы можете прочитать на просторах интернет. Или на моем блоге «Создание CMS на Laravel: создание виртуального хоста, установка и настройка проекта».

Как отправлять email сообщения очень хорошо описаны в «документации по Laravel» или у меня в статье «Отправка email в Laravel, используя SMTP».

Возьмем пример метода отправки сообщения из этой статьи:

public function send() {
    $comment = 'Это сообщение отправлено из формы обратной связи';
    $toEmail = "test@mail.test";
    Mail::to($toEmail)->send(new FeedbackMail($comment));
    return 'Сообщение отправлено на адрес '. $toEmail;
}

Для отправки сообщения используется метод send фасада Mail. А вот откуда будет  отправляться, берется из конфигурации:

config/mail.php

Отлично! Значит перед отправкой мы можем переопределить конфиг.

Объявляем в нашем контроллере:

use Illuminate\Support\Facades\Config;

И изменяем метод отправки сообщения send()

public function send() {
    Config::set('mail.driver', '<новый драйвер>');
    Config::set('mail.host', '<адрес хоста>');
    Config::set('mail.port', '<порт>');
    Config::set('mail.from.address', '<адрес от имени, которого отправляем сообщение>');
    Config::set('mail.from.name', '<имя от, которого отправляем сообщение>');
    Config::set('mail.encryption', '<протокол шифрования>');
    Config::set('mail.username', '<имя пользователя>');
    Config::set('mail.password', '<пароль>');
      
    $comment = 'Это сообщение отправлено из формы обратной связи';
    $toEmail = "test@mail.test";
    Mail::to($toEmail)->send(new FeedbackMail($comment));
    
    return 'Сообщение отправлено на адрес '. $toEmail;
}

Все. Теперь сообщение будет отправлено с использованием другого драйвера. Да, мы можем и эти настройки вынести в конфиг, а потом еще и спрятать в .env. Но это оставляю на ваше усмотрение.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2019 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика