Рубрики
Uncategorized

Использование Composer для улучшения Вашего фреймворка PHP (2) – Отправка Электронных писем

Автор оригинала: David Wong.

Объяснять

Оригинальная статья была опубликована на моем личном веб – сайте: использование Composer для улучшения моего фреймворка PHP (2) – Отправка почты

Видишь https://github.com/johnlui/My-First-Framework-based-on-Composer для примера кода для этого руководства

обзор

В прошлой статье мы вручную создали простой загрузчик представлений и внедрили пакет обработки ошибок, так что наша платформа MFFC достигла уровня “простой в использовании” в M, V и C. Представление является подключаемым компонентом. В этой статье мы создадим еще один подключаемый компонент-модуль отправки почты.

текст

Мы принимаем nette/почту Как основной модуль нашей почтовой доставки, пакеты инкапсулируются на его основе. Почта Класс, который предоставляет краткий API для использования контроллером, давайте начнем формально.

Ввести нетте/почта Пакет, изменить композитор .json :

"require": {
  "codingbean/macaw": "dev-master",
  "illuminate/database": "*",
  "filp/whoops": "*",
  "nette/mail": "*"
},

Функция обновление композитора Ожидание завершения установки. нетте/почта Документ находится по адресу http://doc.nette.org/en/2.2/mailing. Давайте прочитаем это, а затем создадим класс Mail:

Новая сборка услуги/Почта. php В документе говорится следующее:

config = require BASE_PATH.'/config/mail.php';

    $this->setFrom($this->config['username']);

    if ( is_array($to) ) {
      foreach ($to as $email) {
        $this->addTo($email);
      }
    } else {
      $this->addTo($to);
    }
  }

  public function from($from=null)
  {
    if ( !$from ) {
      Throw new Invalid ArgumentException ("The mailing address cannot be empty! "";
    }
    $this->setFrom($from);
    return $this;
  }

  public static function to($to=null)
  {
    if ( !$to ) {
      Throw new Invalid ArgumentException ("Mail Receive Address Can't Be Empty! "";
    }
    return new Mail($to);
  }

  public function title($title=null)
  {
    if ( !$title ) {
      Throw new Invalid ArgumentException ("Mail Title can't be empty! "";
    }
    $this->setSubject($title);
    return $this;
  }

  public function content($content=null)
  {
    if ( !$content ) {
      Throw new Invalid ArgumentException ("Mail content can't be empty! "";
    }
    $this->setHTMLBody($content);
    return $this;
  }
}

Классы почты и просмотра работают в основном одинаково:

$this->mail = Mail::to(['[email protected]', '[email protected]'])
                    ->from('MotherFucker <[email protected]>')
                    ->title('Fuck Me!')
                    ->content('

Hello~~

');

Приведенный выше код находится в HomeController. Просмотр::make() Ниже этой строки кода.

Недавно построенный MFFC/config/mail.php Пожалуйста, замените свой адрес электронной почты и пароль самостоятельно:

 'smtp.163.com',
  'username' => '[email protected]',
  'password' => 'password',
  'secure' => ''
];

Почта, как и представление, также обрабатывается в функции _destruct() деструктора BaseController, которая теперь выглядит следующим образом:

public function __destruct()
{
  $view = $this->view;
  if ( $view instanceof View ) {
    extract($view->data);
    require $view->view;
  }

  $mail = $this->mail;
  if ( $mail instanceof Mail ) {
    $mailer = new Nette\Mail\SmtpMailer($mail->config);
    $mailer->send($mail);
  }
}

Хорошо, почти готово, запущено дамп-загрузка композитора Добавьте класс почты в автозагрузку и обновите страницу!

Если вы видите вышеприведенную страницу, поздравляю! Письмо было отправлено успешно!

Иди и проверь свой почтовый ящик на наличие почты! D Загрузка этой страницы может быть немного медленнее, поскольку почта отправляется синхронно. Асинхронные системы очередей будут рассмотрены позже.

Анализ

Весь процесс доставки электронной почты должен быть знаком каждому. Сейчас мы в основном описываем процесс проектирования почтового класса.

  1. Основными параметрами доставки почты являются Адрес назначения Почта:: по адресу (‘ [email protected] ‘) – адрес электронной почты, на который отправляется письмо. API триггера
  2. В настоящее время мы принимаем самый простой вариант. SMTP Способ отправки почты, документ находится здесь. Размещение файла конфигурации MFFC/config/mail.php Он по-прежнему возвращает массив.
  3. Почтовый класс наследует Nette\Почта\Сообщение Класс. Почта::по адресу() Когда вы создаете экземпляр (объект) класса Mail и возвращаете его, это действительно так. Базовый контролер Код в деструкторе в. Отправитель по умолчанию считывается из файла конфигурации имя пользователя
  4. Почта::по адресу() Поддержка строк или массивов в качестве параметров, вы можете отправлять одно или несколько сообщений одновременно.
  5. из()название() и content() Метод используется для обогащения содержимого почты. content() Метод может передавать HTML-код напрямую.
  6. из() Настройка не всегда выполняется успешно, и некоторые поставщики почтовых услуг не поддерживают изменение адресов отправителей.
  7. После того, как все переменные собраны, они назначаются контроллеру. $почта Переменные-члены затем обрабатываются деструктором, отправляется почта, код страницы отправляется обратно клиенту после успешного завершения, и процесс завершается.

Уведомление

Следующий шаг: Используйте Composer для улучшения вашего фреймворка PHP (3) – Кэш Redis (подлежит обновлению)

Оригинал: “https://developpaper.com/using-composer-to-improve-your-php-framework-2-sending-emails/”