繁体   English   中英

如何下载一个包含附件的email?

[英]How to download an email including attachments?

我有个问题。

我有一个完整的工作程序,但我想增加下载包含附件的电子邮件的可能性。 (所以整个包)

有没有人有我如何实现这个的代码示例?

我现在的代码:

private static async Task CallMSGraphUsingGraphSDKEmail(IConfidentialClientApplication app, string[] scopes)
{     
  // Prepare an authenticated MS Graph SDK client
  GraphServiceClient graphServiceClient = GetAuthenticatedGraphClient(app, scopes);

  string userID = "{Your UserId}"; /// ID (aus Azure Portal) des User von dem wir die Emails abrufen wollen

  try
  {
    int anzahl;
    Console.WriteLine("Choose the number of mails to display: ");
    anzahl = Convert.ToInt32(Console.ReadLine());
    /// zum User Wechseln von dem wir die Email wollen        
    var userReqHelper = graphServiceClient.Users[userID];



    
    // Only messages from Inbox folder
    var userMessages = await userReqHelper
        .MailFolders["Inbox"]
        .Messages
        .Request().Expand("attachments").Top(anzahl).OrderBy("ReceivedDateTime DESC").GetAsync();

    Console.WriteLine($"Found {userMessages.Count()} messages in infolder of " + userID);



    foreach (var curMessage in userMessages)
    {
      Console.WriteLine($"curMessage ID: {curMessage.Id}");
      Console.WriteLine($"curMessage From: {curMessage.From.EmailAddress.Address}");
      Console.WriteLine($"curMessage Sender: {curMessage.Sender.EmailAddress.Address}");
      Console.WriteLine($"curMessage Sub: {curMessage.Subject}");
      Console.WriteLine($"curmessage Attachments: {curMessage.Attachments?.Count ?? 0}");
      Console.WriteLine($"curMessage Recieved: {curMessage.ReceivedDateTime?.ToLocalTime().ToString()}\n");
    }

    //Console.WriteLine($"Found {users.Count()} users in the tenant");
  }
  catch (ServiceException e)
  {
    Console.WriteLine("We could not retrieve the emails for user: " + userID + $" Details: {e}");
  }
}

下载邮件的最简单方法是请求其 mimeContent https://learn.microsoft.com/en-us/graph/outlook-get-mime-message这将允许您创建一个 eml 文件(将包含所有附件) 然后您可以在 Outlook 或大多数其他邮件客户端中打开,例如导出收件箱中的最后一个 email 和图表 SDK

                 var messages = graphServiceClient.Me.MailFolders["inbox"].Messages.Request().Top(1).GetAsync().GetAwaiter().GetResult();
             var mimeContentStream = graphServiceClient.Me.Messages[messages[0].Id].Content.Request().GetAsync().GetAwaiter().GetResult();
             using (var fileStream = System.IO.File.Create("C:\\temp\\lastemail.eml"))
             {
                 mimeContentStream.Seek(0, SeekOrigin.Begin);
                 mimeContentStream.CopyTo(fileStream);
             };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM