C# ASP.NET中是否有Outlook联系人控件?

C# ASP.NET中是否有Outlook联系人控件?,c#,.net,asp.net,outlook,C#,.net,Asp.net,Outlook,如何使用ASP.NET访问Microsoft Outlook联系人?是否有任何控件可以执行此操作?您需要创建一个ActiveX应用程序,客户端将安装该应用程序以允许您访问此应用程序。除非它是一个内部开发项目,否则不要期望人们安装能让你访问他们电子邮件程序的东西。如果你所说的控制是指api,那么现在已经有了一个——Exchange Web Services(EWS)。假设您正在处理exchange,并已设置EWS。web服务通常位于: 下面是一些未经生产测试的快速代码(也在vb.net中) 将e

如何使用ASP.NET访问Microsoft Outlook联系人?是否有任何控件可以执行此操作?

您需要创建一个ActiveX应用程序,客户端将安装该应用程序以允许您访问此应用程序。除非它是一个内部开发项目,否则不要期望人们安装能让你访问他们电子邮件程序的东西。

如果你所说的控制是指api,那么现在已经有了一个——Exchange Web Services(EWS)。假设您正在处理exchange,并已设置EWS。web服务通常位于:

下面是一些未经生产测试的快速代码(也在vb.net中)

将esb作为新的ExchangeServiceBinding()进行Dim
esb.Credentials=newnetworkcredential(“someusername”、“somepassword”)
esb.Url=“https://[yourmaildomain.com]/EWS/Exchange.asmx”
Dim addressType作为新的EmailAddressType()
带地址类型
.EmailAddress=”email@domain.com"
.MailboxType=MailboxTypeType.Mailbox
.MailboxTypeSpecified=True
以
"性质",
将itemProperties设置为新的ItemResponseShapeType()
itemProperties.BaseShape=DefaultShapeNameType.AllProperties
'确定要搜索哪些文件夹以查找项目。
Dim FolderId(0)作为区分的FolderId类型
FolderId(0)=新的区分FolderId类型()
folderIDs(0).Id=区分的FolderIdNameType.contacts
文件夹ID(0)。邮箱=地址类型
Dim findItemRequest作为新的FindItemType()进行设置
findItemRequest.Traversal=ItemQueryTraversalType.Shallow
findItemRequest.ItemShape=itemProperties
findItemRequest.ParentFolderId=FolderId
“发送请求
将findItemResponse设置为FindItemResponseType=esb.FindItem(findItemRequest)
将rmta设置为ResponseMessageType()=findItemResponse.ResponseMessages.Items
对于每个rmt作为rmta中的ResponseMessageType
如果rmt.ResponseClass=ResponseClassType.Success,则
作为FindItemResponseMessageType=CType的Dim FIRM(rmt,FindItemResponseMessageType)
如果firmt不是什么,那么
Dim root作为FindItemParentType=firmt.RootFolder
Dim obj As Object=根目录项
如果obj的类型为ArrayOfRealItemsType,则
作为ArrayOfRealItemsType=DirectCast的尺寸项目(obj,ArrayOfRealItemsType)
如果items.items不是空的,那么
对于每个项目,将其作为items.items中的ItemType
如果其类型为ContactItemType,则
作为ContactItemType的Dim cit=DirectCast(it,ContactItemType)
响应。写入(“”)
答复.书面答复(同上主题)
响应。写入(“”)
如果结束
下一个
如果结束
如果结束
如果结束
如果结束
下一个

来自Microsoft支持:

MSDN:


ScottE先生感谢您的回复。我如何才能获得exchange server的组装。请参阅回答这个问题。
Dim esb As New ExchangeServiceBinding()
esb.Credentials = New NetworkCredential("someusername", "somepassword")
esb.Url = "https://[yourmaildomain.com]/EWS/Exchange.asmx"

Dim addressType As New EmailAddressType()
With addressType
 .EmailAddress = "email@domain.com"
 .MailboxType = MailboxTypeType.Mailbox
 .MailboxTypeSpecified = True
End With

' properties
Dim itemProperties As New ItemResponseShapeType()
itemProperties.BaseShape = DefaultShapeNamesType.AllProperties

' Identify which folders to search to find items.
Dim folderIDs(0) As DistinguishedFolderIdType

folderIDs(0) = New DistinguishedFolderIdType()
folderIDs(0).Id = DistinguishedFolderIdNameType.contacts
folderIDs(0).Mailbox = addressType


Dim findItemRequest As New FindItemType()
findItemRequest.Traversal = ItemQueryTraversalType.Shallow
findItemRequest.ItemShape = itemProperties
findItemRequest.ParentFolderIds = folderIDs

' send request
Dim findItemResponse As FindItemResponseType = esb.FindItem(findItemRequest)

Dim rmta As ResponseMessageType() = findItemResponse.ResponseMessages.Items
For Each rmt As ResponseMessageType In rmta
 If rmt.ResponseClass = ResponseClassType.Success Then

  Dim firmt As FindItemResponseMessageType = CType(rmt, FindItemResponseMessageType)
  If firmt IsNot Nothing Then

   Dim root As FindItemParentType = firmt.RootFolder
   Dim obj As Object = root.Item
   If TypeOf obj Is ArrayOfRealItemsType Then
    Dim items As ArrayOfRealItemsType = DirectCast(obj, ArrayOfRealItemsType)
    If items.Items IsNot Nothing Then
     For Each it As ItemType In items.Items
      If TypeOf it Is ContactItemType Then
       Dim cit As ContactItemType = DirectCast(it, ContactItemType)
       Response.Write("<p>")
       Response.Write(cit.Subject)
       Response.Write("<p>")
      End If
     Next
    End If
   End If

  End If

 End If
Next