如何在MS Graph的ForwardPostRequestBody中添加附件实现邮件转发?
使用MS Graph转发邮件时附加文件的方法
ForwardPostRequestBody类本身不支持直接添加附件,你可以通过以下两种方式实现转发邮件并附加文件的需求:
方案一:先给原邮件添加附件,再执行转发
先将附件上传到要转发的原邮件中,再调用Forward接口完成转发操作。这种方式会修改原邮件的附件列表。
代码示例
var graphClient = new GraphServiceClient(requestAdapter); // 1. 上传附件到原邮件 var attachment = new FileAttachment { Name = "附件文件名.pdf", ContentBytes = Convert.FromBase64String("这里替换为文件的Base64编码内容"), ContentType = "application/pdf" }; await graphClient.Me.Messages["{message-id}"].Attachments.PostAsync(attachment); // 2. 执行转发 var requestBody = new Microsoft.Graph.Me.Messages.Item.Forward.ForwardPostRequestBody { Comment = "这是转发的备注", ToRecipients = new List<Recipient> { new Recipient { EmailAddress = new EmailAddress { Name = "收件人姓名", Address = "recipient@example.com", }, }, }, }; await graphClient.Me.Messages["{message-id}"].Forward.PostAsync(requestBody);
方案二:创建新邮件模拟转发(推荐)
通过创建新邮件的方式,将原邮件内容整合到新邮件中,同时添加新附件,最后发送邮件。这种方式不会修改原邮件,灵活性更高。
代码示例
var graphClient = new GraphServiceClient(requestAdapter); // 获取原邮件内容,用于模拟转发格式 var originalMessage = await graphClient.Me.Messages["{message-id}"].GetAsync(); // 构建新邮件 var newMessage = new Message { Subject = $"FW: {originalMessage.Subject}", Body = new ItemBody { ContentType = BodyType.Html, Content = $"<p>转发备注:这是转发的备注</p><hr>{originalMessage.Body.Content}" }, ToRecipients = new List<Recipient> { new Recipient { EmailAddress = new EmailAddress { Name = "收件人姓名", Address = "recipient@example.com" } } }, Attachments = new List<Attachment> { // 添加需要附加的新文件 new FileAttachment { Name = "新附件.docx", ContentBytes = Convert.FromBase64String("文件的Base64编码内容"), ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" } } }; // 发送新邮件(模拟转发行为) await graphClient.Me.SendMail.PostAsync(new SendMailPostRequestBody { Message = newMessage, SaveToSentItems = true });
内容的提问来源于stack exchange,提问作者Aruna Namal
相关产品推荐
相关产品推荐

