PHPMailer中的消息体空无法弄清楚什么是错误的

时间:2016-07-26 13:29:13

标签: 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.';
}}

?>

基本上我已经检查了$ body值,它应该回应它。但当我点击'sendmail'按钮时,它会回显:消息未发送.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专业人员,可能会有很多noob错误甚至语法错误,我不是在这里被判断和判刑,我需要人们的帮助比我更好!

1 个答案:

答案 0 :(得分:4)

$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变量。