当前位置: 首页 > 知识库问答 >
问题:

到Office365的EWS连接失败-401未经授权

雍嘉勋
2023-03-14

在阅读本页后,我已经尝试了所有可能的用户代码和域组合:htps:/stackoverflow.com/questions/10107872/ews-connections-issues-401-unauthorized

我正在尝试读取我自己的邮箱,所以这一个没有帮助:htps://stackoverflow.com/questions/43346498/401-unauthorized-access-when-using-ews-to-connect-to-mailbox

我的连接看起来与此页上的连接相同,但在我的项目中使用它时,没有通过与以前相同的未经授权的错误:htps://stackoverflow.com/questions/29009295/ews-managed-api-retrieving-e-mails-from-office365-exchange-server

下面是我的代码

Public Class Form1
Public Exchange As ExchangeService
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    lstMsg.Clear()
    lstMsg.View = View.Details
    lstMsg.Columns.Add("Date", 150)
    lstMsg.Columns.Add("From", 250)
    lstMsg.Columns.Add("Subject", 400)
    lstMsg.Columns.Add("Has Attachment", 50)
    lstMsg.Columns.Add("Id", 100)
    lstMsg.FullRowSelect = True

End Sub

Public Sub ConnectToExchangeServer()
    Me.lblMsg.Text = "Connecting to Exchange Server"
    lblMsg.Refresh()
    Try
        'Exchange = New ExchangeService(ExchangeVersion.Exchange2013)
        Exchange = New ExchangeService()
        Exchange.TraceEnabled = True
        'Exchange.UseDefaultCredentials = True
        Exchange.Credentials = New WebCredentials("DoeJohn", "mypasswd", "mycorp.com")
        'Exchange.AutodiscoverUrl("DoeJohn@mycorp.mail.onmicrosoft.com", AddressOf MyRedirectionURLValidationCallback)
        'Exchange.AutodiscoverUrl("John.Doe@mycorp.com", AddressOf MyRedirectionURLValidationCallback)

        Exchange.Url = New System.Uri("https://outlook.office365.com/ews/exchange.asmx")
        lblMsg.Text = "Connected to Exchange Server"
        lblMsg.Refresh()
    Catch ex As Exception
        MsgBox("Fatal Error in Connect: " & ex.Message)
        End
    End Try
End Sub
Public Function MyRedirectionURLValidationCallback(RedirectionURL As String) As Boolean
    Dim Result As Boolean = False
    Dim RedirectionURI As Uri = New Uri(RedirectionURL)
    If RedirectionURI.Scheme = "https" Then
        Return True
    End If
    Return False
End Function
Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click
    Call ConnectToExchangeServer()
    Dim ts As TimeSpan = New TimeSpan(0, -1, 0, 0)
    Dim MyDate As DateTime = DateTime.Now.Add(ts)
    Dim MyFilter As SearchFilter.IsGreaterThanOrEqualTo = New SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived, MyDate)

    If Exchange IsNot Nothing Then
        Dim FindResults As FindItemsResults(Of Item) =
            Exchange.FindItems(WellKnownFolderName.Inbox, MyFilter, New ItemView(50))
        Dim NewRow As ListViewItem
        For Each MyItem As Item In FindResults
            Dim Message As EmailMessage = EmailMessage.Bind(Exchange, MyItem.Id)
            NewRow = New ListViewItem(Message.DateTimeReceived.ToString())
            NewRow.SubItems.Add(Message.From.Name.ToString())
            NewRow.SubItems.Add(Message.Subject)
            NewRow.SubItems.Add(Message.HasAttachments.ToString())
            NewRow.SubItems.Add(Message.Id.ToString())
            lstMsg.Items.Add(NewRow)
        Next
    Else

    End If
End Sub

与Outlook中的“测试电子邮件自动配置”相比,我已确认“自动发现”正确找到了服务器。

如果你已经读到这里,非常感谢!

共有1个答案

程振濂
2023-03-14

我在上面找到了问题的答案,就在这里分享一下,以防有人需要。问题归结于我的IT组织添加的安全协议,由于最近对我们公司的网络钓鱼攻击,这些协议没有记录在案。

第一条线索是,如果我想在智能手机或ipad等个人4G设备上查看公司电子邮件,我还必须安装微软InTune以连接到O365邮件服务器的MFA。由于我不知道如何将InTune集成到我的.NET应用程序中,我不得不寻找另一个答案。

我请求并被批准将我的功能邮箱从O365移动到用于此应用程序的内部Exchange服务器。解决了身份验证问题。

 类似资料:
  • 尝试使用EWS连接到exchange 2010 SP1 它连接到我的本地邮箱,而不是“测试邮箱”。我从我们的管理员那里获得了TestMailbox NT帐户的密码,并尝试了以下所有方法: 所有这些都失败了。假设我在本地网络上的NT用户名是“用户”,我甚至尝试过: 它失败了。我一直在使用以下链接作为参考。 编辑1:我已经尝试了以上所有与网络信用而不是网络信用,它仍然失败。

  • 我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激

  • 我想使用爪哇谷歌驱动器API。我尝试了这段代码: 但是我得到了这个错误: 我使用以下配置: 你能告诉我怎么解决这个问题吗?

  • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。

  • 我成功地将Graph API用于各种事情,但我需要访问OneNote API来在班级笔记本上执行学生和教师的添加/删除操作。当我用https://www.OneNote.com资源请求一个令牌时,它提供了一个令牌,但当我试图使用它访问OneNote API时,无论发送什么(有效)请求,我都会得到401--“请求不包含有效的身份验证令牌”。 我的令牌请求: POST https://login.mi

  • 我正在尝试登录基于cloudflare服务器的网站。我使用cloudserver绕过了登录问题,但我的下一个停止点是当我试图发送get请求以访问一些登录后令牌时。 我的代码: 这返回401作为答案: 它的标题是 好的,我首先试着给一个auth。这样地 我再次得到相同的错误,401,但这次响应的头确实有一个www身份验证,我应该质询 根据我所读到的内容,它是基本的意味着我必须在我的头文件中添加一个像