Я использую Laravel 5.3 и у меня вопрос по поводу нескольких почтовых программ. Мой почтовый по умолчанию установлен в конфиге. Следуя предложениям в других статьях, я бы использовал этот скрипт для изменения почтовой программы по умолчанию, когда я хочу отправить почту с другого сервера.
// Backup your default mailer
$backup = Mail::getSwiftMailer();
// Setup your gmail mailer
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl');
$transport->setUsername('your_gmail_username');
$transport->setPassword('your_gmail_password');
// Any other mailer configuration stuff needed...
$gmail = new Swift_Mailer($transport);
// Set the mailer as gmail
Mail::setSwiftMailer($gmail);
// Send your message
Mail::send();
// Restore your original mailer
Mail::setSwiftMailer($backup);
Так что мой вопрос - один из разъяснений. Давайте предположим, что несколько пользователей одновременно отправляют письма. Если все они устанавливают Mail :: setSwiftMailer, это повлияет только на соответствующий экземпляр моего приложения, а не на все приложение, верно? Я хочу, чтобы один пользователь не отправлял почту с учетной записи, предназначенной для другого пользователя.
UPDATE:
Я подозреваю, что пока я не изменяю значения конфигурации, как показано ниже, Mail :: setSwiftMailer только устанавливает Mailer для текущего пользователя. Это правильно?
$mail=DB::table('mail_settings')->first();
$config = array(
'driver' => $mail->driver,
'host' => $mail->host,
'port' => $mail->port,
'from' => array('address' => $mail->from_address, 'name' => $mail->from_name),
'encryption' => $mail->encryption,
'username' => $mail->username,
'password' => $mail->password,
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false
);
Config::set('mail',$config);