xoauth認証でgmail apiを使用してGmailでメールを送信しようとしています。Google の IMAP の例は正常に動作します。これらの記事に基づいて実装しようとしています:
http://www.boxuk.com/blog/php-smtp-xoauth2-gmail/
http://www.chargenevier.com/2013/02/google-smtp- and-oauth2-authentication/
電子メールを送信しようとすると、次のエラーが表示されます: 致命的なエラー: キャッチされない例外 'Zend_Mail_Protocol_Exception' とメッセージ '5.5.2 構文エラー. e5sm17066681bkg.3 - gsmtp
また、最初の記事で openssl メソッドを試しました。XOAUTH2 に書き込んだ後、サーバーから同じエラーが発生し、接続が閉じられました。
echo base64_encode("user=\1auth=Bearer \1\1") を実行すると興味深いことに、constructAuthString メソッドで生成された $smtpInitClientRequestEncoded 変数をエコーすると、それよりも短い文字列が得られました。 IMAP の例。そして、mail.google.com は 5.5.2 より短いエンコードされた文字列の応答をデコードできません。
function constructAuthString($email, $accessToken) {
return base64_encode("user=$email\1auth=Bearer $accessToken\1\1");
}
function sendEmail($email,$accessToken){
$smtpInitClientRequestEncoded = constructAuthString($email, $accessToken);
echo '<br/><br/>BASE64: ' . $smtpInitClientRequestEncoded;
$config = array('ssl' => 'ssl',
'port' => '465',
'auth' => 'xoauth',
'xoauth_request' => $smtpInitClientRequestEncoded
);
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail();
$mail->setBodyText('some body text');
$mail->setFrom($email, 'Some Sender');
$mail->addTo("myemail@gmail.com", 'Some Recipient');
$mail->setSubject('Test sending by smtp');
$mail->send($transport);
}
あなたはどう思いますか、何が間違っていますか?これが認証されないのはなぜですか?