函数中的 Swfitmailer 作用域

Swfitmailer Scope in Function

我有一个小函数可以实现使用 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'
);

这条returns这条消息:

0: Address in mailbox given [] does not comply with RFC 2822, 3.6.2.

快速谷歌后,Swift_Message 实例似乎没有正确获取 $to 值。

我将 var_dump($to) 添加到脚本中以查看其中的实际内容,我得到:

array(1) {
  string(19) "someemail@domain.com"
}

上面的电子邮件是我的真实电子邮件的伪装,我 copy/pasted 进入 thunderbird 并发送了一封电子邮件到 - 很好,所以我知道电子邮件是有效的。

但是,错误信息似乎显示没有通过电子邮件。我的代码或多或少反映了 documentation 但出于某种原因,我的电子邮件未通过。

Swift_Message 是否存在一些奇怪的范围问题? $subject$from 似乎没有出错,那么为什么 $to 可能不在范围内?

AbraCadaver 引导我走向正确的道路,比返回给我的错误信息更重要。

我从 documentation 复制了原始代码,并用相应的 $var 逐一替换了值,一切正常,甚至 $to - 消息是红色的鲱鱼。

然而,$from 变量破坏了脚本。该值的格式不正确,修正了脚本的格式。

我将 $from 设置为 ['theemail@domain.com' => 'Some Name'],一切正常。