2017-01-05 258 views
1

代碼:通過本地SMTP服務器發送電子郵件

<?php 
require 'PHPMailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 

$mail->CharSet="utf-8"; 
$mail->isSMTP();         // Set mailer to use SMTP 
$mail->Host = '172.17.224.12';     // Specify main and backup SMTP servers 
$mail->SMTPAuth = false;       // Enable SMTP authentication 
//$mail->Username = '***';   // SMTP username 
//$mail->Password = '***'; // SMTP password 
$mail->SMTPSecure = 'TLS';       // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 25;         // TCP port to connect to 

$mail->setFrom('[email protected]', 'Company.com'); 
$mail->addReplyTo('[email protected]'); 
$mail->addAddress('[email protected]'); // Add a recipient 

$mail->isHTML(true); // Set email format to HTML 

$bodyContent = '<h1>How to Send Email using PHP in Localhost by CodexWorld</h1>'; 
$bodyContent .= '<p>This is the HTML email sent from localhost using PHP script by <b>CodexWorld</b></p>'; 

$mail->SMTPDebug = 2; 
$mail->Subject = 'Email from Localhost by CodexWorld'; 
$mail->Body = $bodyContent; 

if(!$mail->send()) { 
    echo 'Message could not be sent.<br>'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 

} else { 
    echo 'Message has been sent'; 
} 
?> 

當我運行這段代碼,它說郵件已發送。但是,當我看着我的電子郵件時,有一個通知說通過我的代碼發送的電子郵件被反彈回來。

可能是什麼問題?是我的代碼中的配置還是它的服務器?

screencap of the bounce back email

+0

我認爲你正試圖通過PHP發送電子郵件的服務器 - 本地服務器 - 沒有被授權發送電子郵件,並視爲垃圾郵件(像其他人在嘗試通過使用您的憑證發送電子郵件)。當我需要讓我的腳本從服務器發送電子郵件時,然後將我的服務器IP添加爲DNS記錄中的SPF記錄。這樣,我的電子郵件服務器就知道IP根據我的知識發送電子郵件並允許。就你而言,我認爲你可能會添加你的IP來暫時解決問題。但是,您以後也需要爲生產服務器IP執行此操作。如果這是當然的情況下...關於SPF記錄 – smozgur

+0

更多信息:https://mxtoolbox.com/problem/spf/txt-record – smozgur

+0

SMTPSecure應該是'tls',不'TLS',雖然你可能穿上」根本不需要內部服務器。添加答覆沒有任何意義,這與您的發件人地址相同。如果您的郵件服務器接受您的郵件(即您的代碼正常),PHPMailer的參與就會結束。之後發生的任何事情都是郵件服務器和域配置領域。 – Synchro

回答

0

對於那些誰遇到同樣的問題,有什麼解決這個問題的smozgur的答案。

我認爲你正試圖通過PHP發送電子郵件的服務器 - 你 本地服務器 - 沒有被授權發送電子郵件,並(像其他人在嘗試通過使用您的憑證發送電子郵件)視爲垃圾郵件 。 當我需要讓我的腳本從服務器發送電子郵件時,我將DNS服務器IP作爲DNS記錄中的SPF記錄添加到 中。這樣,我的電子郵件 服務器知道,IP在我的知識和允許發送電子郵件。在你的情況下,我想你可能會添加你的IP來臨時解決 問題。但是,您需要稍後以生產服務器IP的方式爲 。如果這是當然..

我聯繫了主管,並告訴他電子郵件功能的狀態,這是電子郵件正在發送,但郵件服務器將電子郵件返回給發件人。此外,問題的可能原因,即本地服務器未被授權發送電子郵件並被視爲垃圾郵件。最後,可能的解決方案是將服務器IP添加爲DNS記錄中的SPF記錄。

相關問題