PHPMailer发送到空白页面

时间:2016-03-26 21:04:40

标签: php phpmailer

我正在尝试让PHPMailer从表单数据中发送邮件(显然)。

ISSUE:

提交表单时,我会收到一个空白页面。没有报告错误。我已经跟踪了围绕这个问题的尽可能多的stackoverflow线程,并且这些线程中没有解决方案为我自己解决了这个问题。

由于

错误:

修正了除以下内容之外的所有错误:2016-03-26 22:10:43 SMTP错误:无法连接到服务器:连接被拒绝(111)2016-03-26 22:10:43 SMTP连接()失败。 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

PHP:

<?php
$message=
'First Name:    '.$_POST['first'].'<br />
Last Name:  '.$_POST['last'].'<br />
Phone:  '.$_POST['phone'].'<br />
Email:  '.$_POST['email'].'<br />
Message:    '.$_POST['message'].'
';

require 'PHPMailer/PHPMailerAutoload.php';

    $mail = new PHPMailer();

    $mail->SMTPDebug = 2;           // Enable verbose debug output
    $mail->IsSMTP();                // Sets up a SMTP connection  
    $mail->CharSet = 'UTF-8';
    $mail->SMTPAuth = true;         // Connection with the SMTP does require authorization    
    $mail->SMTPSecure = "tls";      // Connect using a TLS connection  
    $mail->Host = "smtp.gmail.com";  //Gmail SMTP server address
    $mail->Port = 587;

    // Authentication  
    $mail->Username   = "xxxx@gmail.com"; // Your full Gmail address
    $mail->Password   = "xxxx"; // Your Gmail password

    // Compose
    $mail->SetFrom($_POST['email'], $_POST['firstname'] . ' ' . $_POST['lastname']);
    $mail->AddReplyTo($_POST['email'], $_POST['firstname'] . ' ' . $_POST['lastname']);
    $mail->Subject = "New Contact Form Enquiry";      // Subject (which isn't required)  
    $mail->MsgHTML($message);

    // Send To  
    $mail->AddAddress("xxxx@gmail.com", "xxxx"); // Where to send it - Recipient
    $result = $mail->Send();        // Send!  
    $message = $result ? 'Successfully Sent!' : 'Sending Failed!';      
    unset($mail);
}
?>

HTML:

 <form class="form-inline" name="contactform" action="mailer.php" enctype="multipart/form-data" method="POST">
                    <div class="col-sm-6 form-group form-sty">
                        <label class="sr-only" for="first" required>First Name</label>
                        <input type="text" class="form-control-sty" name="first" placeholder="First Name">
                    </div>
                    <div class="col-sm-6 form-group form-sty">
                        <label class="sr-only" for="last" required>Last Name</label>
                        <input type="text" class="form-control-sty" name="last" placeholder="Last Name">
                    </div>
                    <div class="col-sm-6 form-group form-sty">
                        <label class="sr-only" for="phone" required>Phone</label>
                        <input type="text" class="form-control-sty" name="phone" placeholder="Phone">
                    </div>
                    <div class="col-sm-6 form-group form-sty">
                        <label class="sr-only" for="email" required>Email</label>
                        <input type="email" class="form-control-sty" name="mailfrom" placeholder="Email">
                    </div>
                    <div class="col-sm-12 form-sty">
                        <label class="sr-only" for="comment">Comment</label>
                        <textarea class="form-control-sty" name="message" id="message" rows="7" placeholder="What's on your mind?" required></textarea>
                    </div>
                    <div class="col-sm-12 form-sty form-sty-btn">
                        <button type="submit" value="Submit" class="btn btn-default col-sm-12">Send</button>
                    </div>
                    <p><?php if(!empty($message)) echo $message; ?></p>
                </form>

2 个答案:

答案 0 :(得分:1)

你应该确保没有错误。尝试将此代码放在文件的顶部,以确保报告所有错误/警告并再次运行脚本。

ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(E_ALL);

答案 1 :(得分:1)

您需要将标题重定向回表单(我假设您要将其发送到的位置)使用您的网址替换标题内的位置

<?php
$message=
'First Name:    '.$_POST['first'].'<br />
Last Name:  '.$_POST['last'].'<br />
Phone:  '.$_POST['phone'].'<br />
Email:  '.$_POST['email'].'<br />
Message:    '.$_POST['message'].'
';

require 'PHPMailer/PHPMailerAutoload.php';

    $mail = new PHPMailer();

    $mail->SMTPDebug = 2;           // Enable verbose debug output
    $mail->IsSMTP();                // Sets up a SMTP connection  
    $mail->CharSet = 'UTF-8';
    $mail->SMTPAuth = true;         // Connection with the SMTP does require authorization    
    $mail->SMTPSecure = "tls";      // Connect using a TLS connection  
    $mail->Host = "smtp.gmail.com";  //Gmail SMTP server address
    $mail->Port = 587;

    // Authentication  
    $mail->Username   = "xxxx@gmail.com"; // Your full Gmail address
    $mail->Password   = "xxxx"; // Your Gmail password

    // Compose
    $mail->SetFrom($_POST['email'], $_POST['firstname'] . ' ' . $_POST['lastname']);
    $mail->AddReplyTo($_POST['email'], $_POST['firstname'] . ' ' . $_POST['lastname']);
    $mail->Subject = "New Contact Form Enquiry";      // Subject (which isn't required)  
    $mail->MsgHTML($message);

    // Send To  
    $mail->AddAddress("xxxx@gmail.com", "xxxx"); // Where to send it - Recipient
    $result = $mail->Send();        // Send!  
    if ($result)
    {
        header("Location: : http://www.example.com/contactform.php");
    }
    else {
        echo "sending mail failed: " . $mail->ErrorInfo;
    }
    unset($mail);
}
?>