我有一个小功能,可以使用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
为什么可能不在范围内?
[AbraCadaver带领我走了正确的路,比返回给我的错误消息更重要。
我从documentation复制了原始代码,并用相应的$var
逐一替换了这些值,即使$to
都起作用了-消息是红色鲱鱼。
$from
变量是破坏脚本的原因。值格式错误,固定格式已修复脚本。
我将$from
设置为['[email protected]' => 'Some Name']
,一切都很好。