4

この質問が以前に尋ねられたことは知っており、そこにあるすべての投稿を読みましたが、まだこれに対する解決策を見つけることができません.

ワンプがインストールされたWindowsマシンがあります。Google の SMTP サーバー経由で単純なメールを送信しようとすると、すべて正常に動作します。ただし、同じスクリプトを Ubuntu 12 マシンにコピーすると、次のエラーが表示されます。

PHP Fatal error:  Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "xxx@gmail.com" using 2 possible authenticators' in /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:171
Stack trace:
/home/TestMail/SwiftMail/lib/classes/Swift/Transport/EsmtpTransport.php(289): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport))
/home/TestMail/SwiftMail/lib/classes/Swift/Transport/AbstractSmtpTransport.php(114): Swift_Transport_EsmtpTransport->_doHeloCommand()
/home/TestMail/SwiftMail/lib/classes/Swift/Mailer.php(76): Swift_Transport_AbstractSmtpTransport->start()
/home/TestMail/testmail.php(73): Swift_Mailer->send(Object(Swift_Message))
thrown in /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/AuthHandler.php on line 171

それがトランスポートを初期化する方法です:

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')

ポート 465 でtelnet しようとしましたsmtp.gmail.comが、問題なく動作したので、ファイアウォールの問題ではないはずです。

PHPでSSLを有効にしています。別のメールサーバーを使用して、SSL ありとなしの 2 つの別々のメールを送信しようとしましたが、すべてうまくいきました。私を怒らせるのはGoogleのメールだけです。

ここではどんなアイデアでも大歓迎です。

私のphpコード全体:

<?php
require_once 'SwiftMail/lib/swift_required.php';
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
  ->setUsername('xxx@gmail.com')
  ->setPassword('xxx');

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

$htmlbody = 'some html here';

// Create a message
$message = Swift_Message::newInstance('without head')
    ->setFrom(array('<from email>' => '<some sender>'))
    ->setTo(array('<to email>' => '<some recepient>'))
    ->setBody($htmlbody, 'text/html');

// Send the message
$result = $mailer->send($message);

var_dump($result);
?>

ありがとう!

4

3 に答える 3

25

これは古いスレッドですが、同じエラーに対して私の解決策は少し異なりました。私のSwift構成は問題ないことがわかりました。私のサーバーからの IP は、疑わしいものとして Google によってブロックされました。このリンクにアクセスして、サーバーからメーラー コードを実行することで、クリアできました。

http://www.google.com/accounts/DisplayUnlockCaptcha

于 2013-07-03T21:26:25.577 に答える
2

2 段階の検証認証が有効になっていないことも確認できます。これは私の場合でした。

于 2012-12-12T12:44:39.870 に答える
1

SOへようこそ。これは、答えというよりも長いコメントです。エラー メッセージを投稿していただき、ありがとうございます。

PHP 致命的なエラー: /home/TestMail/SwiftMail/lib/classes/Swift/Transport/Esmtp/ で、「2 つの可能なオーセンティケーターを使用してユーザー名 "xxx@gmail.comm" の SMTP サーバーで認証に失敗しました」というメッセージを含む例外「Swift_TransportException」がキャッチされないAuthHandler.php:171

その一部は実際のメッセージです:

2 つの可能なオーセンティケーターを使用して、ユーザー名「xxx@gmail.comm」の SMTP サーバーでの認証に失敗しました

それはあなたが作ったタイプミスだと思います:

xxx@gmail.comm
             ^

発生する可能性があります。正しいログイン資格情報を使用していることを確認してください。また、サイトで似たような質問を見つけたとしても、それらがあなたの問題をカバーしているとは限りません。

これが役に立てば幸いです。それ以外の場合は、より多くのエラー情報を提供してみてください。たとえば、swiftmailer のログはありますか? 資格情報とサーバー構成を再確認しましたか? ファイアウォールは何をしているのですか?などなど。

于 2012-09-30T19:20:31.917 に答える