You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:12:13