Symfony 5 Mailer收件人多个地址无法工作

vhipe2zx  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(116)

在Symfony文档中有以下条目:
https://symfony.com/doc/current/mailer.html#email-addresses
...您可以将多个地址传递给每个方法:

$toAddresses = ['foo@example.com', new Address('bar@example.com')];
$email = (new Email())
    ->to(...$toAddresses)
    ->cc('cc1@example.com', 'cc2@example.com')

    // ...

;
这是我的数组:

$recipients = [
    'test1@test.de',
    'test2@test.de'
];

当我试着这样发送时:

$recipients = [
    'test1@test.de',
    'test2@test.de'
];
$email->to($recipients);

出现错误:

An address can be an instance of Address or a string ("array") given).

这里有什么问题?好吧-让我们尝试用字符串发送它:
当我试着这样发送它时:

$recipients = "test1@test.de,test2@test.de";
$email->to($recipients);

我得到另一个错误:
电子邮件“test1@test.de,test2@test.de“不符合RFC 2822的地址规范。
有人能解释一下如何用symfony邮件程序向多个->to()地址发送电子邮件吗?

lnlaulya

lnlaulya1#

您应该解压缩数组。to()方法接受多个参数,每个参数必须是 stringAddress 的示例
因此,在您的代码中,需要在$recipients之前添加...以解压缩数组。

$recipients = [
    'test1@test.de',
    'test2@test.de'
];

$email->to(...$recipients);
bnlyeluc

bnlyeluc2#

你也可以这样做;

// Record(s) from database using entityManager.
$users = $em-> ....;
$recipients = array_map(function ($user) {
    return new Address($user->getEmail(), $user->getFirstname());
}, $users);

$email->to(...$recipients);

相关问题