【问题标题】:"Attachment does not contain a definition for CopyTo"“附件不包含 CopyTo 的定义”
【发布时间】:2021-09-02 12:18:14
【问题描述】:

我正在尝试将文件保存在 StorageBlob 中,基本上当我收到带有附件的电子邮件时就是这样做的时候

foreach (var docUploaded in files)
{
    MemoryStream ms = new MemoryStream();
    docUploaded.CopyTo(ms);
    ms.Seek(0, SeekOrigin.Begin);
}

这是我收到错误docUploaded.CopyTo(ms); 的行 我已经使用了它,但用于 IFormFile 文件但用于 Outlook 的 message.Attachments 我不能并且还尝试将其从 message.attachment 转换为 IFormFile 但没有成功。 我收到此消息“附件不包含 CopyTo 的定义”有人知道另一种方法吗,没有太多关于它的信息,问候。

【问题讨论】:

  • docUploaded.ContentStream.CopyTo(ms);
  • 我不能使用 ContentStream 只是 ContentType 这是我的文件变量 var files = message.Attachments;
  • 能否提供获取附件的代码?
  • @JimXu 我有一个 Microsoft Graph 订阅页面 = await graphClient.Users["myemail"].MailFolders.Inbox.Messages.Delta().Request().Header("Prefer", "odata .maxpagesize=2").Select("Subject, UniqueBody, From").Expand("attachments").GetAsync();

标签: c# asp.net-core microsoft-graph-api azure-blob-storage


【解决方案1】:

您不必编写此功能的代码,因为它是使用逻辑应用开箱即用完成的。

查看Tutorial: Automate tasks to process emails by using Azure Logic Apps, Azure Functions, and Azure Storage 了解如何操作的详细步骤。本教程展示了如何构建处理传入电子邮件和任何附件的逻辑应用程序。此逻辑应用分析电子邮件内容,将内容保存到 Azure 存储,并发送通知以查看该内容。

【讨论】:

    【解决方案2】:

    大家好,我找到了方法 var files = message.Attachments.CurrentPage.ToList();

                                foreach (var docUploaded in files)
                                {
                                    var fileAttachment = docUploaded as Microsoft.Graph.FileAttachment;
                                    var inputAsString = Convert.ToBase64String(fileAttachment.ContentBytes);
                                    MemoryStream ms = new MemoryStream(Convert.FromBase64String(inputAsString));
    }
    

    这是解决我的问题的方法,现在它保存在 blobStorage 中(有一个方法我发送了 ms 和一些信息)。所以基本上转换了它:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多