【发布时间】:2017-05-03 17:33:39
【问题描述】:
我正在尝试创建一封电子邮件,用于向与特定公司关联的所有用户发送消息。如果我将收件人数组添加到我的电子邮件中并使用一封电子邮件进行测试,我可以看到所有用户电子邮件都打印在测试电子邮件中。当我尝试将相同的收件人数组传递给 setTo 而不是使用单个电子邮件地址时,我收到一条消息 “警告:非法偏移类型”
$company = $this->getDoctrine()->getRepository('Bundle:Customer')->findOneBy(array('accountId' => $compare->getCustomerAccount()));
$recipients = [];
foreach($company->getUsers() as $user){
array_push($recipients, $user);
}
array_push($recipients, $company->getCsr());
$newComment = new Comment();
$newComment->setDetails($comment);
$newComment->setUser($this->getUser());
$em = $this->getDoctrine()->getManager();
$em->flush();
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($fromEmail)
->setTo($recipients)
->setBody(
$this->renderView(
'Bundle:Comment:email_users.html.twig', array(
'subject' => $subject,
'comment' => $comment,
'company' => $company,
'proof' => $proof
)
)
)
->setContentType('text/html')
;
$this->get('mailer')->send($message);
【问题讨论】:
-
看起来您正在推送用户对象而不是电子邮件地址?
-
@ccKep 是的,我如何访问 symfony 用户对象的电子邮件? getEmail 不是一个函数。
-
好吧,如果您打算向他们发送邮件,您必须将电子邮件存储在某个地方吗?您的用户实体是什么样的?
-
我们的用户对象扩展了基本的 symfony 用户“BaseUser”,我们没有 getUser 函数。我可以尝试添加一个,但我觉得应该有一个内置但似乎没有
-
如果你真的扩展了,你应该有一个
getEmail方法(见Line 218 in User.php)。只需尝试使用array_push($recipients, $user->getEmail());并暂时删除array_push($recipients, $company->getCsr());(我不知道 getCsr 是否返回另一个 User 对象或它返回的任何其他对象)。