PHPMailer中的消息正文为空可以';我根本不知道哪里出了问题


Message body empty in PHPMailer can't figure what is wrong at all

我一直在努力找出问题所在,但就是无法指出。我对PHP还很陌生,所以它可能是拼写错误,或者是一些非常小的东西,经验更丰富的人会立即看到。我的网站上有一个联系表格,我希望人们能够给我发电子邮件。这是代码:

<?php
require_once 'libs/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 2;
$mail->Mailer = "smtp";
$mail->Host = "smtp.gmail.com";
$mail->Username = "****@****.com";
$mail->Password = "*****";
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->FromName = $name;
$mail->AddAddress("*******.com", "*******");
$mail->Body = $body;
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$company = $_POST['company'];
$body = "La Personne qui nous contacte est: " . $name . " qui travaille pour: " . $company . " le sujet du message etant: " . $subject . " et le message est: " . $message . " nous pouvons la rejoindre par courriel: " . $email . " ou encore par telephone: " . $phone;
$nameErr = $emailErr = $messageErr = "";
$name = $email = $message = "";
if($_SERVER['REQUEST_METHOD'] == "POST"){
    if(empty($_POST['name'])){
        $nameErr = "Veuillez entrer votre nom.";
    }else{
        $name = test_input($_POST['name']);
        if(!preg_match("/^[a-zA-Z ]*$/",$name)){
            $nameErr = "Seulement des lettres et espaces sont permis";
        }
    }
    if(empty($_POST['email'])){
        $emailErr = "Addresse courriel requise!";
    }else{
        $email = test_input($_POST['email']);
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $emailErr = "L'addresse courriel n'est pas valide!";
        }
    }
    if(empty($_POST['message'])){
        $messageErr = "* Message Obligatoire!";
    }else{
        $message = test_input($_POST['message']);
    }
}
function test_input($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
if(isset($_POST['sendmail'])){
if(!$mail->Send()) {
    echo 'Message was not sent.';
    echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent.';
}}
?>

基本上,我已经检查了$body的值,它会像应该的那样回声。但当我点击"发送邮件"按钮时,它会回显:消息没有发送。Mailer错误:邮件正文为空。就在我添加验证部分之前,除了我可以发送一个空表单之外,一切都很好。如果需要的话,这里是表单:

    <form method="post" style="margin-top: 25px;" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
        <div class="form-group">
            <label for="email">Adresse Courriel: <span class="error">* <?php echo $emailErr;?></span></label>
            <input type="email" class="form-control" name="email" id="email">
        </div>
        <div class="form-group">
            <label for="name">Votre Nom: <span class="error">* <?php echo $nameErr;?></span></label>
            <input type="text" class="form-control" name="name" id="name">
        </div>
        <div class="form-group">
            <label for="phone">Votre Telephone:</label>
            <input type="tel" class="form-control" name="phone" id="phone">
        </div>
        <div class="form-group">
            <label for="company">L'entreprise:</label>
            <input type="text" class="form-control" name="company" id="company">
        </div>
        <div class="form-group">
            <label for="subject">Le Sujet du Message:</label>
            <input type="text" class="form-control" name="subject" id="subject">
        </div>
        <div class="form-group">
            <label for="message">Votre Message: <span class="error"><?php echo $messageErr;?></span></label>
            <textarea name="message" class="form-control" id="message" cols="30" rows="5"></textarea>
        </div>
        <input style="margin-bottom: 10px;" id="sendmail" type="submit" class="btn btn-primary" name="sendmail" value="Envoyer!">
    </form>

我感谢任何花几分钟时间检查并给我一些建议的人!请注意,我当然不是PHP专业人士,可能会有很多错误,甚至语法不好,我不是来这里被评判和判刑的,我需要比我更好的人的帮助!

$mail->Body = $body;

上一行应在向$body添加内容之后。所以你的代码应该是这样的,

$body = "La Personne qui nous contacte est: " . $name . " qui travaille pour: " . $company . " le sujet du message etant: " . $subject . " et le message est: " . $message . " nous pouvons la rejoindre par courriel: " . $email . " ou encore par telephone: " . $phone;
$mail->Body = $body;

在将内容添加到$body变量之前,您使用了该变量。