【问题标题】:Handling 401 unauthorised for send email using Exchange EWS使用 Exchange EWS 处理未经授权的 401 发送电子邮件
【发布时间】:2018-09-06 07:26:28
【问题描述】:

我有以下使用 Exchange EWS 发送电子邮件的代码。在提供不正确的用户名和密码并返回 401 未授权错误之前,一切正常。我将 send 包裹在一个 catch 语句中以处理错误。但是没有达到 catch 语句。

public void SendExchangeEmail(EmailModel model, ApplicationUser adminUser) 
{
    var service = new ExchangeService(ExchangeVersion.Exchange2013_SP1)
    {
        Credentials = new WebCredentials(adminUser.Email, adminUser.ExchangePassword),
        TraceEnabled = true,
        TraceFlags = TraceFlags.All,
        Url = new Uri("MyExchangeUrl")
    };

    var email = new EmailMessage(service);
    email.ToRecipients.Add(model.recipient);
    email.Subject = model.Subject;
    email.Body = new MessageBody(model.Body);

    try
    {
        email.Send();
    }
    catch (ServiceResponseException ex)
    {
         // This catch block is not reached when the incorrect username and password are supplied. 
    }
}

捕获未经授权的错误的正确方法是什么。

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 exchangewebservices


    【解决方案1】:

    您的异常处理不正确。 “请求失败。远程服务器返回错误:(401) Unauthorized。”错误引发 ServiceRequestException。将您的代码修改为:

    try
    {
        email.Send();
    }
    catch (ServiceRequestException ex)
    {
        //Exception handling
    }
    

    【讨论】:

    • 这非常有效。我知道这将是我所缺少的一些简单的东西。谢谢大家
    【解决方案2】:

    您需要与您的 Exchange 管理员联系以允许服务帐户(AD 帐户)获得在 Outlook 应用程序之外发送电子邮件的权限(我忘记了角色/权限的具体名称)。

    然后修改您的代码以使用以下内容:

    ExchangeService 服务 = 新 ExchangeService(ExchangeVersion.Exchange2013_SP1); service.Credentials = new System.Net.NetworkCredential(serviceAccount.UserName, serviceAccount.Password); service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userEmail); service.AutodiscoverUrl(userEmail, RedirectionUrlValidationCallback);

    电子邮件用户的权限仅适用于 Outlook 应用程序。如果在外部调用该命令,它会被阻止,因此需要您的 Exchange 管理员知道的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-07
      • 2011-03-06
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多