Автор оригинала: 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 Загрузка этой страницы может быть немного медленнее, поскольку почта отправляется синхронно. Асинхронные системы очередей будут рассмотрены позже.
Анализ
Весь процесс доставки электронной почты должен быть знаком каждому. Сейчас мы в основном описываем процесс проектирования почтового класса.
- Основными параметрами доставки почты являются
Адрес назначенияПочта:: по адресу (‘ [email protected] ‘) – адрес электронной почты, на который отправляется письмо.API триггера。 - В настоящее время мы принимаем самый простой вариант.
SMTPСпособ отправки почты, документ находится здесь. Размещение файла конфигурацииMFFC/config/mail.phpОн по-прежнему возвращает массив. - Почтовый класс наследует
Nette\Почта\СообщениеКласс.Почта::по адресу()Когда вы создаете экземпляр (объект) класса Mail и возвращаете его, это действительно так.Базовый контролерКод в деструкторе в. Отправитель по умолчанию считывается из файла конфигурацииимя пользователя。 Почта::по адресу()Поддержка строк или массивов в качестве параметров, вы можете отправлять одно или несколько сообщений одновременно.из()、название()иcontent()Метод используется для обогащения содержимого почты.content()Метод может передавать HTML-код напрямую.из()Настройка не всегда выполняется успешно, и некоторые поставщики почтовых услуг не поддерживают изменение адресов отправителей.- После того, как все переменные собраны, они назначаются контроллеру.
$почтаПеременные-члены затем обрабатываются деструктором, отправляется почта, код страницы отправляется обратно клиенту после успешного завершения, и процесс завершается.
Уведомление
Следующий шаг: Используйте Composer для улучшения вашего фреймворка PHP (3) – Кэш Redis (подлежит обновлению)
Оригинал: “https://developpaper.com/using-composer-to-improve-your-php-framework-2-sending-emails/”