我一直在我的应用中使用Gmail API,它一直很好,直到昨天,现在我正在
<ComboBox x:Name="cbDetails"
ItemsSource="{Binding MyDetails}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValue="{Binding MyDetail}"/>
我正在使用multipart来附加文件,这是代码的片段
V/Error: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Request payload size exceeds the limit: 1048576 bytes.",
"reason" : "badRequest"
} ],
"message" : "Request payload size exceeds the limit: 1048576 bytes.",
"status" : "INVALID_ARGUMENT"
}
几天前工作完全正常,现在每当我尝试发送大于1 MB的文件时,我都会收到上述错误,可以解决这个问题吗?
由于
答案 0 :(得分:0)
您可以通过以下任何方式进行上传请求。使用uploadType请求参数指定您使用的方法。
简单上传: uploadType = media 。用于快速传输较小的文件,例如5 MB
或更少。
分段上传: uploadType = multipart 。用于快速传输较小的文件和元数据;在一个请求中传输文件以及描述它的元数据。
可恢复上传: uploadType = resumable 。对于可靠的传输,对于较大的文件尤为重要。使用此方法,您可以使用会话启动请求,该请求可以选择包含元数据。这是一种适用于大多数应用程序的好策略,因为它也适用于较小的文件,每次上传一个额外的HTTP请求。 由于您要发送数据&gt; 5 MB,使用multipart或resumable选项。
public static MimeMessage createEmailWithAttachment(String to,
String from,
String subject,
String bodyText,
File file) throws MessagingException, IOException {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage email = new MimeMessage(session);
email.setFrom(new InternetAddress(from));
email.addRecipient(javax.mail.Message.RecipientType.TO,
new InternetAddress(to));
email.setSubject(subject);
MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(bodyText, "text/plain");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);
mimeBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(file);
mimeBodyPart.setDataHandler(new DataHandler(source));
mimeBodyPart.setFileName(file.getName());
multipart.addBodyPart(mimeBodyPart);
email.setContent(multipart);
return email;
}
查看文档以获取更多信息:https://developers.google.com/gmail/api/guides/uploads
答案 1 :(得分:0)
我有同样的问题。在我的情况下,我无法创建大于1 MB的草稿,尽管Gmail文档声明限制为35 MB。
经过一些测试后,我发现该问题是针对Gmail API的.NET客户端库的特定错误。我的解决方法是编写自己的代码来调用Gmail API,绕过.NET客户端库。我已在此处发布了我的解决方案:http://www.gmass.co/blog/call-the-gmail-api-in-net-without-using-client-library/