2016-09-13 145 views
0

當我設置了$mail->isSMTP();時,我已經查看了爲什麼我的PHP腳本沒有發送任何電子郵件。通過SMTP使用PHPMailer發送電子郵件時出錯

在我進入問題之前,我想指出,我正在使用mailgun.org作爲我的SMTP服務器。我的PHP腳本很簡單,我有一個將數據轉發到PHP文件的HTML表單,後者又調用PHPMailer腳本併發送電子郵件。

下面是代碼我的PHP腳本:

date_default_timezone_set('Asia/Manila'); 

require 'phpmailer/PHPMailerAutoload.php'; 
// include 'phpmailer/class.phpmailer.php'; 
// require 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer; 
//$mail->isSMTP(); 
$mail->SMTPDebug = 0; 
$mail->Debugoutput = 'html'; 
$mail->Host = "smtp.mailgun.org"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = "ssl"; 
$mail->Username = ""; //Username removed 
$mail->Password = ""; //Password removed 
$mail->setFrom('', ''); //Email address and Name removed 
$mail->addReplyTo($userMail, $firstName); 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->Subject = 'New Application for website by '. $firstName; 
$mail->msgHTML($theMessage); 
$mail->AltBody = $theMessage; 
if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { //Some HTML code here 
} 

那麼現在,你可以看到,我已經註釋掉$mail->isSMTP();線。這是因爲每當我嘗試使用它時,代碼都不會加載,經過漫長的等待後會出現500錯誤。 (不幸的是,通過cPanel安裝程序不允許我查看Apache日誌)。

我試圖導入只是class.phpmailer.php文件,但這給了我一個致命的錯誤,類SMTP未定義,這是預期的。然後我包含了class.smtp.php文件,它給了我相同的500錯誤。

我看了看周圍的StackOverflow,發現this answer但是它並沒有幫助我的情況。

我曾看過Mailgun的日誌,但他們甚至沒有嘗試連接腳本的記錄。

Additional Information: If it matters, I have the following files in the same directory: 
- sendMail.php //The script above 
- class.phpmailer.php 
- class.smtp.php 
- PHPMailerAutoload.php 
- index.html //Not important in this situation. 

我希望有人能幫助我,現在我依靠非smtp方法。 :/

+0

就像其他問題所述,請執行[故障排除指南](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting)中給出的檢查。這很可能是您的ISP阻止出站SMTP - 您使用的是GoDaddy嗎? – Synchro

+0

@Synchro我在本地主機和生產上都得到了相同的結果。然而,我會檢查與ISP,我在同一主機上運行的Wordpress安裝和smtp工作正常,它似乎是與我的代碼的東西。 –

+0

你確定嗎?默認情況下,wordpress將以isMail()模式使用PHPMailer。順便說一下,你的500錯誤聽起來很簡單,因爲它無法連接。 – Synchro

回答

0

試試這個工作很好..!

date_default_timezone_set('Asia/Manila'); 

require 'phpmailer/PHPMailerAutoload.php'; 
// include 'phpmailer/class.phpmailer.php'; 
// require 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->SMTPDebug = 1; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 465; 
$mail->Username = ""; //Username removed 
$mail->Password = ""; //Password removed 
$mail->addReplyTo($userMail, $firstName); 
$mail->SetFrom('[email protected]', 'my name'); 
$mail->Subject = 'New Application for website by '. $firstName;$mail->MsgHTML($theMessage); 
$mail->AddAddress('[email protected]', 'my name'); 
if($mail->Send()) { 
    echo "Message sent!"; 
}else { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} 
相關問題