Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用symfony对象发送Swift\u消息_Php_Symfony_Email_Message - Fatal编程技术网

Php 使用symfony对象发送Swift\u消息

Php 使用symfony对象发送Swift\u消息,php,symfony,email,message,Php,Symfony,Email,Message,我正在尝试创建一封电子邮件,向与特定公司相关的所有用户发送邮件。如果我将收件人数组添加到我的电子邮件中,并使用一封电子邮件进行测试,我可以看到所有用户电子邮件都打印在测试电子邮件中。当我尝试将相同的收件人数组传递到setTo而不是使用单个to电子邮件地址时,我收到一条消息“警告:非法偏移类型” Se设置为接受带有电子邮件和名称的关联数组(签入文档),因此您应该使用以下内容修改代码: foreach($company->getUsers() as $user){ array_push

我正在尝试创建一封电子邮件,向与特定公司相关的所有用户发送邮件。如果我将收件人数组添加到我的电子邮件中,并使用一封电子邮件进行测试,我可以看到所有用户电子邮件都打印在测试电子邮件中。当我尝试将相同的收件人数组传递到setTo而不是使用单个to电子邮件地址时,我收到一条消息“警告:非法偏移类型”


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());