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

.NET 3.5环境下O365 OAuth收发邮件的适配方案咨询

.NET 3.5环境下实现Office 365邮件收发的方案推荐

方案可行性分析

  • MS Graph官方SDK:直接排除
    官方Microsoft Graph SDK最低要求.NET Framework 4.6.1及以上,没有适配.NET3.5的版本,无法直接引用。若坚持用MS Graph,只能手动封装REST请求处理。

  • EWS API:优先选择
    尽管微软不再主推EWS,但目前仍支持Exchange Online(Office 365),且有适配.NET3.5的成熟库,实现邮件收发更简单,适配成本更低。

推荐的C#库及使用要点

1. Exchange Web Services Managed API 2.2

这是微软官方针对EWS推出的托管库,2.2版本专门支持.NET3.5,是当前最适合你的选择。

  • OAuth授权处理:需先在Azure AD注册应用,申请EWS.AccessAsUser.All权限,通过OAuth2.0流程获取Access Token(比如授权码流程或客户端凭证流程)。
  • 核心代码示例:
    using Microsoft.Exchange.WebServices.Data;
    
    // 初始化EWS服务实例
    var ewsService = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
    ewsService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
    // 绑定OAuth Token
    ewsService.Credentials = new OAuthCredentials("你的Access Token");
    
    // 发送邮件示例
    var email = new EmailMessage(ewsService);
    email.ToRecipients.Add("recipient@example.com");
    email.Subject = "EWS测试邮件";
    email.Body = new MessageBody(BodyType.Text, "这是通过EWS Managed API发送的测试内容");
    email.Send();
    
    // 读取收件箱示例
    var inbox = Folder.Bind(ewsService, WellKnownFolderName.Inbox);
    var items = inbox.FindItems(new ItemView(10));
    foreach (var item in items)
    {
        Console.WriteLine($"邮件主题:{item.Subject}");
    }
    

2. RestSharp 106.x(MS Graph REST备选)

若坚持使用MS Graph,可借助支持.NET3.5的RestSharp旧版本(106.x及以下)手动封装REST请求:

  • 核心步骤:完成OAuth2.0授权获取Token,调用MS Graph邮件接口(如POST /me/sendMail、GET /me/messages)。
  • 代码示例:
    using RestSharp;
    
    var client = new RestClient("https://graph.microsoft.com/v1.0");
    var sendRequest = new RestRequest("me/sendMail", Method.POST);
    sendRequest.AddHeader("Authorization", "Bearer 你的Access Token");
    sendRequest.AddHeader("Content-Type", "application/json");
    sendRequest.AddJsonBody(new
    {
        message = new
        {
            subject = "MS Graph测试邮件",
            body = new { contentType = "Text", content = "REST接口发送的测试内容" },
            toRecipients = new[] { new { emailAddress = new { address = "recipient@example.com" } } }
        }
    });
    var response = client.Execute(sendRequest);
    
  • 缺点:需自行处理请求序列化、Token刷新、错误捕获等,复杂度高于EWS Managed API。

关键注意事项

  • Azure AD应用配置:无论选择哪种方案,都需在Azure AD中注册应用,配置正确的API权限和授权流程(后台服务用客户端凭证,用户交互用授权码流程)。
  • 版本兼容性:所有依赖库必须选择支持.NET3.5的版本,避免引用高版本导致运行报错。

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:43:19