使用ASP(.NET)发送EMail(zz)

使用ASP(.NET)发送EMail

北京2865信箱160分箱(100085)冉林仓

n       ASP中发送Email

   ASP中发送Email时往往需要一个COM组件支持,如果你没有第三方的Email组件,你可以使用IIS本身提供CDONTS  EMail组件。这个组件使用时需要安装和启动SMTP服务。这个组件的名称为CDONTS.DLL,使用前需要使用RegSvr32注册这个组件。

   CDONTS组件提供了一系列对象,包括AddressEntryAttachmentAttachmentsFolderMessageMessagesNewMailRecipientRecipientsSession,我们经常使用的是NewMail对象。下面是NewMail对象提供的方法和属性:

名称

功能

格式

Attach

添加附件

Sub AttachFile(Source, [FileName], [EncodingMethod])

AttachURL

URL格式添加附加和数据

Sub AttachURL(Source,ContentLocation,

[ContentBase], [EncodingMethod])

BCC

以“,”分隔的BCC接收者列表(暗送)

字符串类型属性

Body

Text或者HTML格式的邮件正文

字符串类型属性

body format

邮件正文格式

0:表示HTMl格式,1:表示Text格式

CC

以“,”分隔的CC接收者列表(抄送)

字符串类型属性

ContentBase

带有URL附件的邮件中正文采用的URL基地址

字符串类型属性

ContentLocation

带有URL附件的邮件中正文采用的URL

字符串类型属性

From

邮件发送方地址

字符串类型属性

Importance

邮件级别

0: 普通 1:机密 2:绝密

Send

发送邮件

Sub Send([From], [To], [Subject], [Body], [Importance])

各个参数可以参考上下文属性

SetLocaleIDs

设置新消息的代码页标识

Sub SetLocaleIDs(CodePageID As Long)

Subject

邮件主题

字符串类型属性

To

以“,”分隔的接收者地址列表

字符串类型属性

Value

任意的邮件头的值

字符串类型属性

Version

当前集合数据对象库(CDO)的版本号

只读字符串类型属性

在使用有关对象的方法时,方括号参数可以省略。

下面是采用ASP使用的例子:

 Dim MailObject

Set MailObject = Server.CreateObject("CDONTS.NewMail")

MailObject.Send "发送方邮件地址","接收方邮件地址","主题","邮件正文"

 发送附件时可以这样:    

Dim MailObject

Set MailObject = Server.CreateObject("CDONTS.NewMail")

Set MailObject = Server.CreateObject("CDONTS.NewMail")

att_fileName="附件文件名完整路径"

f_name="文件名"

MailObject.From="在这填写发件人地址"

MailObject.To="在这填写接收人地址"

MailObject.Subject="填写主题"

MailObject.Body="填写正文"

MailObject.AttachFile att_file,f_name

MailObject.Send

如果你需要了解CDONTS其它对象的信息,你可以在Visual Basic工程中添加CDONTS组件的引用,然后使用对象浏览器察看CDONTS类型库。添加CDONTS引用时可以浏览到Windows安装目录的系统目录(System32)。

n       使用ASP.NET发送EMail

使用ASP.NET发送EMail也很简单,它需要在Web服务器上使用微软公司的.NET框架SDK,在使用时需要你简单了解一些Visual Basic或者c#编程基础知识。

还是让我们看一个ASP.NET发送的例子程序:

SimpleMail.aspx

 

<% @Page Language="C#" %>

<% @Import Namespace="System.Web.Mail" %>

<%

string strTo = "接收方的邮件地址";

string strFrom = "发送方的邮件地址";

string strSubject = "邮件主题";

 

SmtpMail.Send(strFrom, strTo, strSubject,

  "邮件正文");

 

Response.Write("Email was queued to disk ");

%>

从上面的片断代码,我们可以可以发现,采用.NET框架SDK发送EMail跟上面使用组件提供的接口方法和属性差不多。只不过前者引用创建一个COM组件对象,后者需要使用System.Web.Mail 名称空间的邮件服务支持。这个名称空间中有一个SmtpMail,它提供了一个静态的 Send 方法接收四个与邮件有关的参数。

SmtpMail.Send(From, To, Subject, BodyText);

注意ASP.NET对邮件的支持和ASP 3.0CDONTS基本上相同,都需要本地安装和启动IISSMTP服务。

   现在我们可以先把所有简单的方法抛在一边,先看一下名称空间提供的MailMessage 类。这个类封装了邮件发送的几乎所有细节。通过它可以发送一个HTML格式邮件。

 (SimpleMailMessage.aspx).

<% @Page Language="C#" %>

<% @Import Namespace="System.Web.Mail" %>

<%

MailMessage msgMail = new MailMessage();

 

msgMail.To = "christophw@263.Net";

msgMail.Cc = "webmaster@263.Com";

msgMail.From = "webmaster@ASP.com";

msgMail.Subject = "Hi Chris, another mail";

 

msgMail.BodyFormat = MailFormat.Html;

string strBody = "<html><body><b>Hello World</b>" +

   " <font color=\"red\">ASP.NET</font></body></html>";

msgMail.Body = strBody;

 

SmtpMail.Send(msgMail);

 

Response.Write("Email was queued to disk");

%>

这段代码比上面简单调用Send的例子更好些,因为它提供了更多的选项来发送邮件。

值得注意的是所有重载的Send方法都不会返回一个邮件发送成功的标识值。这主要是因为它只是简单地把邮件写到Inetpubpickup文件夹,最终完成邮件阅读和发送是靠SMTP服务。发送错误的邮件同样也会写进一个文件,不过是写进一个BadMail文件夹。

   使用ASP.NET发送组件也很容易,这时候需要使用System.Web.Mail名称空间的 MailAttachment组件对象,

 (MailAttachment.aspx).

<% @Page Language="C#" %>

<% @Import Namespace="System.Web.Mail" %>

<%

MailMessage msgMail = new MailMessage();

 

msgMail.To = "christophw@263.NET";

msgMail.From = "webmaster@263.com";

msgMail.Subject = "Attachment Test";

 

msgMail.BodyFormat = MailFormat.Text;

msgMail.Body = "Check out the attachment!";

msgMail.Attachments.Add(new MailAttachment("c:\\Boot.INI"));

 

SmtpMail.Send(msgMail);

 

Response.Write("Email was queued to disk");

%>

 

msgMail.Attachments.Add(new MailAttachment("c:\\BootINI"));同样也可以换成下面一行:

MailAttachment maAttach = new MailAttachment("c:\\Boot.ini");

IList msgAttachments = msgMail.Attachments;

msgAttachments.Add(maAttach);

这里需要指出的是附件可以通过System.Collections名称空间的IList 接口来操纵。Ilist接口提供了Add方法。同样也可以用它来枚举或删除附件。还有就是你可以根据需要在MailAttachment构造中设置其编码类型。

下面是关于System.Web.Mail名称空间包含类的简单描述,详细的内容你可以参考.NET框架SDK有关文档。

System.Web.Mail 名称空间包含了一些类,它能够允许你利用集成在Windows2000/XP环境中的SMTP服务发送一个邮件及其附件。

它主要提供了一下几个类;

类名称及枚举定义

描述

MailAttachment

提供一些属性和方法来构造一个邮件附件。

MailMessage

提供一些属性和方法来构造一个邮件消息。

SmtpMail

提供一些属性和方法来利用集成在集成在Windows2000/XP环境中的SMTP服务发送一个邮件及其附件

MailEncoding

邮件编码,可以取HtmlText

MailFormat

邮件格式:可以取Base64 UUEncode

 

MailAttachment类提供EncodingFilename公有实例属性,分别指示邮件附件采用的编码类型和文件名。MailMessage类提供了attachmentsBCC (Blind Carbon Copy)bodyBodyEncodingCC (Carbon Copy)FromHeadersPriority(取值为HighLowNormal)、SubjectToUrlContentBase等属性,使用方法可以参考ASP部分描述。

另外名称空间还提供了SmtpServer静态共享属性用于获取设置发送邮件消息使用的SMTP邮件服务器名称。各种重载的Send方法用于发送一个邮件消息。

posted @ 2005-06-22 21:59  小白天地  阅读(573)  评论(0编辑  收藏  举报