Skip to content
AntonShevchuk edited this page Oct 13, 2014 · 11 revisions

Описание

На данный момент Bluz\Mailer является всего-лишь обёрткой для пакета PHPMailer, в его задачи входит применение глобальных настроек для каждого создаваемого объекта PHPMailer.

Настройки

Пример настроек для работы Mailer'а через SMTP сервер (больше информации по настройкам на страничке PHPMailer):

// config file mailer.php
return array(
        "subjectTemplate" => "Bluz - %s",
        // email is required
        "from" => [
            "email" => "[email protected]",
            "name" => "Bluz"
        ],
        // PHPMailer settings
        // read more at https://github.com/Synchro/PHPMailer
        "settings" => [
            "CharSet" => "UTF-8",
            "Mailer" => "smtp", // mail, sendmail, smtp, qmail
            "SMTPSecure" => "ssl",
            "Host" => "10.10.0.114",
            "Port" => "2525",
            "SMTPAuth" => true,
            "Username" => "[email protected]",
            "Password" => "pass",
        ],
        // Custom Headers
        "headers" => [
            "PROJECT" => "Bluz",
        ],
    )

Использование

с версии 0.6.0 изменился способ вызова - теперь только через Proxy

Приведу код контроллера /test/mailer/:

try {
    $mail = Mailer::create();
    // subject
    $mail->Subject = "Example of Bluz Mailer";
    $mail->MsgHTML("Hello!<br/>How are you?");
    $mail->AddAddress($email);
    Mailer::send($mail);
    Messages::addSuccess("Email was send");
} catch (\Exception $e) {
    Messages::addError($e->getMessage());
}

Если вам нужен пример генерации HTML писем, то лучше всего подсмотреть в users/mail-template, пример использования тут:

$body = app()->dispatch(
    'users',
    'mail-template',
    [
        'template' => 'registration',
        'vars' => ['login' => $login]
    ]
)->render();

try {
   $mail = Mailer::create();
   $mail->Subject = $subject;
   $mail->MsgHTML(nl2br($body));
   $mail->AddAddress($email);
   Mailer::send($mail);
} catch (\Exception $e) {
   Logger::log('error', $e->getMessage());
   throw new Exception('Unable to send email. Please contact administrator.');
}
Clone this wiki locally