Swfitmailer功能范围

问题描述 投票:1回答:1

我有一个小功能,可以使用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:给定[]的邮箱中的地址不符合RFC 2822,3.6.2。

快速浏览Google之后,似乎Swift_Message实例未正确获得$to值。

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

array(1) {
  string(19) "[email protected]"
}

[上面的电子邮件是我真实电子邮件的伪信,我将其复制/粘贴到雷鸟中并发送给-非常好,所以我知道该电子邮件是有效的。

但是,错误消息似乎表明没有通过电子邮件。我的代码或多或少地反映了documentation,但由于某些原因,我的电子邮件没有通过。

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

php swiftmailer
1个回答
0
投票

[AbraCadaver带领我走了正确的路,比返回给我的错误消息更重要。

我从documentation复制了原始代码,并用相应的$var逐一替换了这些值,即使$to都起作用了-消息是红色鲱鱼。

$from变量是破坏脚本的原因。值格式错误,固定格式已修复脚本。

我将$from设置为['[email protected]' => 'Some Name'],一切都很好。

© www.soinside.com 2019 - 2024. All rights reserved.