Symfony 5 Mailer传入多个to收件人地址报错如何解决
Symfony Mailer 传入多个收件人地址的正确方式
错误原因
to()、cc()、bcc() 等收件人相关方法是可变参数设计,本身不接受数组作为单个入参,也不识别逗号拼接的多地址字符串:
- 直接传入数组时,方法会将整个数组判定为单个地址参数,因此抛出「地址必须是字符串或Address实例,传入了array」的错误
- 传入逗号拼接的字符串时,方法会将整个字符串当做单个邮箱做RFC格式校验,多地址拼接的字符串不符合单邮箱格式规则,自然触发合规报错
可用写法
动态收件人列表(数组传参)
参考官方示例的写法,在传入的数组前加PHP参数展开运算符...,把数组拆成多个独立参数传入即可,这也是动态生成收件人列表时的标准写法:
$recipients = [ 'test1@test.de', 'test2@test.de' ]; $email = (new Email()) ->to(...$recipients) // 数组前的...不能省略 // 抄送、密送方法用法完全一致,比如 ->cc(...$ccList) // 其余邮件配置项 ;
数组内支持混合传入纯邮箱字符串、Address实例(用于配置收件人显示名称):
use Symfony\Component\Mime\Address; $recipients = [ 'test1@test.de', new Address('test2@test.de', '测试用户') ]; $email->to(...$recipients);
固定少量收件人
如果收件人是固定的少量地址,直接将多个地址作为独立参数依次传入即可:
$email = (new Email()) ->to('test1@test.de', 'test2@test.de') ;
内容的提问来源于stack exchange,提问作者goldlife
相关产品推荐
相关产品推荐

