-1

我用 C# 编写了一个测试应用程序,它使用新的 Gmail API 创建草稿消息。当消息没有附件时它工作正常。

我正在从 IMAP API 迁移,并已将 MailBee.NET 组件与该 API 一起使用。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) 是否可以附加多个文件?文档自始至终指的是单个文件,而多部分指南正好指的是两个部分:元数据和附件。

4

3 回答 3

1

提供您正在上传的示例“原始”字段肯定有助于调试(base64 编码或直接)。

然而,这听起来与: GMail API:无法在草稿中添加附件

于 2014-06-27T00:08:49.813 回答
0

也关于这个: m.Raw = Convert.ToBase64String(msg.GetMessageRawData());

您要确保使用来自https://www.rfc-editor.org/rfc/rfc4648#section-5的“网络安全”(又名“网址安全”)base64 编码字母表

正如您提到的 URL 的文档中所说:“””您的应用程序可以使用 drafts.c​​reate 方法创建草稿。一般过程是:

创建符合 RFC 2822 的 MIME 消息。将消息转换为 URL 安全的 base64 编码字符串。创建草稿,将 drafts.message.raw 字段的值设置为编码字符串。"""

Google API 使用

于 2014-06-27T00:36:14.800 回答
0

就像 GmailGuy 提到的另一个问题的海报一样,这已经神奇地在一夜之间开始工作。所以它毕竟一定是Gmail方面的问题。

关于:

m.Raw = Convert.ToBase64String(msg.GetMessageRawData());

感谢您对此的提醒;实际上,我之前已经对其进行了编码,但是在尝试 20 种不同的方法以使其正常工作时,我将其删除并忘记将其重新添加!

另外,要确认:是的,当您使用原始消息方法时,您可以添加多个附件。

于 2014-06-27T05:43:28.680 回答