邮寄一个 foreach 结构

Mailing a foreach construct

我是 php 的新手,所以如果我说了一些没有意义的话,请不要讨厌我。我有一个带有测验表单的 php 页面,提交后会自行刷新并发布错误答案等。现在我想添加将此结果发送到我的电子邮件的功能。我设法让它发送邮件,但我无法获取全部数据。这是检查和打印问题和答案并(尝试)邮寄的内容:

if (isset($_POST['answers'])){
    $Answers = $_POST['answers']; 
    foreach ($Questions as $QuestionNo => $Value){              
        if ($Answers[$QuestionNo] != $Value['CorrectAnswer']){  
            echo $Value['Question'].'<br />';
            echo 'Your answer: ' . $Value['Answers'][$Answers[$QuestionNo]].'<br />';
            echo 'Correct answer: ' . $Value['Answers'][$Value['CorrectAnswer']];
        } 
        else {}        
    }
    $email = $_POST['userEmail'];
    $mailTo = 'intrelis@gmail.com';
    $mailFrom = 'From: <mail@mail.com>'; 
    $msgSubject = 'English level test from' . $email;
    $msgBody = ;

    mail ($mailTo, $msgSubject, $msgBody, $xHeaders);    
}

我想将打印在页面上的信息发送到我的邮箱,但我不知道该怎么做。我在 $msgBody 中放了什么?我尝试了不同的想法,但是邮件正文总是空的...

你应该像这样在 var 中存储答案

//Define variable on top outside loop
$your_answer = '';
$correct_answer = '';

...
$your_answer .= 'Your answer: ' . $Value['Answers'][$Answers[$QuestionNo]];

$correct_answer .= 'Correct answer: ' . $Value['Answers'][$Value['CorrectAnswer']];

...
//After loop
echo $your_answer.'<br />';
echo $correct_answer;

并在邮件中将其连接到正文中

$msgBody = $your_answer . "\n" . $correct_answer ."\n";

使用字符串连接将每个问题和答案添加到循环中的消息正文中。

if (isset($_POST['answers'])){
    $msgBody = '';
    $Answers = $_POST['answers']; 
    foreach ($Questions as $QuestionNo => $Value){              
        if ($Answers[$QuestionNo] != $Value['CorrectAnswer']){  
            echo $Value['Question'].'<br />';
            echo 'Your answer: ' . $Value['Answers'][$Answers[$QuestionNo]].'<br />';
            echo 'Correct answer: ' . $Value['Answers'][$Value['CorrectAnswer']];
            $msgBody .= "Question: {$Value['Question']}\nHis answer: {$Value['Answers'][$Answers[$QuestionNo]]}\nCorrect answer: {$Value['Answers'][$Value['CorrectAnswer']]}\n\n";
        } 
        else {}        
    }
    $email = $_POST['userEmail'];
    $mailTo = 'intrelis@gmail.com';
    $mailFrom = 'From: <mail@mail.com>'; 
    $msgSubject = 'English level test from' . $email;

    mail ($mailTo, $msgSubject, $msgBody, $xHeaders);    
}

实际上我没有看到你在哪里分配变量'$msgBody'。这是一个如何做到这一点的例子:

<?php

function sendMail($msgBody)
{

$email = $_POST['userEmail'];
$mailTo = 'intrelis@gmail.com';
$mailFrom = 'From: <mail@mail.com>';
$msgSubject = 'English level test from' . $email;

mail($mailTo, $msgSubject, $msgBody, $xHeaders);

}

if (isset($_POST['answers'])) {
$Answers = $_POST['answers'];
$output = "";
foreach ($Questions as $QuestionNo => $Value) {
    if ($Answers[$QuestionNo] != $Value['CorrectAnswer']) {

        $newOutput = $Value['Question'] . '<br />';
        $newOutput .= 'Your answer: ' . $Value['Answers'][$Answers[$QuestionNo]] . '<br />';
        $newOutput .= 'Correct answer: ' . $Value['Answers'][$Value['CorrectAnswer']];

        echo $newOutput;
        $output .= $newOutput;

    } else {
    }
}
sendMail($output);
}