簡體   English   中英

PHPMailer無法通過Gmail發送電子郵件,返回空白頁

[英]PHPMailer not sending e-mail through Gmail, returns blank page

我正在嘗試在頁面底部設置聯系表格。 我正在使用PHPMailer,並嘗試通過我的gmail帳戶接收電子郵件。 每次提交表單時,我的url都會更改為url / email.php,並且我會得到一個空白頁。 我究竟做錯了什么? 誰能看到我顯然不見的明顯錯誤?

HTML:

<div class="container-fluid">
        <form action="email.php" id="contact-me" method="post" name="contact-me">
          <div class="row-fluid">
            <div class="form-group">
              <div class="col-md-3 col-md-offset-3">
                <input class="input" name="name" id="name" placeholder="Name" type="text">
              </div>
              <div class="col-md-3">
                <input class="input" id="email" name="email"
                placeholder="Email" type="text">
              </div>
            </div>
          </div>
            <div class="form-group">
                <textarea class="input input-textarea" id="message" name="message" placeholder="Type your message here" rows=
                "5"></textarea>
            </div>
            <input name="send" class="send" type="submit" value="Get In Touch">
        </form>
  </div>
</section>

PHP:

<?php
if (isset($_POST['submit']))
{
require('PHPMailer-master/PHPMailerAutoload.php');
require_once('PHPMailer-master/class.smtp.php');
include_once('PHPMailer-master/class.phpmail.php');

$name = strip_tags($_Post['name']);
$email = strip_tags($_POST['email']);
$msg = strip_tags($_POST['message']);
$subject = "Message from Portfolio";

$mail = new PHPMailer();
$mail->isSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';                            
$mail->Port = 587;     
$mail->Username = 'me@gmail.com';       
$mail->Password = '***********';

$mail->From = $email;
$mail->FromName = $name;

$mail->AddAddress("me.com", "Katia Sittmann"); 
$mail->AddReplyTo($email, $name);
$mail->isHTML(true); 

$mail->WordWrap = 50;
$mail->Subject =$subject;
$mail->Body = $msg;
$mail->AltBody ="No message entered";

if(!$mail->send()) {
  echo 'Message could not be sent.';
  echo 'Mailer Error: ' . $mail->ErrorInfo;
  exit;
}else{
   header("Location: thank-you.html");
}
}
?>

您在這里有一些非常混亂的代碼。 您應該從一個最新的示例開始,而不是一個舊的示例,並確保您使用的是最新的PHPMailer(至少是5.2.10)。

不要這樣做:

require('PHPMailer-master/PHPMailerAutoload.php');
require_once('PHPMailer-master/class.smtp.php');
include_once('PHPMailer-master/class.phpmail.php');

您所需要做的就是這,它將在需要時自動加載其他類:

require 'PHPMailer-master/PHPMailerAutoload.php';

這行不通:

$name = strip_tags($_Post['name']);

PHP變量區分大小寫,因此請執行以下操作:

$name = strip_tags($_POST['name']);

這將導致問題:

$mail->From = $email;

執行此操作時,您正在偽造“發件人”地址,該地址將被SPF檢查拒絕。 將您自己的地址放在此處,然后像您已經在做的那樣,讓回復收件人攜帶提交者的地址。

如果未通過該控件提交表單,則Submit可能不包括在提交中,例如,如果通過在文本輸入中點擊return來提交表單。 檢查您知道將始終存在於提交中的字段:

if (array_key_exists('email', $_POST)) {...

添加try / catch不會實現任何目的-PHPMailer不會拋出異常,除非您要求這樣做,否則不會。

您正在主體上應用strip_tags ,但隨后調用$mail->isHTML(true); -是否要HTML?

綜上所述,所有這些都不會導致空白頁。 很可能您遇到了最近很流行的gmail身份驗證問題,並看到需要啟用調試輸出:

$mail->SMTPDebug = 2;

然后閱讀您所看到的故障排除指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM