<?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
我認爲你正試圖通過PHP發送電子郵件的服務器 - 本地服務器 - 沒有被授權發送電子郵件,並視爲垃圾郵件(像其他人在嘗試通過使用您的憑證發送電子郵件)。當我需要讓我的腳本從服務器發送電子郵件時,然後將我的服務器IP添加爲DNS記錄中的SPF記錄。這樣,我的電子郵件服務器就知道IP根據我的知識發送電子郵件並允許。就你而言,我認爲你可能會添加你的IP來暫時解決問題。但是,您以後也需要爲生產服務器IP執行此操作。如果這是當然的情況下...關於SPF記錄 – smozgur
更多信息:https://mxtoolbox.com/problem/spf/txt-record – smozgur
SMTPSecure應該是'tls',不'TLS',雖然你可能穿上」根本不需要內部服務器。添加答覆沒有任何意義,這與您的發件人地址相同。如果您的郵件服務器接受您的郵件(即您的代碼正常),PHPMailer的參與就會結束。之後發生的任何事情都是郵件服務器和域配置領域。 – Synchro