高手请帮忙!用VB代码操作EXCHANGE 2000,能不能在客户端根据用户名和密码来操作EXCHANGE服务器上的邮件或日历,微软提供的例子好象都要在EX

wang_cel 2003-05-09 11:09:26
另外用微软的例子,在服务器上只能操作以某一登录WINDOWS的用户,而不能操作其他用户?
...全文
77 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_cel 2003-05-22
  • 打赏
  • 举报
回复
hon(hon),storm97(风暴不再) :


http://expert.csdn.net/Expert/topic/1629/1629342.xml?temp=9.975612E-03
http://expert.csdn.net/Expert/topic/1759/1759750.xml?temp=.6829492
http://expert.csdn.net/Expert/topic/1626/1626960.xml?temp=.5093042
wang_cel 2003-05-22
  • 打赏
  • 举报
回复
storm97(风暴不再) , hon(hon) :
请先到这几个地方领点分,我的问题已经有了较大的进展,

http://expert.csdn.net/Expert/topic/1629/1629342.xml?temp=9.975612E-03
http://expert.csdn.net/Expert/topic/1759/1759750.xml?temp=.6829492
http://expert.csdn.net/Expert/topic/1626/1626960.xml?temp=.5093042
hon 2003-05-21
  • 打赏
  • 举报
回复
ok了吗
wang_cel 2003-05-21
  • 打赏
  • 举报
回复
2。如果1。不行,就在VB程序中创建OUTLOOK对象,但此时要弹出一个要求选择用户配置文件的对话框(可能有多用户在同一客户机器上有自己的配置文件),然后还有一个要求输入用户名,密码,域名的验证对话框(我配置OUTLOOK时将安全验证方式设为”无“,每次打开OUTLOOK时提示选择配置文件),我想在VB程序内部处理这些,不要弹出。


用2.还是有点问题,如果我以A用户的配置文件登陆,(A用户可以操作B用户,权限在服务器端已更改,例如打开OUTLOOK时,选择B的配置文件登陆,但输入A的用户名和密码,可以进去),但在程序中我怎样先更改A的信息,再不经过登陆也可以更改B的信息???

方式不一定,只要能解决问题就行.


分数不是问题...

另外请storm97(风暴不再)和hon(hon) 先到此处领点分,以表谢意:

http://expert.csdn.net/Expert/topic/1629/1629342.xml?temp=9.975612E-03
http://expert.csdn.net/Expert/topic/1759/1759750.xml?temp=.6829492
http://expert.csdn.net/Expert/topic/1626/1626960.xml?temp=.5093042
wang_cel 2003-05-19
  • 打赏
  • 举报
回复
hon(hon) :thank u

wangy@golden-tech.com.cn
hon 2003-05-19
  • 打赏
  • 举报
回复
ok!!
storm97 2003-05-16
  • 打赏
  • 举报
回复
你可以再试一下:
Dim oApp As New Outlook.Application
Dim ProfileName as string="****"
Dim UserPwd as string="****"
oApp.Session.Logon ProfileName,UserPwd
看一下这样是否还会弹出要求输入用户名,密码,
域名的验证对话框。
storm97 2003-05-16
  • 打赏
  • 举报
回复
下面是微软的一个WEBDAV的例子,你看一下,是一个HTML文件:
脚本用vbscript完成的:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>XMLHTTP/XML Sample Application</TITLE>
</HEAD>


<xml id=calxsl>
<xsl:template xmlns:xsl="uri:xsl" xmlns:d="DAV:">

<table
ID = "thetable"
Border = "4"
Width = "100%"
Style = "border-style: ridge"
cellspacing="0" bordercolor="#808080" bordercolorlight="#808080" bordercolordark="#000080">
<TBODY>
<tr>
<td width="25%" bgcolor="silver"><font face="Tahoma" size="2"><b>Name</b></font></td>
<td width="25%" bgcolor="silver"><font face="Tahoma" size="2"><b>Content Class</b></font></td>
<td width="25%" bgcolor="silver"><font face="Tahoma" size="2"><b>Last Modified</b></font></td>
<td width="25%" bgcolor="silver"><font face="Tahoma" size="2"><b>Size (bytes)</b></font></td>
</tr>
<xsl:for-each select="d:multistatus/d:response" order-by="d:href">
<tr>
<td><A><xsl:attribute name="HREF"><xsl:value-of select="d:propstat/d:prop/d:href" /></xsl:attribute><xsl:attribute name="onclick">javascript:window.open('<xsl:value-of select="d:propstat/d:prop/d:href" />');window.event.returnValue=false;</xsl:attribute><xsl:value-of select="d:propstat/d:prop/d:displayname" /></A></td>
<td>
<xsl:value-of select="d:propstat/d:prop/d:contentclass" />
</td>

<td><xsl:for-each select="d:propstat/d:prop/d:getlastmodified">
<xsl:eval>this.nodeTypedValue</xsl:eval></xsl:for-each></td>
<td><xsl:value-of select="d:propstat/d:prop/d:getcontentlength" />
</td>

</tr>
</xsl:for-each>
</TBODY>
</table>
</xsl:template>
</xml>
<script language=vbscript>
Dim oXMLHTTP
Dim xmlDoc

Sub cmdListItems_OnClick()
strURL = document.all.URL.Value
if strURL = "" then
msgbox "You must enter a valid URL"
exit sub
end if
'Check to see if URL has HTTP:// in the beginning
if UCASE(Left(strURL,7)) <> "HTTP://" then
msgbox "The application is adding HTTP:// to your URL."
strURL = "HTTP://" & strURL
document.all.URL.Value = strURL
end if

xsldest.innerHTML = "<B>Please wait...Loading</b>"

Set oXMLHTTP = CreateObject("microsoft.xmlhttp")
oXMLHTTP.Open "PROPFIND", strURL, True
oXMLHTTP.setRequestHeader "Content-type:", "text/xml"
oXMLHTTP.setRequestHeader "Depth", "1"
oXMLHTTP.onreadystatechange = getRef("XMLHTTPStateChange")

oXMLHTTP.send ("")

End Sub

Sub XMLHTTPStateChange
dim errText
if (oXMLHTTP.readystate <> 4) then
exit sub
end if
if(oXMLHTTP.status <> 207) then
xsldest.innerText = "Error, status = " & CStr(oXMLHTTP.status) & " " & oXMLHTTP.statusText
errText = "Error!"

else
document.all.XMLResponse.value = oXMLHTTP.ResponseText
if errText = "" then
document.all.XMLStatus.value = oXMLHTTP.status & " " & oXMLHTTP.statusText
else
document.all.XMLStatus.value = errText
end if
Set xmlDoc = oXMLHTTP.responseXML

xsldest.innerHTML = xmlDoc.transformNode(calxsl.documentElement)
end if
End Sub

Sub CheckDebugging
if document.all.ShowDebugging.checked = True then
'Show the debugging text areas
'Either style below works. Depends on which one you like better
document.all.item("DebuggingDiv").style.display = ""
else
document.all.DebuggingDiv.style.display = "none"
end if
End Sub



</script>



<BODY>
<H1>List Folders or Contents</H1>
<P>Enter URL: <INPUT type="text" id=URL name=text1 size=50><BR></P>
<INPUT type="checkbox" id=ShowDebugging name=checkbox1 onclick=CheckDebugging CHECKED>Show Debugging Information
<BR>
<DIV ID=DebuggingDiv>
<TABLE>
<TBODY>
<TR><TD><B>Status</B></TD><TD><B>Response<B></TD></TR>
<TR><TD>
<TEXTAREA rows=10 cols=20 id=XMLStatus name=textarea1>
</TEXTAREA></TD>
<TD>
<TEXTAREA rows=10 cols=70 id=XMLResponse name=textarea2>
</TEXTAREA>
</TD>
</TR>
</TBODY>
</TABLE>
</DIV>

<P><INPUT id=button1 name=cmdListItems type=button value="Get Data Now!"></P>
<div id=xsldest></div>
</BODY>
</HTML>
wang_cel 2003-05-16
  • 打赏
  • 举报
回复
我是要用VB在客户端操作EXCHANGE服务器上的私人信息(各个用户都有自己的企业内部邮箱),就象用OUTLOOK 2000,不同用户用自己的配置文件,打开OUTLOOK,可以发送邮件,主要是要创建日历中的APPOINTMENT,来安排日程。
我要做的是用VB应用程序来实现这一功能,我想法如下:
1。能否直接象操作数据库一样在一台机器上操作EXCHANGE服务器上的个人的数据,用户名是分配的邮箱名,验证都是在程序内部进行,完成后用户通过OUTLOOK来看操作的结果。

2。如果1。不行,就在VB程序中创建OUTLOOK对象,但此时要弹出一个要求选择用户配置文件的对话框(可能有多用户在同一客户机器上有自己的配置文件),然后还有一个要求输入用户名,密码,域名的验证对话框(我配置OUTLOOK时将安全验证方式设为”无“,每次打开OUTLOOK时提示选择配置文件),我想在VB程序内部处理这些,不要弹出。
wang_cel 2003-05-16
  • 打赏
  • 举报
回复
storm97(风暴不再) :
谢谢。
配置文件登陆框是可以不打开了,但要输入用户名和密码及域名的那个对话框还是显示,我怎样在VB程序内部验证,而不用弹出。


还有你说的用WEBDAV来实现,能给我一点详细的代码吗?(不同的用户操作EXCHANGE服务器上的各自的私人信息,要生成邮件,修改或增加日历中的APPOINTMENT)
storm97 2003-05-16
  • 打赏
  • 举报
回复
如果你的客户端有多人使用,每个人都是不同的配置文件的话,我有一个提议,就是让用户使用你定制的一个登陆系统,登陆到你的应用程序,当然这个登陆系统的用户信息是存放在普通的关系型数据库中的,譬如sql server或者是orcale,在这些关系型数据库的用户表中存放该用户登陆outlook时使用的配置文件的名称,这样就可以解决你的问题了。
storm97 2003-05-16
  • 打赏
  • 举报
回复
用winform来创建outlook对象操作的话也可以,其实还是通过MAPI来访问Ex服务器的,具体的要不出现登陆对话框的话,你需要给当前创建的Outlook对象指定一个profile,通过该profile来实现登陆操作。
我给你一个代码样例:
Reference:Microsoft Office 10.0 object Library
Microsoft Outlook 10.0 object Library
Dim oApp As New Outlook.Application
dim ProfileName as string'你在客户机上创建一个profile,制定一个用户名和密码来打开
outlook就可以了
oApp.Session.Logon ProfileName
......后面就是你对oApp进行操作的部分了。
wang_cel 2003-05-16
  • 打赏
  • 举报
回复
hon(hon) ( ) :能给我一点具体的代码吗?谢谢!!
wang_cel 2003-05-16
  • 打赏
  • 举报
回复
storm97(风暴不再) :谢谢。
我的程序运行在A机器上,而EX服务器在B机器上,是Windows Form,要生成邮件,修改或增加日历中的APPOINTMENT,能提供一点代码,稍微完整一点的,能够连接上就行。

另外,如果实在没办法的话,我就只好客户端创建一个OUTLOOK对象来操作,但打开时每次要弹出对话框要选择配置文件(我在客户端将OUTLOOK 2000设置成不是以NT验证方式登陆,为每个用户设置一个不同的配置文件,)每次还要输入EXXHANGE用户名,密码和域名,我能不能不让它弹出,在VB程序内部处理呢??

hon 2003-05-16
  • 打赏
  • 举报
回复
Send a Meeting Request Using WebDAV for vb
hon 2003-05-16
  • 打赏
  • 举报
回复
Send a Meeting Request Using WebDAV
留个邮箱发给个例子
wang_cel 2003-05-16
  • 打赏
  • 举报
回复
我是过了,还是弹出
除非新建的配置文件是以NT验证方式,并且客户端WINDOWS是以该用户名称登陆的

这里的密码不是用户密码,可能是配置文件密码
hon 2003-05-15
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deovrDevelopingOfficeSolutions.asp
storm97 2003-05-15
  • 打赏
  • 举报
回复
hon贴的代码是使用ADO访问Ex的WSS,这种方式仅仅限于在服务器段访问WSS,而不能够在客户端访问,架设你的程序运行在A机器上,而EX服务器在B机器上,那么代码是不会运行成功的,因为客户机是没有"exoledb.datasource"这个connection Provider的。如果要在客户机上访问Ex的WSS那么就要使用WEBDAV来实现了,如果仅仅是操作MAPI folder tree,那么还可以使用MAPI来访问远程的EX服务器,这就要看你的需求了,一般来说我们做的系统都需要使用到非MAPI的folder tree,这时候就不能用MAPI来执行操作,而只能使用WEBDAV来实现,WEBDAV可以用在Windows Form,也可以用在WEB Form,且在.NET黄静下也很好用,我试过。
最好最快的,也是最简便的访问Ex的方式就是通过ADO、CDO来实现,这样就必须使用WEB方式来开发你的系统,具体使用什么样的方式要你自己根据系统的特点来进行权衡了。
hon 2003-05-14
  • 打赏
  • 举报
回复


Public Function GetStorageName() As String
' Return the name of the storage for
' the current server, using ADSI and the AD.
' The return value is in the format:
' file://.backofficestorage/<domainname>/

' Turn on error trapping for VB and VBS
On Error Resume Next

Dim SysInfo As ActiveDs.ADSystemInfo
Dim strName As String

' Reference the ADSystemInfo object in the
Set SysInfo = New ActiveDs.ADSystemInfo
' Get the domain name
strName = SysInfo.DomainDNSName

If Len(strName) <> 0 Then
' Build the generic part of the EXOLEDB string
GetStorageName = "file://./backofficestorage/" & strName & "/"
Else
' Problem accessing the AD
Err.Raise vbObjectError + 1959, "Unable to retrieve domain name."
End If

' Clean up
Set SysInfo = Nothing
End Function
加载更多回复(10)

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧