【问题标题】:Office 365 Rest API SendMail errors depending on file attachment extensionOffice 365 Rest API SendMail 错误取决于文件附件扩展名
【发布时间】:2016-06-30 22:46:34
【问题描述】:

我正在尝试即时发送带有附件的电子邮件,如下所述:https://msdn.microsoft.com/office/office365/APi/mail-rest-operations#SendMessageOnTheFly

使用此 JSON 正文,我收到了来自服务器的 202 响应,并成功收到了附有文件的电子邮件。

Post to https://outlook.office.com/api/v2.0/me/sendmail:
{
  Message: {
    Subject: "...", 
    Body: {
      ContentType: "HTML", 
      Content: "..."
    }, 
    ToRecipients: [
      {
        EmailAddress: {
          Address: "..."
        }
      }
    ], 
    Attachments: [
      {
        "@odata.type": "#Microsoft.OutlookServices.FileAttachment", 
        Name: "test.txt", 
        ContentBytes: "bWFjIGFuZCBjaGVlc2UgdG9kYXk="
      }
    ]
  }, 
  SaveToSentItems: true
}

但是,如果我将名称更改为“test.msg”,我会收到 500 内部服务器错误,并带有以下响应:

{
    "error": {
        "code": "ErrorInternalServerError",
        "message": "Object reference not set to an instance of an object."
    }
}

如果使用“test.eml”,我还会收到 500 内部服务器错误,但响应不同:

{
    "error": {
        "code": "ErrorInternalServerError",
        "message": "Unable to cast object of type 'Microsoft.Exchange.Services.Core.Types.ItemAttachmentType' to type 'Microsoft.Exchange.Services.Core.Types.FileAttachmentType'."
    }
}

奇怪的是,对于这两种情况,我仍然会收到带有附件的电子邮件。这令人沮丧,因为目前我的应用程序告诉用户发送电子邮件时发生错误(基于不成功的状态代码),但电子邮件实际上已发送。

我意识到消息和事件还有另一种对象类型 (#Microsoft.OutlookServices.ItemAttachment),但我理解这意味着 Outlook 服务器上已经存在并通过 ID 链接的项目(例如附加会议邀请已经创建的事件);另外,该类型没有 ContentBytes 作为我要填充的字段。对于即时发送,我认为任何二进制文件数据都将被视为相同(这些 .msg 和 .eml 文件是从用户的计算机上传的,不一定已经存在于 Outlook 中)。

知道这里发生了什么吗?


更新 我在消息的单独帖子中测试了creating a draft messageadding the attachments,然后是sending。同样,同样的错误信息。创建和发送成功的状态码。如果扩展名是 .msg 或 .eml 类似,创建附件将导致 500 内部服务器错误。不过,实际发送的电子邮件将包含所有附件。

【问题讨论】:

  • 我正在对此进行调查,希望尽快获得更多信息。
  • 我和你有同样的经历。我会和我们的开发人员核实一下,看看我是否能弄清楚这里发生了什么。
  • @JasonJohnston 感谢您对此进行调查!

标签: office365 outlook-restapi


【解决方案1】:

感谢您报告此问题!在与我们的开发人员交谈后,我已将此作为 API 的错误提交。一旦我有一个解决方案,我会更新这个答案,但我现在没有时间表可以分享。

更新:此问题已得到修复。现在,当您发送附加消息时,您将收到 202 Accepted。该修复程序在一段时间前就发布了,我在实际测试它和更新这篇文章时一直很松懈! :(

【讨论】:

  • 这应该是评论,而不是答案。
  • 如果答案是“这是一个错误”而没有很好的解决方法,那么这对我来说更像是一个答案而不是评论!有我可以关注的公共错误跟踪器吗?
  • 谢谢大卫。不幸的是,没有,该团队不使用公共错误跟踪器。
  • 感谢您抽出时间回到这里!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
相关资源
最近更新 更多