Java Gmail API插入消息抛出-错误请求(400)

Java Gmail API插入消息抛出-错误请求(400),java,google-api-java-client,gmail-api,Java,Google Api Java Client,Gmail Api,尝试插入从mimessage加载的消息(如gmail api示例所示),有些 消息传递得很好,但有些人会抛出以下消息: com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request <HTML> <HEAD> <TITLE>Bad Request</TITLE> </HEAD> <BODY BGCOLOR="#FFFFF

尝试插入从mimessage加载的消息(如gmail api示例所示),有些 消息传递得很好,但有些人会抛出以下消息:

    com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
<HTML>
<HEAD>
<TITLE>Bad Request</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Bad Request</H1>
<H2>Error 400</H2>
</BODY>
</HTML>

    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:312)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1049)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
如果没有任何其他信息,该错误的可能原因是什么

谢谢

UPD。看起来大于10Mb的消息出现了此错误。谷歌的伙计们,你们能给点建议吗?谢谢

看起来像我所拥有的:-)这里清楚地记录了35MB的限制(,第4行),这对大多数人来说不是问题,因为他们现有的电子邮件系统将电子邮件大小限制在一个较小的数字

final ByteArrayOutputStream output = new ByteArrayOutputStream();
message.writeTo(output);
final String raw = Base64.encodeBase64URLSafeString(output.toByteArray());
if (raw.length() > 35000000) {
    System.err.println("Message too large, skipping");
} else {
    try {
           getGmailService()
                        .users()
                        .messages()
                        .insert("me",
                                new Message().setRaw(raw)).execute();

您需要使用media“/upload”方法发送如此大的内容

您是从服务器发送的吗?另外,请发布发送此错误的代码好吗?@abalos我是从笔记本电脑发送的,请查看编辑后的文章中的代码。感谢大家,似乎记录它的人和编写服务器端代码的人之间存在差异:)是的,GMail文档()也列出了25MB作为限制,即大约31MB Base64 encoded如何在GMail API Java SDK中使用/上传?感谢GMail API Java解释方法插入页面中描述的限制为35mb:。请告知。35MB是强制执行的限制,是的。您遇到的另一个较低(10MB?)限制是www.googleapis.com前端在不使用/batch URL时未发布的基础设施限制。我认为您所指的文档是自动生成的,并且没有区分/详细说明此限制。一般来说,如果你发送的邮件超过了几MB,那么最好使用/上传,因为它更高效,并且支持其他细节,等等。我指的是Gmail API java文档,其中举例说明了如何插入任何高达35 MB的邮件,我不认为它是自动生成的。GMail Java API中没有上传功能,如何使用?而且,实际上我很困惑,我应该使用什么,以及为什么有一个没有为insert/import方法记录的限制。对不起,我错了,insert方法(我正在使用)正在执行/上载-这是insert文档中的内容:“此方法通过两个单独的URI提供媒体上载功能。有关更多详细信息,请参阅有关媒体上载的文档。上传URI,对于媒体上传请求:帖子请告知。
final ByteArrayOutputStream output = new ByteArrayOutputStream();
message.writeTo(output);
final String raw = Base64.encodeBase64URLSafeString(output.toByteArray());
if (raw.length() > 35000000) {
    System.err.println("Message too large, skipping");
} else {
    try {
           getGmailService()
                        .users()
                        .messages()
                        .insert("me",
                                new Message().setRaw(raw)).execute();