PHPMailer を使用して基本フォームを電子メール アドレスに送信していますが、次のエラーが発生します。
SMTP エラー: 認証できませんでした。メッセージを送信できませんでした。メーラー エラー: SMTP エラー: 認証できませんでした。SMTP サーバー エラー: VXNlcm5hbWU6
奇妙なことに、もう一度送信してみると、うまくいきます。最初のエラーの後、フォームを送信するたびにうまくいきます。しかし、数分間放置してからもう一度試すと、同じエラーが再び発生します。
ユーザー名とパスワードは正しくなければなりません。そうしないと、うまく動作しないこともあります。テストのために次の(非常に基本的な)スクリプトを作成しましたが、同じ結果になりました。
<?php
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.host.com";
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->From = "[email protected]";
$mail->FromName = "From Name";
$mail->AddAddress("[email protected]");
$mail->AddReplyTo("[email protected]");
$mail->IsHTML(true);
$mail->Subject = "Here is the subject";
$mail->Body = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>
これは関係ないと思いますが、ホスティングを Linux 共有サーバーに変更したばかりです。なぜこのようなことが起こるのか、理由をご存知ですか?
ありがとう!
***2012 年 2 月 6 日更新
いくつかのテストを行ってきました。結果:
IIS サーバーでスクリプトをテストしたところ、正常に動作しました。エラーは Linux サーバーでのみ発生するようです。
また、Gmail メール サーバーを使用すると、IIS と Linux の両方で正常に動作します。
Linux サーバーの設定に問題があるのでしょうか?
***更新2
swiftmailを試してみましたが、問題なく動作しました:-) そのため、PHPMailerを捨てます
答え1
問題がサーバー側か PHPMailer 側かはわかりませんが、Swiftmail を試してみたところ問題なく動作しました。私は通常、何かが動作しない理由を知りたいのですが、問題が見つからず、テクニカル サービスも私と同じように途方に暮れています。そのため、今後はプロジェクトで Swiftmail を使用するつもりです。
助けてくれてありがとう!
答え2
次のように TLS 接続を要求してみてください。
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
SOのこの質問/回答にはさらに詳しい情報があります。phpmailer の代わりに php PEAR ライブラリを使用するよう推奨されています。