System.Object
下面说明System.Web.Mail这个名空间里各类的用法:
Base64
UUEncode
Html
Text
紧接着,System.Web.Mail.MailPriority,还是个枚举类,呵呵,这个主要是指定电子邮件的优先级别。枚举值如下:
High
Low
Normal
这些枚举值都很好理解,看名字就可以知道它是怎么用的,就不说了。
再接着是一个电子邮件附件类System.Web.Mail.MailAttachment,附件在电子邮件中经常要用到,因此在 . NET开发人员也为它做了一个单独的类。它主要提供用于构成电子邮件附件的属性和方法,这个类并不复杂,很好用,呵呵,往下看。先看个例子可能会更容易理解点:
MailMessage mailObj=new MailMessage();
string attaches = @"g:\image\dida.jpg,c:\test.txt,d:\a.chm"; //这个邮件带三个附件,也可以分成//两个写,不过这样写方便,
char[] SplitFlag = new char[] {','};
foreach (string str in attaches.Split(SplitFlag))
{
//个邮件附件类
}
它的用法就是这样,代码很简单,也都很容易理解。
这个类还提供了两个公共属性,如下表:
Encoding
Filename
Encoding属性,默认情况下为 UUEncode,另一个编辑类型是Base64。
1.Attachments 属性:指定随电子邮件一起传送的附件集合,属性值为MailAttachment 对象的 IList 集合。用法如上面代码。
2.Bcc 属性:获取或设置以分号分隔的电子邮件地址列表如收件人的电子邮件地址或者是在通讯簿中显示的名称,这些地址接收电子邮件的匿名密件副本 (BCC)。
例:MailMessage mailObj = new MailMessage();
mailObj.Bcc = "xxxx@xxx.com";
3.Body 属性:同HTML里的BODY,为设置电子邮件的正文部分。
4.BodyEncoding 属性:获取或设置电子邮件正文的编码类型,属性值为Encoding 值(如上文提到)之一。
例:MailMessage mailObj = new MailMessage();
mailObj.BodyEncoding = Encoding.ASCII;
5.BodyFormat 属性:获取或设置电子邮件正文部分的内容类型,属性值为MailFormat 值之一。例:MailMessage mailObj = new MailMessage();
mailObj.BodyFormat = MailFormat.Html;
6.Cc 属性:获取或设置以分号分隔的电子邮件地址列表,这些地址接收电子邮件的抄
例:MailMessage mailObj = new MailMessage();
mailObj.Cc = "xxxxxx@xxx.com";
7.Fields 属性:顾名思义,字段属性,可以用此来达到身份验证的效果哦,下面会演示.在.NET Framework 1.1中才有的属性。
8.From 属性:获取或设置发件人的电子邮件地址,
例:MailMessage mailObj = new MailMessage();
mailObj.From = "xxxxxx@xxx.com";
9.Headers 属性:指定随电子邮件一起传送的自定义标头。属性值为 IDictionary 集合
10.Priority 属性:获取或设置电子邮件的优先级。
例:MailMessage mailObj = new MailMessage();
mailObj.Priority = MailPriority.Low;
11.Subject 属性:获取或设置电子邮件的主题。
12.To 属性:获取或设置以分号分隔的收件人电子邮件地址列表。
13.UrlContentBase 属性:获取或设置 Content-Base HTTP 标头,即在 HTML 编码的电子邮件正文中使用的所有相对 URL 的 URL 基。例:MailMessage mailObj = new MailMessage();
mailObj.UrlContentBase="http://www.pconline.com.cn/News";
14.UrlContentLocation 属性:获取或设置电子邮件的 Content-Location HTTP 标头。
首先要导入System.Web.Mail这个名空间
{
Response.Write(pp.Message);
}
以上程序在Windows2000 Server +SMTP服务器+Miscrosoft .NET Framework 1.1+VS2003+C#上运行成功.在XP下运行可能会发送不成功,原因在上面开头部分有讲到.
如果本地 SMTP 服务器(包括在 Windows 2000 和 Windows Server 2003 中)位于阻塞任何直接 SMTP 通信量(通过端口 25)的防火墙之后,则需要查找网络上是否有可用的智能主机(一个 SMTP 服务器,它能够中转从内部 SMTP 服务器直接发送到 Internet 的外出电子邮件。它应能同时连接到内部网络和 Internet,以用作电子邮件网关)能用来中转发往 Internet 的 SMTP 消息。关于SmtpServer属性就讲这么多, SmtpMail类还提供了一个Send方法,用法如上面代码,它使用在 MailMessage 类的属性中提供的参数发送电子邮件。还可以这么写.
例:string from = "xxxx@xxxxx.com";
string to = "xxxx@xxxxxxx.com";
string subject = "Hello";
string body = "Hello – Welcome To Mail Program";
SmtpMail.SmtpServer = "MyMailServer";
SmtpMail.Send(from, to, subject, body);
利用这小段代码同样可以达到发送邮件的目的.
CDO是Collaboration Data Objects的简称,它是一组高层的COM对象集合,现在在Windows2000和Exchange2000中使用的都是CDO的升级版本(分别为cdosys.dll和cdoex.dll),它是一个数据对象模型。CDOSYS构建在SMTP协议和NNTP协议之上,作为组件被安装在Windows2000 Server,可以在系统目录(如c:\winnt)的system32子目录中找到它(cdosys.dll)。
CDO组件比SmtpMail功能更先进,它提供了一些SmtpMail类没有的功能,如通过需要认证的SMTP服务器来发送邮件, 检查入站的消息是否有病毒,检测和丢弃不适当的新闻组邮件, 用 SMTP 和 NNTP 协议创建和发送消息等等一系列功能.
public void SendMailWithCDO()
{
flds ["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value=2;
flds ["http://schemas.microsoft.com/cdo/configuration/sendemailaddress"]
flds ["http://schemas.microsoft.com/cdo/configuration/smtpaccountname"]
flds ["http://schemas.microsoft.com/cdo/configuration/sendusername"]
flds ["http://schemas.microsoft.com/cdo/configuration/sendpassword"]
flds ["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"]
//value=0 代表匿名验证方式(不需要验证)
//value=1 代表Basic验证方式(使用basic (clear-text) authentication.
//Value=2 代表NTLM验证方式(Secure Password Authentication in Microsoft Outlook Express)
flds["http://schemas.microsoft.com/cdo/configuration/languagecode"]
.Value=0x0804;
flds ["http://schemas.microsoft.com/cdo/configuration/smtpserver"]
.Value="smtp.hello.com"; //假设
}
以上代码很简单,也很容易理解,跟SMTP发送邮件很相似,只是在中间加了段身份验证的.
下面来看用SMTP通过身份验证发送邮件的代码:
public void SendMailWithSMTP(string username,string password,string from,string to ,string subject,string msg)
{
{
mailObj.Fields.Add(“http://schemas.microsoft.com/cdo/configuration/sendusername”,”username”);
mailObj.Fields.Add(“http://schemas.microsoft.com/cdo/configuration/sendpassword”,”password”);
}
SmtpMail.SmtpServer=”MySmtpServer”; //这里要更改成你的SMTP SERVER
SmtpMail.Send(mailObj); //发送,搞定
}
catch(Exception exp){MessageBox.Show(exp.Message);}
}
以上程序在Windows2000 Server +SMTP服务器+Miscrosoft .NET Framework 1.1+VS2003+C#上运行成功.在XP下运行可能会发送不成功,原因在文章开头部分有讲到.
在.NET中还可以用SOCKET来进行邮件发送,这里就不说了.
文章引用自:http://wuxh.blogdriver.com/wuxh/465524.html