Outlook Rest API发送带附件的邮件

4
我写了一个应用程序,通过一个小型控制台应用程序在Azure中作为WebJob运行,自动化地从我们的系统发送邮件。该应用程序可以完美地发送电子邮件,但是当我尝试添加附件集合时出现问题。参考https://msdn.microsoft.com/office/office365/APi/mail-rest-operations#Createandsendmessages,我尝试使用他们的示例代码,并将我的附件集合包含一个看起来像这样的单个对象:

{ "@odata.type": "#Microsoft.OutlookServices.FileAttachment", "Name": "menu.txt", "ContentBytes": "bWFjIGFuZCBjaGVlc2UgdG9kYXk=" }

然而,此API请求被拒绝并显示以下错误:

{"error":{"code":"RequestBodyRead","message":"The property 'ContentBytes' does not exist on type 'Microsoft.OutlookServices.Attachment'. Make sure to only use property names that are defined by the type."}}

并且,我在Outlook服务支持热线上花了半个小时,结果被推荐去查看一些论坛和我一直用作参考的文章,我已经放弃了。如果有人能帮助我让这个API接受请求,我将感激不尽。
这是一个示例请求的样子。
POST https://outlook.office.com/api/v2.0/me/sendmail
    {
      "Message": {
        "Subject": "Meet for lunch?",
        "Body": {
          "ContentType": "Text",
          "Content": "The new cafeteria is open."
        },
        "ToRecipients": [
          {
            "EmailAddress": {
              "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com"
            }
          }
        ],
        "Attachments": [
          {
            "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
            "Name": "menu.txt",
            "ContentBytes": "bWFjIGFuZCBjaGVlc2UgdG9kYXk="
          }
        ]
      },
      "SaveToSentItems": "false"
    }

我知道消息对象有一个布尔标志 HasAttachments,当设置为 true 时不会影响调用的结果。

1个回答

1
根据错误信息,您使用了“Microsoft.OutlookServices.Attachment”而不是“Microsoft.OutlookServices.FileAttachment”。当我也使用“Microsoft.OutlookServices.Attachment”时,我可以复制这个问题。而使用“Microsoft.OutlookServices.FileAttachment”的上面的示例对我很有效。请确保您使用“Microsoft.OutlookServices.FileAttachment”发送文本附件。

这个例子和我的代码一模一样。关于你的开头评论,我应该如何更清楚地声明这是附加文件呢,因为我已经提供了属性 -> "@odata.type": "#Microsoft.OutlookServices.FileAttachment"。只要属性匹配,我使用的类在我这端肯定无关紧要,因为到达Microsoft时这是JSON格式的。我肯定犯了一个错误,但我不知道到底是哪里出了问题。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接