2017-01-23 4 views
1

Мне нужно отправить данные формы в почтовое сообщение в виде таблицы. для этого я использую PHPMailer. когда я пытаюсь отобразить значения, выбранные пользователем, он отображается только как массив. может ли кто-нибудь помочь мне найти то, что неправильно в этом коде?Невозможно присвоить значение эха

Ниже часть HTML

<input type="checkbox" name="Favorite_Drink[]" value="Vodka">Vodka 
<input type="checkbox" name="Favorite_Drink[]" value="Vodka">Vodka 
<input type="checkbox" name="Favorite_Drink[]" value="Bear">Bear 

Вот PHP часть

$Favorite_Drink = $_POST['Favorite_Drink']; 
$mail = new PHPMailer; 

//$mail->SMTPDebug = 3;        // Enable verbose debug output 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = '[email protected]';     // SMTP username 
$mail->Password = 'pass';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 587;         // TCP port to connect to 

$mail->setFrom('[email protected]', 'User'); 
$mail->addAddress('[email protected]', 'Joe User');  // Add a recipient 
//$mail->addAddress('[email protected]');    // Name is optional 
$mail->addReplyTo('[email protected]', 'Information'); 
$mail->addCC('[email protected]'); 
//$mail->addBCC('[email protected]'); 
$mail->Subject = 'Here is the subject'; 
//$mail->Body = "Name of patient is "; 
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 
$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$mail->isHTML(true); 
$mail->Subject = ' Test'; 
$mail->Body = <<<EOF 
<html><body> 

    <br> 
    <table rules="all" style="border-color: #666;" cellpadding="10"> 
     <tr style='background: #eee;'> 
      <td>Favorite_Drink </td> 
      <td> echo implode(" ",$Favorite_Drink)."<br>";</td> 
     </tr> 
</table> 
</body> 
</html> 
EOF; 

      //Altbody is used to display plain text message for those email viewers which are not HTML compatible 

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 
     } 
} 
+0

Вы можете var_dump ($ Favorite_Drink); ?? – Kaylined

ответ

3

Операторы PHP не выполняются внутри данного документа. Поэтому он не выполняет echo или вызывает функцию implode(). Он просто расширяет переменные, поэтому, когда вы используете $Favorite_Drink, он расширяется до Array.

Сначала вы должны поместить результат implode() в переменную.

$drinks = implode(" ", $Favorite_Drink); 
$mail->Body = <<<EOF 
<html><body> 

    <br> 
    <table rules="all" style="border-color: #666;" cellpadding="10"> 
     <tr style='background: #eee;'> 
      <td>Favorite_Drink </td> 
      <td> $drinks <br></td> 
     </tr> 
</table> 
</body> 
</html> 
EOF; 
+0

для определения +1. Я получил четкую картину здесь. –

-1
<input type="checkbox" name="Favorite_Drink['checkBox']" value="Vodka"> 

Теперь этот показатель может быть использован для получения значения. Применить это ко всем флажкам

+2

Если он это сделает, он не получит их всех. Использование 'name = xxx []' говорит PHP объединить все входы в индексированный массив. – Barmar

+0

@Barmar здесь –

 Смежные вопросы

  • Нет связанных вопросов^_^