使用Microsoft.Graph.Core通过共享邮箱发邮件时代码报错的咨询
问题分析与解决
核心原因
你遇到的错误主要来自两点:
- 依赖包缺失:仅引用
Microsoft.Graph.Core不足以实现Graph API操作,Core是底层核心库,用户、邮件发送这类业务API需要依赖Microsoft.Graph主包。 - 版本语法差异:Microsoft Graph SDK v3版本(对应你使用的Core 3.0.0)中,
SendMail的调用逻辑和网上常见的高版本示例不同。
解决步骤
1. 补全NuGet依赖包
确保项目中安装了与Core版本匹配的Microsoft.Graph主包(3.x版本),不要只单独安装Core包。可以通过NuGet包管理器添加,或使用命令:
Install-Package Microsoft.Graph -Version 3.0.0
2. 调整代码适配v3版本语法
在Graph SDK v3中,SendMail需要通过请求体对象传递参数,而非直接传入message和布尔值。修改代码如下:
// 构建发送邮件的请求体对象 var sendMailReq = new SendMailPostRequestBody { Message = message, // 已构建好的邮件对象 SaveToSentItems = true // 是否将邮件保存到已发送文件夹 }; // 调用共享邮箱的发送邮件接口 await graphClient.Users["test@test.com"].SendMail.PostAsync(sendMailReq);
3. 确认权限配置
确保应用已配置正确的权限:
- 若用委托权限:需配置
Mail.Send,且当前认证用户必须有权限访问目标共享邮箱 - 若用应用权限:需配置
Mail.Send.Shared,允许应用直接代表用户发送共享邮箱邮件
内容的提问来源于stack exchange,提问作者SheppardDigital
相关产品推荐
相关产品推荐

