日期:2008-12-28  浏览次数:21342 次

ASP(Active Server Pages)中发送邮件不是件困难的事情,需要的条件就是使用CDO组件(Collaborative Data Object),它是谁NT Option Pack 4安装后就有的。为了确认CDO组件已经正确安装在你的机器上,选择“开始/控制面板/添加、删除程序/NT Option Pack 4”,看看是否SMTP服务已经安装。如果没有安装,那么运行下面显示的代码时将会发生错误(错误信息类似于“Invaild class string”)。


在ASP中创建CDO组件实例的代码如下:

〈 %

Dim objCDO
Set objCDO = Server.CreateObject("CDONTS.NewMail")
% 〉

  现在可以发送邮件了!CDONTS.NewMail实例有一些明显而且简单的属性与方法,下面来看看相关的代码:

〈 %

’This code assumes the above CDO
’instantiation code is included
objCDO.To = "mitchell@4guysfromrolla.com"
objCDO.From = "gates@microsoft.com"
objCDO.cc = "barksdale@netscape.com,jobs@apple.com"

Dim txtSubject
txtSubject = "Hello Scott! We were wanting your advice on some programming issues. Please come to Redmond at your earliest convenience for a very fat check!"

objCDO.Subject = "Attn: Scott, we need you!!"
objCDO.Body = txtSubject
objCDO.Send

% 〉

  这就是所有的一切。组件的几个属性简单实用。执行上面的代码后,一封邮件将从from gates@microsoft.com发往mitchelL@4guysfromrolla.com,并且抄送到barksdale@netscape.com 和 jobs@apple.com。主题就是一个简单的常规信息。最后使用send方法将邮件发送出去(不要忘记执行这个方法,否则邮件不会发送出去)。

  CDO组件的功能相当强大!你可以使用它发送附件,发信给邮件列表,发送时间表(就象在Outlook中一样)。

  点击这篇文章,可以看到如何通过私人Email进行行销买卖。这篇文章详细描述了更好使用CDO组件的问题。

下面来看看CDO组件的另外一些特征,代码片断如下:

〈 %
objCDO.To = "someone@xyz.com (John Doe)"
objCDO.From = "me@abc.com (Jane Doe)"
objCDO.bcc = "janedoe@aol.com" Blind cc
objCDO.Sub t = "My Resume, per Request"
objCDO.Body = "Hello John. Here is a copy of my resume"
objCDO.Importance = 2 High importance!
objCDO.AttachFile("\\server\jane\resume.doc","Resume.doc")
objCDO.Send Send off the email!

’Cleanup
Set objCDO = Nothing
% $#@62;

  所你所见,这里介绍了2个新的属性和一个新的方法。Bcc属性表示密送,这意味着在“To”处列表的人收到邮件后,看不到邮件发送到了“Bcc”处的人。同样使用了Importance属性,它有3个选项:
    0 - Low
    1 - Normal
    2 - High
  如果不特别设置,Importance属性的默认值是1-Normal。在地址处,写成了如下样式
“emailaddress@something.com (Name)” ,其中括号中的表示发送邮件人的名字。这样,收到邮件的人John Doe将会看到邮件来自Jane Doe,而不是me@abc.com。

  这里使用的新的方法是AttachFile。正如方法的名字所示,它表示在要发送的邮件上附加一个文件。它接受3个参数,但这里只需要讨论前2个。第1个参数表示附件的文件,在这个例子中是\\server\jane\resume.doc;第2个参数是可选则的,表示附件在邮件中的命名,这里是“Resume.doc”,但你可以选择更好听些的名字(比如叫做:“Janes Nifty Resume”)。

如果遇到拒绝访问的错误 ...

  根据Web服务器上的安全设置不同,在执行send方法时,有可能遇到拒绝方法的错误。发生这个错误时,请检查一下Windows Nt的用户Iusr_MachineName是否对邮件根目录(一般位于C:\InetPub\mailroot\)拥有“完全控制”的权限。(比如说:Web服务器的名字是Bob,那么请检查用户Iusr_Bob是否拥有那个权限)。