Php 使用symfony对象发送Swift\u消息
我正在尝试创建一封电子邮件,向与特定公司相关的所有用户发送邮件。如果我将收件人数组添加到我的电子邮件中,并使用一封电子邮件进行测试,我可以看到所有用户电子邮件都打印在测试电子邮件中。当我尝试将相同的收件人数组传递到setTo而不是使用单个to电子邮件地址时,我收到一条消息“警告:非法偏移类型”Php 使用symfony对象发送Swift\u消息,php,symfony,email,message,Php,Symfony,Email,Message,我正在尝试创建一封电子邮件,向与特定公司相关的所有用户发送邮件。如果我将收件人数组添加到我的电子邮件中,并使用一封电子邮件进行测试,我可以看到所有用户电子邮件都打印在测试电子邮件中。当我尝试将相同的收件人数组传递到setTo而不是使用单个to电子邮件地址时,我收到一条消息“警告:非法偏移类型” Se设置为接受带有电子邮件和名称的关联数组(签入文档),因此您应该使用以下内容修改代码: foreach($company->getUsers() as $user){ array_push
Se设置为接受带有电子邮件和名称的关联数组(签入文档),因此您应该使用以下内容修改代码:
foreach($company->getUsers() as $user){
array_push($recipients, [$user->getEmail() => $user->getName()]);
}
array_push($recipients, $company->getCsr()->getEmail());
希望此帮助出现错误,因为您试图使用
$user
对象数组而不是字符串的关联数组设置收件人。当试图访问以对象或数组作为索引的数组的索引时,您将看到该错误消息
您的$recipients
数组应该更像数组('receiver@domain.org', 'other@domain.org“=>”一个名字“
你应该没事
您的代码可能如下所示:
$recipients = [];
foreach($company->getUsers() as $user){
array_push($recipients, $user->getEmail());
}
array_push($recipients, $company->getCsr()->getEmail());
我只是假设您的用户对象有一个getter方法
getEmail()
,它以字符串形式返回用户电子邮件地址。我在扩展BaseUser的user类中添加了以下内容:
/**
* Sets the email.
*
* @return string
*/
public function getEmail()
{
return parent::getEmail();
}
然后我就可以对每个用户运行getEmail了
$recipients = [];
foreach($company->getUsers() as $user){
array_push($recipients, $user->getEmail());
}
array_push($recipients, $company->getCsr()->getEmail());
电子邮件已成功发送 看起来您正在推送用户对象而不是电子邮件地址?@ccKep是的,我如何访问symfony用户对象的电子邮件?getEmail不是一个功能。如果你想给他们发送邮件,你必须把邮件存储在某个地方?您的用户实体是什么样子的?我们的用户对象扩展了基本symfony用户“BaseUser”,我们没有getUser函数。我可以尝试添加一个,但我觉得应该有一个内置的,但似乎没有,如果你真的扩展了,你应该有一个
getEmail
方法(请参阅)。只需尝试使用array\u push($recipients,$user->getEmail())代码>和删除数组推送($recipients,$company->getCsr())代码>现在(我不知道getCsr是否返回另一个用户对象或它返回的其他任何对象)。第一部分是过时的,如果您不定义该函数(并且您的基类定义了该函数,并且它是公共的-它在FOSUserBundle中),它将被调用。很高兴你能让它工作!这是我的假设,但我最初尝试了getEmail(),它说这不是一个函数
$recipients = [];
foreach($company->getUsers() as $user){
array_push($recipients, $user->getEmail());
}
array_push($recipients, $company->getCsr()->getEmail());