当前位置: 首页 > 知识库问答 >
问题:

使用api发送gmail附件失败

穆高澹
2023-03-14

我试图创建一个草案(或发送消息)与附件到gmail使用其API。我读了一些答案,并试图根据我在这里读到的内容构建请求:邮件附件错误的媒体类型Gmail API

在对函数本身进行编码之前,我决定使用Chrome扩展(简单Rest客户端)来模拟应用编程接口请求。下面是请求正文:

Content-Type: multipart_mixed; boundary="foo_bar_baz"
MIME-Version: 1.0
to: receiver@gmail.com
from: sender@gmail.com
subject: Testing Subject

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

This is the testing text

--foo_bar_baz

Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.jpg"

{
"message":
{
"raw" :     "_9j_4AAQSkZJRgABAQEAYABgAAD_2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz_2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz_wAARCAAJAAsDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3-Pn6_8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL_8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3-Pn6_9oADAMBAAIRAxEAPwD9Pfiv-wN4q8cftk3Pji30_wCH9z9v8V6H4ksPiFe3cy-MvAunaeuni68N6bCLR92n3_2G8ErLf2yAeIL_AHW021xdfX9FFAH_2Q**"
}
}

--foo_bar_baz--    

请求头参数如下所示:

Authorization: Bearer *given token*
Content-Type: multipart/mixed; boundary="foo_bar_baz"
Content-Length: 1428

如您所见,它与上面链接中的示例非常相似。然而,我不断得到以下回应:

"message": "Media type 'application/octet-stream' is not supported. Valid media types: [message/rfc822]"

我知道API文档说唯一有效的媒体类型是消息/rfc822(https://developers.google.com/gmail/api/v1/reference/users/drafts/create)。尽管如此,此示例(https://developers.google.com/gmail/api/guides/uploads#multipart)和Stackoverflow中的其他示例则不然。上面链接中问题的作者似乎已经解决了他的问题,而没有使用消息/rfc822媒体类型。

我肯定错过了什么。有人能帮我吗?如果有人能帮我解决这个问题,我将不胜感激。

共有1个答案

易超
2023-03-14

好的,所以如果你使用 /upload媒体功能(适用于所有消息,无论大小),那么例如,它应该是像下面这样的东西(看起来我有点弄错了):

POST https://www.googleapis.com/upload/gmail/v1/users/me/messages/send
Content-Type: multipart/related; boundary=foo_bar_baz

然后,您的帖子正文应该是以下内容(未编码,等等):

--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{
}

--foo_bar_baz
Content-Type: message/rfc822
MIME-Version: 1.0
to: receiver@gmail.com
from: sender@gmail.com
subject: Testing Subject

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

This is the testing text

--foo_bar_baz

Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.jpg"




--foo_bar_baz--

因此需要注意的是,它实际上是“多部分/相关”的,它有一个application/json(对于某些请求,您可以在那里添加参数)部分以及一个包含整个电子邮件的message/rfc822部分。

这确实不容易——如果你能使用它们,图书馆肯定会让你不那么痛苦!

 类似资料:
  • 所有数据以文本格式发送,而不是作为附件的PDF格式。 内容类型:多部分/备用;边界=myapp--_myapp_内容类型:文本/普通;charset=UTF-8Content-Transfer-Encoding:7bit测试消息--myapp--_myapp_Content-Type:Application/pdf;name=myPdf。PDF内容处置:附件;filename=myPdf。PDF内

  • 问题内容: 我正在尝试使用Gmail API和以下功能发送各种大小的电子邮件。 通常,这可以正常工作,但是对于超过10MB的附件(这种情况很少见,但会发生),我 认为这 是因为在发送包含大型附件的邮件时超时。 是否有办法解决这个问题,例如指定大小或增加超时限制?Gmail API文档中提到了尺寸,但我一直在努力了解如何在Python中使用尺寸,甚至是否有帮助。 问题答案: 您需要对大文件使用MED

  • 下面是我的代码片段: 为电子邮件创建消息。 args:发件人:发件人的电子邮件地址。 收件人:接收人的电子邮件地址。 主题:电子邮件的主题。 message_text:电子邮件的文本。 返回: 包含base64url编码的电子邮件对象的对象。 在gmail中添加附件“noname”的电子邮件

  • Google::API::ClientError(InvalidArgument:需要收件人地址) 我检查过用ruby gmail api V0.9发送电子邮件,我也发现了这一点,但它使用了类,而我在gmail api ruby客户端库中找不到。当前,包含字符,但我在没有它的情况下对它进行了测试,结果它不起作用。 而且,我还想在邮件中发送附件。

  • API调用是一个,用于: 发送到API的请求体为: 这是有效载荷的样子: 更新:我在这里上传了原始电子邮件的例子。发送的消息在左边,接收的消息在右边。

  • 我用竹子来让我的网站访问者填写并发送一份联系表。 我创建了一个服务帐户 我授予它全域权限 我添加了以下范围:https://www.googleapis.com/auth/gmail.addons.current.action.compose https://www.googleapis.com/auth/gmail.addons.current.message.metadatahttps://w