PHP Mailer - foreach в теле сообщения

Я хочу включить результаты с помощью foreach в тело сообщения электронной почты. PHP Mailer, кажется, просто обрезает сообщение, когда я добавляю оператор foreach. Любые идеи о том, как включить несколько результатов в тело сообщения?

$mail->Body    = '*** Automated email - do not reply ***<br><br>Hello '.$Name.', <br><br>We were able to connect you with the following services. <br><br> ';
foreach($findResult['data'] as $key=>$findData){ 
 if($findData['CompanyEmail'][0] != NULL || $findData['CompanyPhone'][0] != NULL) { 
     echo $findData['CompanyName'][0]; 
     echo $findData['CompanyContact'][0]; 
     echo $findData['CompanyPhone'][0];
     echo $findData['ContactEmail'][0];
     }?><br><?php }
$body .='<br><br>Thank you for using our directory.<br><br><br>Regards,<br><br>Sender';

P.S. Если я уберу ';' перед foreach я получаю сообщение об ошибке.


person user2551881    schedule 17.01.2014    source источник
comment
У вас есть $mail->Body и $body, которые совершенно не связаны между собой... а в foreach вы просто выводите материал. Если вы хотите, чтобы все было в теле почты, кладите туда, а не повсюду.   -  person Till Helge    schedule 17.01.2014
comment
@TillHelge, разве люди сюда не за этим приходят? Учиться?   -  person Styphon    schedule 17.01.2014
comment
@Styphon Эта страница не очень подходит для обучения основам. Из вопроса легко увидеть, что даже самые основные методы отладки (эхо/логирование переменной) неизвестны ОП, и он никогда не узнает их из SO, потому что все, что он здесь получает, - это рабочие фрагменты кода, в то время как он действительно нужно правильно объяснить, в чем проблема и как самому обнаружить проблему.   -  person Till Helge    schedule 17.01.2014
comment
@TillHelge Я согласен со Стифоном. Когда полные новички публикуют вопросы, такие как OP, которые включают их код, что они ожидают, показывают некоторые усилия и не требуют написания приложения для них; для этого и существует SO. Это такие вопросы, как «Как отправить почту в PHP?» Может ли кто-нибудь написать скрипт, который отправляет мне пользовательский ввод, что не приветствуется   -  person Ryan    schedule 17.01.2014


Ответы (1)


Вместо использования эха вам нужно использовать $mail->Body .= для продолжения строки. Как это:

$mail->Body    = '*** Automated email - do not reply ***<br><br>Hello '.$Name.', <br><br>We were able to connect you with the following services. <br><br> ';
foreach($findResult['data'] as $key=>$findData){ 
    if($findData['CompanyEmail'][0] != NULL || $findData['CompanyPhone'][0] != NULL) { 
        $mail->Body .= $findData['CompanyName'][0]; 
        $mail->Body .= $findData['CompanyContact'][0]; 
        $mail->Body .= $findData['CompanyPhone'][0];
        $mail->Body .= $findData['ContactEmail'][0];
    }
}
$body .='<br><br>Thank you for using our directory.<br><br><br>Regards,<br><br>Sender';

Если, как я подозреваю, $body также должно быть частью электронного письма, то измените и его на $mail->Body .=.

person Styphon    schedule 17.01.2014
comment
Спасибо за помощь, Стайфон. Я очень ценю это. Это работает, и я понимаю, почему это не сработало раньше. :) - person user2551881; 17.01.2014
comment
Большое спасибо за это. - person Char; 11.06.2017