65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 CDO 1.2 和 Exchange 转发电子邮件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.50/5 (2投票s)

2004年4月30日

2分钟阅读

viewsIcon

73720

如何使用 CDO 转发通过 Exchange 发送的电子邮件。

引言

本文档解释了如何使用 CDO 和 Exchange 转发电子邮件。

使用代码

CDO.DLL 负责 CDO 1.2(协作数据对象),在安装 Exchange 5.5 或 Outlook Web App (OWA) 时安装在 Web 服务器上。

与 CDONTS(NT Server 协作数据对象)不同,CDO 1.x 仅适用于在 Exchange Server 上经过身份验证的用户。

与之相反,任何有权创建 ASP 脚本的用户都可以通过 CDONTS 发送电子邮件。

除了访问 Exchange 服务器的 SMTP 功能外,CDO 1.x 还提供对其他对象的访问,例如通讯录、日历、日期等。

因此,与 CDONTS 相比,发送电子邮件的语法略有变化。但这种变化通过大量的全新可能性来弥补。

条件

必须满足以下条件:

  • Exchange Server 上必须存在一个邮箱。
  • CDO 1.x 必须安装在 Web 服务器上。
  • 执行邮件代码的 ASP 脚本必须在邮箱所有者的 NT 帐户下运行。
  • 有关哪些 ASP 脚本在哪些权限下执行的信息记录在 Web 服务器的元数据库中。如果更改文件名,此信息将不会在元数据库中更新。

因此,建议创建一个具有相应权限的单独子目录。

权限的分配在“属性”中完成。

代码

使用以下 ASP 代码,可以通过 Exchange Server 使用 CDO 1.x 发送电子邮件:

在第 1 行和第 2 行中,定义了 Exchange 服务器的地址以及邮件帐户的别名。此信息在第 4 行中组合成用户配置文件。在第 5 行中,创建到 Exchange 服务器的 MAPI 会话(消息应用程序编程接口)。在第 6 行中,注册用户。在第 8 行到第 10 行中,传递邮件的主题和正文。第 12 行到第 14 行传递收件人并解析别名名称为电子邮件地址。在第 16 行中,发送邮件。在第 17 行到第 20 行中,关闭会话并释放对象。

1    Const cStrServer        = "<name of exchange server>"
2    Const cStrMailbox       = "<Mail-Account Alias>"
3    bstrProfileInfo = cStrServer & vbLf & cStrMailbox 
4
5    Set objSess = Server.CreateObject("mapi.session") 
6    objSess.Logon "", "", False, True, 0, True, bstrProfileInfo
7
8    Set objFBMess = objSess.Outbox.Messages.Add
9    objFBMess.Subject = "Test CDO-Mail"'Subject

10   objFBMess.Text = "Content of the mail" mailtext
11      

12   Set objRecips = objFjRecips = objFBMess.Recipients
13   objRecips.Add ("mustermann@testweb.de") 

14   objRecips.Resolve
15
16   objFBMess.Send
17
18   objSess.Logoff
19   Set objFBMess = nothing
20   Set objRecip = nothing
21   Set objSess = nothing

可能出现的错误

如果在 Exchange Server 上注册失败,将出现以下错误消息:

Collaboration Data Objects error '000004f9' 
The information store could not be opened. [MAPI 1.0 - [MAPI_E_LOGON_FAILED(80040111)]]
/wvs/_mailtest1.asp, row 13

在大多数情况下,错误是由于用户的授权问题引起的。

© . All rights reserved.