2017-01-05 8 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を介して電子メールを送信しようとしているサーバは、電子メールを送信する権限がなく、スパムとみなされます(他人があなたの認証情報を使って電子メールを送信しようとしているようです)。私のスクリプトがサーバーから電子メールを送信するようにする必要があるときは、SPFレコードとして自分のサーバーIPをDNSレコードに追加します。そうすれば、私の電子メールサーバーは知っているようにIPが電子メールを送信していることを知っています。あなたの場合は、IPを追加して一時的に問題を解決できる可能性が高いと思います。しかし、後でプロダクションサーバーIPのためにもそれを行う必要があります。これがもちろんの場合... – smozgur

+0

SPFレコードの詳細:https://mxtoolbox.com/problem/spf/txt-record – smozgur

+0

SMTPSecureは 'TLS'ではなく' tls'でなければなりませんが、内部のサーバーにはまったく必要ありません。返信先を送信元アドレスと同じにする必要はありません。あなたのメールサーバーがあなたのメッセージを受け入れるならば(つまりあなたのコードはOKです)、PHPMailerの関与はそこで終わります。その後に起こることは、メールサーバーとドメインの構成領域です。 – Synchro

答えて

0

、何この問題を解決することはsmozgurの答えです。

私はあなたがPHPを通じて電子メールを送信しようとしているサーバーと思います - あなたの ローカルサーバが - (他の誰かがあなたの資格情報を使用して電子メールを送信しようとしているような)電子メールを送信することを許可し、SPAM として考慮されていません。 スクリプトを作成してサーバーから電子メールを送信する必要がある場合は、 サーバーIPをDNSレコードのSPFレコードとして追加します。そうすれば、私のメールアドレス はIPが私の知っている電子メールを送信していることを知っています。 あなたのケースでは、あなたのIPを追加して 問題を一時的に解決できると思います。しかし、プロダクションサーバIPの場合は、あとで とする必要があります。これがもちろんの場合..

私は監督者に連絡し、電子メール機能のステータスを伝えました。これは電子メールが送信されているが、メールサーバーはその電子メールを送信者に返します。また、問題の考えられる原因、つまりローカルサーバーは電子メールの送信を許可されておらず、スパムとみなされます。最後に、DNSレコードにSPFレコードとしてサーバーIPを追加するという、可能な解決策です。

関連する問題