5

Paypal決済を扱うテストサイトを作ろうとしています。支払いが成功した後、PHP SwiftMailer を使用してユーザーにメールを送信しようとしています (これが私の IPN です)。

トランスポートのコードは次のとおりです。

        $transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl')
          ->setUsername('xxx@xxx.co.uk')
          ->setPassword('xxxx');    

    $mailer = Swift_Mailer::newInstance($transport);

共有サーバーでホストされている googlemail と別のメールを使用しようとしましたが、どちらもエラーが発生する問題があります。

残念ながら、私はこの通常のエラーが発生しています:

  Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "xxx@xxx.co.uk" using 2 possible authenticators' in /home/xxx/public_html/paypal/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:184 

  Stack trace: 

  #0 /home/xxx/public_html/paypal/lib/classes/Swift/Transport/EsmtpTransport.php(312): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport)) 

  #1 /home/xxx/public_html/paypal/lib/classes/Swift/Transport/AbstractSmtpTransport.php(120): Swift_Transport_EsmtpTransport->_doHeloCommand() 

  #2 /home/xxx/public_html/paypal/lib/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() 

  #3 /home/xxx/public_html/paypal/ipn.php(113): Swift_Mailer->send(Object(Swift_Message)) 

  #4 /home/mctikudo/public_html/paypal/ipn.php(46): sendMail(Resource id #3, Array) 

  #5 {main} thrown in /home/xxx/public_html/paypal/lib/classes/Swift/Transport/Esmtp/AuthHandler.php on line 184

私はいくつかの調査を行い、輸送の設定でいくつかのアプローチを試みました。しかし、まだ何も機能していないようです。IPNコードを別のホスティング会社の下にある別のサーバーに配置しようとするまでは、驚くべきことにうまくいきました. 他のコードと同じコード。

これが、他のサーバーに何かを設定する必要があると推測する理由です。

SwiftMailer を機能させるためにサーバーで有効になっていることを確認する必要があることはありますか?

4

4 に答える 4

18

これは古いかもしれませんが、誰かがこれを通して助けを得るかもしれません. 私も同じ問題に直面し、誰かがメール クライアントまたは別のサイトを介してあなたのアカウントをハッキングしようとしているという内容のメールを自分の gmail アカウントに受け取りました。次に、検索したところ、以下を実行するとこの問題が解決することがわかりました。

https://accounts.google.com/UnlockCaptchaに移動し、アカウントのロックを解除して、他のメディア/サイトからアクセスできるようにします。

更新:2015

また、これを試すこともできます。 https://myaccount.google.com/security#connectedappsにアクセスしてください 。下部の右側には、[安全性の低いアプリを許可する] オプションがあります。「OFF」の場合は、ボタンをスライドしてONにします。

于 2013-12-18T11:22:52.137 に答える
3

私はこれが古いことを知っていますが、これが誰かを正しい方向に向けることを願っています. Mandrill と Swiftmailer の組み合わせを使用しているときに、これと同じ問題が発生しました。

私の問題は、サーバーがポート 587 からの SMTP メッセージを停止していたことでした。これは、サーバー上の FKA SMTP Tweak 設定に関連していました。

したがって、Cpanel を持っていて WHM にアクセスできる場合は、微調整の下にあるメール設定を調べて、送信 SMTP メールが制限されているかどうかを確認してください。他のオプションは、おそらくサーバーがポートを疑わしいと見なすことです。ポートを変更してみてください。ホスティング会社が適切なポートのリストを持っていることがわかりました。

于 2015-01-28T18:21:45.447 に答える
0

遅すぎることはわかっていますが、このエラーに不満を感じていたので、これらすべての回答のおかげで修正しました。これが役立つことを願っています。

これは、AWS Elastic BeansTalk でホストされているウェブサイトで機能しました。これをあなたのemail.phpなどに追加してください

require_once 'files-needed/vendor/autoload.php';
//to send emails to our users
//google does not recognize this so we must change google settings
//(Allow less secure apps) Turned on
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
    ->setUsername(EMAIL)
    ->setPassword(PASSWORD);

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

そしてロネオのおかげで私はこれをやった

https://accounts.google.com/UnlockCaptcha </a> に移動し、アカウントのロックを解除して、他のメディア/サイトからアクセスできるようにします。

ステップ 1:(重要!!) このリンクにアクセスするときは、

https://accounts.google.com/UnlockCaptcha </a>

あなたはphpコードから同じメールからサインインしています.

ステップ 2: ページの指示に従い、すぐに自分の Web サイトにアクセスしてメールを送信しました。

于 2020-11-25T13:01:55.780 に答える