在C#中使用附件创建草稿的示例?

时间:2014-06-26 21:26:18

标签: c# gmail-api

我已在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指南恰好指的是两个部分:元数据和附件。

3 个答案:

答案 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.c​​reate方法创建草稿。一般过程是:

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

Google API使用

答案 2 :(得分:0)

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

关于:

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

感谢对此的提醒;我之前实际编码过它,但在尝试20种不同的东西让事情发挥作用的时候,我把它删除了,忘记把它重新加入!

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