У меня есть небольшая функция, которая реализует использование Swift_Mailer
для обработки отправки электронных писем:
public function send(string $subject, $to, string $msg, $from = '')
{
if (!empty($to)) {
if (empty($from)) {
$smtpSettings = $this->loadSettings();
$from = [$smtpSettings['from_email'] => $smtpSettings['from_name']];
}
var_dump($to);
$email = (new \Swift_Message($subject))
->setFrom($from)
->setTo($to)
->setBody($msg);
// Send the message
$result = $this->swift->send($email);
} else {
var_dump('nein');
}
}
, которая используется здесь:
$mailer->send(
'Some Subject',
[$email],
'Hello, world'
);
Это возвращает это сообщение:
0: адрес в указанном почтовом ящике [] не соответствует RF C 2822, 3.6.2.
После быстрого поиска в Google, кажется, Swift_Message
экземпляр не получает значение $to
должным образом.
Я добавил var_dump($to)
к сценарию, чтобы увидеть, что на самом деле в нем, и я получаю:
array(1) {
string(19) "someemail@domain.com"
}
Электронная почта выше psuedo для моего реального электронного письма, которое я скопировал / вставил в thunderbird и отправил электронное письмо - все хорошо, поэтому я знаю, что электронное письмо является действительным.
Однако сообщение об ошибке, похоже, показывает, что никакого электронного письма не было прошло. Мой код более или менее отражает документацию , но по какой-то причине мое письмо не передается.
Есть ли у Swift_Message
какие-то странные проблемы с областью действия? Не похоже, что $subject
или $from
идут не так, так почему же $to
потенциально не находится в области видимости?