, 2 , - . SMTP, , . . ,
$transport = Swift_SmtpTransport::newInstance($user->getMailHost(), $user->getMailPort(), $user->getMailEncryption());
$transport->setUsername($user->getMailUser());
$transport->setPassword($user->getMailPassword());
$mailer = new Swift_Mailer($transport);
Mail::setSwiftMailer($mailer);
Mail::send(new CustomMailable());
Mail::queue(new CustomMailable());
, , Mail:: setSwiftMailer . .
, .
, Mailable .
app\Mail\ConfigurableMailable.php
<?php
namespace App\Mail;
use Illuminate\Container\Container;
use Illuminate\Contracts\Mail\Mailer;
use Illuminate\Mail\Mailable;
use Swift_Mailer;
use Swift_SmtpTransport;
class ConfigurableMailable extends Mailable
{
public function send(Mailer $mailer)
{
$host = $this->user->getMailHost();
$port = $this->user->getMailPort();
$security = $this->user->getMailEncryption();
$transport = Swift_SmtpTransport::newInstance( $host, $port, $security);
$transport->setUsername($this->user->getMailUser());
$transport->setPassword($this->user->getMailPassword());
$mailer->setSwiftMailer(new Swift_Mailer($transport));
Container::getInstance()->call([$this, 'build']);
$mailer->send($this->buildView(), $this->buildViewData(), function ($message) {
$this->buildFrom($message)
->buildRecipients($message)
->buildSubject($message)
->buildAttachments($message)
->runCallbacks($message);
});
}
}
CustomMail, ConfigurableMailable Mailable:
class CustomMail extends ConfigurableMailable {}
, Mail::queue(new CustomMail()) . , CustomMail - i.e Mail::queue(new CustomMail(Auth::user()))
(.. , ), , Mail Config , $mailer.
, !