[英]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.