PHPMailer 中的消息正文为空根本无法弄清楚出了什么问题

Jon*_*nas 2 php phpmailer

我一直试图找出问题所在,但无法指出问题所在。我对 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.';
}}

?>
Run Code Online (Sandbox Code Playgroud)

基本上我已经检查了 $body 值,它按应有的方式回显。但是当我点击“发送邮件”按钮时,它会回显:消息未发送。邮件程序错误:消息正文为空。在我添加验证部分之前,一切都运行良好,除了我可以发送一个空表单。如果需要的话,这里是表格:

    <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>
Run Code Online (Sandbox Code Playgroud)

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

Alo*_*tel 5

$mail->Body = $body;
Run Code Online (Sandbox Code Playgroud)

上面的行应该是在添加内容之后$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;
Run Code Online (Sandbox Code Playgroud)

$body您在向变量添加内容之前使用了变量。