コードのメールを送信:ローカルの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
あなたのローカルサーバであるphpを介して電子メールを送信しようとしているサーバは、電子メールを送信する権限がなく、スパムとみなされます(他人があなたの認証情報を使って電子メールを送信しようとしているようです)。私のスクリプトがサーバーから電子メールを送信するようにする必要があるときは、SPFレコードとして自分のサーバーIPをDNSレコードに追加します。そうすれば、私の電子メールサーバーは知っているようにIPが電子メールを送信していることを知っています。あなたの場合は、IPを追加して一時的に問題を解決できる可能性が高いと思います。しかし、後でプロダクションサーバーIPのためにもそれを行う必要があります。これがもちろんの場合... – smozgur
SPFレコードの詳細:https://mxtoolbox.com/problem/spf/txt-record – smozgur
SMTPSecureは 'TLS'ではなく' tls'でなければなりませんが、内部のサーバーにはまったく必要ありません。返信先を送信元アドレスと同じにする必要はありません。あなたのメールサーバーがあなたのメッセージを受け入れるならば(つまりあなたのコードはOKです)、PHPMailerの関与はそこで終わります。その後に起こることは、メールサーバーとドメインの構成領域です。 – Synchro