调用gmail api发送带有附件的电子邮件(多部分)时,请求的主体是什么样的?

时间:2018-09-18 13:45:30

标签: email gmail angular5 gmail-api rfc822

Google文档提供了以下示例:

POST / upload / gmail / v1 / users / userId / messages / send?uploadType = multipart HTTP / 1.1 主持人:www.googleapis.com 授权:不记名your_auth_token 内容类型:多部分/相关; boundary = foo_bar_baz 内容长度:number_of_bytes_in_entire_request_body

-foo_bar_baz 内容类型:application / json; charset = UTF-8

{   “ id”:字符串,   “ threadId”:字符串,   “ labelIds”:[     串   ],   “代码段”:字符串,   “ historyId”:无符号长,   “有效载荷”:{     “ partId”:字符串,     “ mimeType”:字符串,     “文件名”:字符串,     “标题”:[       {         “名称”:字符串,         “值”:字符串       }     ],     “正文”:users.messages.attachments资源,     “部分”: [       (MessagePart)     ]   },   “ sizeEstimate”:整数,   “原始”:字节 }

-foo_bar_baz 内容类型:message / rfc822

电子邮件消息数据 --foo_bar_baz-- 如果请求成功,服务器将返回HTTP 200 OK状态代码以及任何元数据:

HTTP / 1.1 200 内容类型:application / json

{   “ id”:字符串,   “ threadId”:字符串,   “ labelIds”:[     串   ],   “代码段”:字符串,   “ historyId”:无符号长,   “有效载荷”:{     “ partId”:字符串,     “ mimeType”:字符串,     “文件名”:字符串,     “标题”:[       {         “名称”:字符串,         “值”:字符串       }     ],     “正文”:users.messages.attachments资源,     “部分”: [       (MessagePart)     ]   },   “ sizeEstimate”:整数,   “原始”:字节 }

有人可以通过查看上面的示例来制作示例请求正文吗? 我需要发送带有附件的电子邮件。

1 个答案:

答案 0 :(得分:0)

基于SO related post,正文请求可以是这样的:

var mail = [
  'Content-Type: multipart/mixed; boundary="foo_bar_baz"\r\n',
  'MIME-Version: 1.0\r\n',
  'From: sender@gmail.com\r\n',
  'To: receiver@gmail.com\r\n',
  'Subject: Subject Text\r\n\r\n',

  '--foo_bar_baz\r\n',
  'Content-Type: text/plain; charset="UTF-8"\r\n',
  'MIME-Version: 1.0\r\n',
  'Content-Transfer-Encoding: 7bit\r\n\r\n',

  'The actual message text goes here\r\n\r\n',

  '--foo_bar_baz\r\n',
  'Content-Type: image/png\r\n',
  'MIME-Version: 1.0\r\n',
  'Content-Transfer-Encoding: base64\r\n',
  'Content-Disposition: attachment; filename="example.png"\r\n\r\n',

   pngData, '\r\n\r\n',

   '--foo_bar_baz--'
].join('');

    var response = UrlFetchApp.fetch(
        "https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=media", {
            method: "POST",
            headers: {
                "Authorization": "Bearer " + ScriptApp.getOAuthToken(),
                "Content-Type": "message/rfc822",
            },
            muteHttpExceptions: true,
            payload: mail
});

这也是Amit Agarwal在Google Appscript中从数字灵感中汲取的example code。 此示例说明了如何使用Gmail API轻松发送带有文件附件的电子邮件。