我已在C#中编写了一个测试应用程序,该应用程序使用新的Gmail API创建草稿邮件。当邮件没有附件时,它可以正常工作。
我正在从IMAP API迁移并使用该API的MailBee.NET组件。 MailBee.NET组件包含一个产生RFC 2822消息的类,所以我重新使用它并对消息进行Base64编码并分配给" Raw"如下所述的财产:
https://developers.google.com/gmail/api/guides/drafts
MailMessage msg = new MailMessage();
msg.Subject = "test!";
msg.BodyPlainText = "Test content";
msg.Attachments.Add(@"D:\Trace.log", "Trace.log", Guid.NewGuid().ToString(), null, null, NewAttachmentOptions.Inline, MailTransferEncoding.Base64);
Message m = new Message();
m.Raw = Convert.ToBase64String(msg.GetMessageRawData());
Draft d = new Draft();
d.Message = m;
d = gs.Users.Drafts.Create(d, "me").Execute();
没有添加附件时工作正常,但添加附件时响应500响应:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error"
}
],
"code": 500,
"message": "Backend Error"
}
}
有人可以提供一个如何使用.NET API执行此操作的示例吗? API页面上的示例是非常准确的,并没有真正提供有用信息的方式,文档也不是很好。最好使用.NET客户端附带的Message / MessagePart / MessagePartBody类,但是我无法找到有关其使用的明确指导或示例,因此不知道从哪里开始。
问题:
1)任何人都可以使用.NET客户端中的类提供一些使用附件创建草稿消息的示例代码吗?
2)是否可以附加多个文件?文档引用了整个单个文件,而Multipart指南恰好指的是两个部分:元数据和附件。
答案 0 :(得分:1)
提供您正在上传的示例“原始”字段肯定有助于调试(base64编码或直接)。
然而,这听起来与: GMail API : unable to add an attachment in a draft
答案 1 :(得分:0)
也是这样的: m.Raw = Convert.ToBase64String(msg.GetMessageRawData());
您希望确保自己使用"网络安全" (又名" url safe")来自http://tools.ietf.org/html/rfc4648#section-5
的base64编码字母表正如您在提到的网址的文档中所述: """ 您的应用程序可以使用drafts.create方法创建草稿。一般过程是:
创建符合RFC 2822的MIME邮件。 将邮件转换为URL安全的base64编码字符串。 创建草稿,将drafts.message.raw字段的值设置为编码字符串。 """
Google API使用
答案 2 :(得分:0)
就像GmailGuy提到的另一个问题的海报一样,这神奇地开始在一夜之间工作。所以它毕竟一直是Gmail方面的问题。
关于:
m.Raw = Convert.ToBase64String(msg.GetMessageRawData());
感谢对此的提醒;我之前实际编码过它,但在尝试20种不同的东西让事情发挥作用的时候,我把它删除了,忘记把它重新加入!
另外,要确认:是的,在使用原始邮件方法时,您可以添加多个附件。