PHPMailerライブラリを介してPHPスクリプトでメールを送信しようとしています。次のコードは、過去に警告なしで正常にメールを送信しました。
function mail_attachment($filename, $path, $mailto, $subject, $message) {
include("PHPMailer_5.2.3/class.phpmailer.php");
include("PHPMailer_5.2.3/class.smtp.php");
$email_config = parse_ini_file('email.cfg');
$from = $email_config['sender'];
$alias = $email_config['alias' ];
$smtp = $email_config['Host' ];
$port = $email_config['port' ];
$mail = new PHPMailer();
$mail->SMTPDebug = 2;
$mail->IsHTML(false); // send as HTML?
$mail->WordWrap = 50; // set Word wrap
$mail->IsSMTP();
$mail->Host = $smtp; // set the Host SMTP server
$mail->Port = $port; // set the Host SMTP port
$mail->Subject = $subject;
$mail->Body = $message;
$mail->SetFrom( $from, $alias);
$mail->AddReplyTo($from, $alias);
$mail->AddAddress($mailto);
$mail->AddAttachment($path, $filename);
var_dump( $email_config );
$sent = $mail->Send();
if(!$sent)
echo "Mailer Error: " . $mail->ErrorInfo ."\n";
else
echo "Message has been sent\n";
return $sent;
}
突然、自動レポートメールがユーザーの受信トレイに表示されなくなり、次のメッセージが生成されました。
SMTP -> FROM SERVER:220 relay-8.dlfw.twtelecom.net ESMTP Postfix
<br />SMTP -> FROM SERVER: 250-relay-8.dlfw.twtelecom.net
250-PIPELINING
250-SIZE 25600000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
<br />SMTP -> FROM SERVER:250 2.1.0 Ok
<br />SMTP -> FROM SERVER:554 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost
<br />SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost
<br />SMTP Error: The following recipients failed: [email protected]
Mailer Error: SMTP Error: The following recipients failed: [email protected]<p>SMTP server error: 5.7.1 <localhost.localdomain>: Helo command rejected: Impossible, I am localhost
</p>
Mail Was NOT Successfully Sent!
コードが機能しなくなった理由について何か考えはありますか?
私の側またはリモートメールサーバーに問題がありますか?
次のホスト名構成があります。
/ etc/hostname
Dev07
/ etc/hosts
127.0.0.1 localhost
127.0.1.1 lamp
#Required for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
リモートサーバーは、送信しているHELO
内のlocalhost.localdomain
であるとサーバーが報告しているという事実を気に入らないようです。
これは、リモートサーバーが無効なHELO
sを拒否するようにSMTPサービスを構成したことが原因である可能性があります。また、ホスト名が正しく構成されていないなど、ローカルサーバーで何かが変更された可能性もあります。
ホスト名の設定 を何かに設定して、sendmail
がlocalhost.localdomain
として報告されないようにすることをお勧めします。その間、サーバーのIPアドレス、FQDN、およびホスト名で/etc/hosts
を更新することも一般的には良い考えです。
チュートリアルがあります ここ それを行う方法について。
/etc/hostname:
hostname.domain.tld
/etc/hosts:
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
1.2.3.4 hostname.domain.tld hostname
RedHat/CentOSベースのシステムを使用している場合は、/etc/sysconfig/network
を編集して、以下を設定します。
HOSTNAME=hostname.domain.tld