1

Google OAuth 2.0 Playgroundを使用してメールを送信しようとしています。認証は正常に機能しています。これが私が送信しようとしている非常に単純なメッセージです(スパムを防ぐために電子メールアドレスを変更しました):

 to: 'Michael To' <FakeMichael@gmail.com>
 from: 'John From' <JohnF@mydomain.com>
 subject: 'Test Message'
 htmlBody: '<b>HI!</b><br>Test Message'

これをVBAを使用してBase64 RFC 822に変換すると、これが得られます(他のStackOverflowの投稿ごとに「+」と「-」を交換しようとしましたが、役に立ちませんでした):

dG86ICdNaWNoYWVsIFRvJyA8RmFrZU1pY2hhZWxAZ21haWwuY29tPg1mcm9tOiAnSm9obiBGcm9tJyA8Sm9obkZAbXlkb21haW4uY29tPg1zdWJqZWN0OiAnVGVzdCBNZXNzYWdlJw1odG1sQm9keTogJzxiPkhJITwvYj48YnI-VGVzdCBNZXNzYWdlJw==

Playground では、私のメソッドは POST で、2 つのヘッダーを追加しました。

raw: and the Base64 string above (no quotes or anything)
Content-Type: message/rfc822 <I added this because I kept getting an a different error. Putting this prevetned that error>

リクエスト URI (https を削除したため、2 つ以上のリンクを投稿できません)://www.googleapis.com/upload/gmail/v1/users/me/messages/send

「リクエストを送信」をクリックすると、OK の応答が返されます。

ここに私の要求があります:

POST /upload/gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Raw: <string above>
Content-length: 0
Content-type: message/rfc822
Authorization: Bearer <my token>

応答:

HTTP/1.1 200 OK
Alternate-protocol: 443:quic,p=1
Content-length: 91
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Vary: Origin, X-Origin
Server: UploadServer ("Built on Jun 6 2015 11:14:45 (1433614485)")
Etag: "YAnoF_dHYOakPARISZQhTvRsqto/nwevNUuzaUU_lB19L-UhrwaaUSM"
Pragma: no-cache
Cache-control: no-cache, no-store, max-age=0, must-revalidate
Date: Wed, 10 Jun 2015 15:59:36 GMT
Content-type: application/json; charset=UTF-8
{
  "labelIds": [
    "SENT"
  ], 
  "id": "14dde32bc92c9XYZ", 
  "threadId": "14dde32bc92c9XYZ"
}

ただし、Gmail の送信済みメール フォルダーに移動すると、メッセージはそこにありますが、To、Subject、または Body is フィールドには何もありません。スクリーンショットを参照してください。

これは単純なことだと想像する必要がありますが、Google Gmail API、MIME、Raw Base64 を扱うのは初めてなので、うまくいきません。

ご協力いただきありがとうございます。

--- Tholle の応答ごとに編集 ---

それは役立ちます!生のbase64文字列ヘッダーを削除して、次のように置きました:

From: 'John From' <JohnF@mydomain.com>
Subject: Test Message
To: 'Michael To' <FakeMichael@gmail.com>
Test Message

「要求本文を入力してください」に入力して送信します。これは素晴らしいことです。

フォローアップの 3 つの質問:

  1. セキュリティ上のリスクや制限はありますか (最大長? 2 MB の制限があるかもしれませんが、それは大量のテキストになります)。ヘッダーの生の Base64 文字列とは対照的に、この方法で (本文で) 送信しますか?
  2. (これについては後で詳しく説明します) メッセージ本文を HTML にするにはどうすればよいですか? 「Content-Type: message/rfc822」のコンテンツ タイプが原因で HTML を送信できませんか? HTML を送信することはこのアプリケーションの要件であり、2 つのコンテンツ タイプを持つことはできません。使用できる HTML パラメータはありますか、それともうまくいきませんか?
  3. (これについても宿題をします) 電子メールに PDF ファイルなどの添付ファイルを含めるにはどうすればよいですか?

再度、感謝します!

4

1 に答える 1