EWS-获取当前用户(发件人)联系信息vb.net

EWS-获取当前用户(发件人)联系信息vb.net,vb.net,email,exchangewebservices,contact,Vb.net,Email,Exchangewebservices,Contact,我目前正在开发一个程序,可以通过公司的EWS发送电子邮件。发送消息的代码工作得很好,但我还需要获得一些关于电子邮件发件人的数据。这意味着,当用户向我发送电子邮件时,我需要查看他的位置和地址。 我花了一个多星期的时间,想找到一种在代码中定义发件人及其联系方式的方法。到目前为止还没有发现任何东西。 我会通知你的 到目前为止,我的代码是: Dim url As String = "https://.../ews/Exchange.asmx" exch.Url = New System.Uri(

我目前正在开发一个程序,可以通过公司的EWS发送电子邮件。发送消息的代码工作得很好,但我还需要获得一些关于电子邮件发件人的数据。这意味着,当用户向我发送电子邮件时,我需要查看他的位置和地址。 我花了一个多星期的时间,想找到一种在代码中定义发件人及其联系方式的方法。到目前为止还没有发现任何东西。 我会通知你的

到目前为止,我的代码是:

Dim url As String = "https://.../ews/Exchange.asmx"
    exch.Url = New System.Uri(url)
    exch.UseDefaultCredentials = False
    exch.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox1.Text)
    ' exch.AutodiscoverUrl("myemail")
    'exch.ResolveName("", ResolveNameSearchLocation.ContactsThenDirectory, True)
    Dim message As New EmailMessage(exch)
    message.Subject = "Новое заявление (АП) - " & ComboBox1.SelectedItem
    message.Body = "Добрый день!" & vbNewLine & vbNewLine & "Прошу обработать заявление - " & ComboBox1.SelectedItem
    For Each f In attfiles
        message.Attachments.AddFileAttachment(f)
    Next
    message.ToRecipients.Add(email)
    message.SendAndSaveCopy()

通过使用ResolveNames操作,您位于正确的路径上。使用发件人SMTP地址,使用ResolveNames获取发件人的潜在匹配项列表。示例中的foreach只是为了让您可以看到每个结果。由于您正在传递SMTP地址,因此结果集很可能只包含几个联系人

听起来您的假设之一是发件人在用户的联系人文件夹中始终有一个条目。这总是真的吗?发件人是否可以不作为收件人联系人文件夹中的条目存在,而在Active Directory中具有条目?使用ResolveNameSearchLocation.ContactsIndirectory选项覆盖这两种可能性是正确的


如果您有显示名称或SMTP地址,解析名称工作正常。您还询问如何找到特定联系人。您提到希望搜索“联系人”文件夹,但您关心的是员工数量。是否所有员工的目标邮箱中都有联系人项目?要搜索特定联系人,请了解。

在邮件正文中包括他的位置和地址。如果您要求用户只需添加另外两个输入(位置和地址字段),以便用户可以编写这些输入。是的,这可能是一个决定,但我希望尽量减少程序中的手动输入。我想在发件人单击“发送”按钮后从发件人联系人信息中检索此信息(所有这些信息都显示在每个人的联系人属性中)。定义您所指的联系人信息。它是存储在数据库中还是存储在设备上。你说的是Windows Phone吗?我说的联系人信息是指职位、组织、全名等-所有关于发件人的信息都存储在Exchange server上的联系人项目中。我现在注意到ews标签,它是Exchange server。我不熟悉这个Api。您可以检查如何定义地址。查找api或搜索主要是c语言的,可能有很多例子。然后,正如我所说的,你们可以将这些信息包含在身体信息中,或者你们可以使用电子邮件地址再次获得它