29

現在、新しいGmail REST APIをテストしようとしています。

API Explorerでは、OAuth 2.0 を使用してリクエストを承認し、リクエストを実行する (つまり、メッセージを送信する) ことができます。

最初に許可しました。 ここに画像の説明を入力

次のテスト データを使用しています(もちろん、有効なtoメール アドレスを使用しました)。

{    
   "raw": "c2VuZGluZyBhIG1haWwgdXNpbmcgR21haWwgUkVTVCBBUEk=",  
   "payload": { 
     "headers": [ 
       { "name": "to",      "value": "info@something.com"   }, 
       { "name": "from",    "value": "taifunbaer@gmail.com" }, 
       { "name": "subject", "value": "Test Gmail REST API"  } 
     ],
     "mimeType": "text/plain" 
   }
}

また200 OK、次の結果が返されますが、これは問題ないようです。

{
  "id": "146dee391881b35b",
  "threadId": "146dee391881b35b",
}

ただし、メールは正常に送信されず、nobody@gmail.com代わりに受信トレイからメッセージを見つけることができます;:"An error occurred, your message has not been sent."

ここに画像の説明を入力

質問:
1. 誰かがこれをうまくテストしましたか?
2.これを実行するには、他のパラメーターを追加する必要がありますか?



編集: 2 つの異なる HTTP 要求方法があります。

  1. メディア アップロード リクエストのアップロード URI、および
  2. メタデータのみのリクエストのメタデータ URI

The API Explorer currently supports metadata requests only、これは添付ファイルのない平文メッセージを意味し、これが私がやろうとしていることです。

4

3 に答える 3

1

注:これは PHP 固有の回答ですが、役立つと思う人もいると思います。

私が行ったように PHP で生データを正しく設定するのに苦労している場合は、PHPMailerを使用すると、物事がよりクリーンで簡単になります。

コードにライブラリを含めた後 (composer を使用する場合は、composer.json の require セクションに "phpmailer/phpmailer": "~5.2" を追加するだけです)、基本的な詳細を設定します。

$mail = new PHPMailer();
$mail->From = 'FROM_EMAIL';
$mail->FromName = 'FROM_NAME';
$mail->addAddress('TO_EMAIL','TO_NAME');
$mail->Subject = 'EMAIL_SUBJECT';
$mail->Body = 'EMAIL_BODY';
$mail->preSend(); 
$mime = $mail->getSentMIMEMessage();

これで、$mime を base64 エンコードして、Gmail API の生の文字列を取得できるようになりました。有効な Web セーフ エンコード文字列を取得するには、単純な base64_encode の代わりにこれを使用します。 rtrim(strtr(base64_encode($mime), '+/', '-_'), '=');

于 2016-05-16T14:18:21.807 に答える