Office 365模拟

问题描述

我正在尝试假冒User2时从我的Office 365帐户发送电子邮件

        {
            ExchangeService service = new ExchangeService();

            string fromUserEmail = new string("User2@domain");
                       
            service.Credentials = new WebCredentials("User1@domain","password");
            service.UseDefaultCredentials = false;
            service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress,fromUserEmail);
            service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

            EmailMessage email = new EmailMessage(service);

            email.ToRecipients.Add("someone@somewhere");
            email.ReplyTo.Add(replyToEmail);
            email.Subject = "HelloWorld";
            email.Body = new MessageBody("Test message");

            email.Send();
        }

我得到一个System.NullReferenceException:“对象引用未设置为对象的实例。”在email.Send()上。当我注释掉服务时,假冒就可以了。我在做什么错了?

解决方法

已解决。我需要通过

获得许可
New-ManagementRoleAssignment -Name:User1_impersonation -Role:ApplicationImpersonation -User: "User1@domain"

我不知道为什么Visual Studio没有提供更有用的错误消息。