【摘要】利用WEB页从WEB服务器发送电子邮件不仅具有隐私性,还具有直观、方便和快捷的特点,本文应用Microsoft 公司推出的ASP.NET实现上述功能。
【关键词】WEB页 电子邮件
通常的WEB网站虽然已经能够提供较多的交互方式,如聊天室、留言板和论坛等等,但这样的交互方式不具有隐私性,并不适用所有的情况下使用;运用传统的客户端电子邮件收发软件虽然解决了隐私性的问题,但又缺乏直观、方便和快捷的特点,在公共场合上网时尤为不方便,利用WEB页从WEB服务器发送电子邮件就很好的解决了上述的矛盾。
实现上述功能与WEB服务器采用的操作系统有关,如果使用UNIX,采用PERL语言编写只需调用UNIX 的Sendmail命令即可,但UNIX系统在校园网中的使用不多;如果用asp来实现,则必须考虑具体的操作平台。在windows 2000及NT下,可以使用cdnots.newmail来传送E-mail,但在windows 95/98却没有这个对象,因此,只能使用mailto超级链接来调用outlook实现,也就失去了在线发送邮件的意义。
自从Microsoft 公司推出了ASP.NET,E-MAIL的传送功能已经被设计为WEB程序的基本对象,上述的问题才得到完美的解决。
一、 开发平台:
目前,ASP.NET支持的开发平台有WINDOWS NT4.0(需安装service pack 5 以上版本)、windows 2000(server或professional版)及windows 9x,建议使用windows 2000 server来进行开发,本文即以该开发平台为例。
安装ASP.NET的必要组件有:
* IIS 5.0,该元件windows 2000 server 已经默认安装;
* Internet Explorer 5.5或以上版本,windows 2000 server 默认的版本是5.0,在这个版本中对XML支持尚有些欠缺,最好升级成Internet Explorer 5.5以上版本。
* .NET Framework及.NET Framework SDK,它们是执行ASP.NET最关键的组件,下载的网址如下:
http://msdn.microsoft.com/cownloads/default.asp
此外,由于ASP.NET默认的文字编码是ISO8859-1,并不能正确显示中文,可在web.config文件中的<configuration>模块中使用UTF-8编码方式来实现中文显示。
<system.web>
<globalization requestencoding=“UTF-8”
responseencoding=“UTF-8”/>
</system.web>
二、 实现方法:
1) 直接利用SmtpMail类发送简单的电子邮件:
SmtpMail 类是System.Web.Mail命名空间中最基本的类,它是实现发送电子邮件功能的核心类,无论发送的邮件多么复杂,最终都是通过SmtpMail类中的Send方法发送出去。
声明命名空间的语句是:
<%@ Import namespace=”System.Web.Mail” %>
Send方法有两种基本的使用方法,但发送简单的电子邮件时,只需调用SmtpMail类即可:
SmtpMail.Send(from,to,subject,message)
括号中的四个参数分别表示发信人的邮件地址、收件人的邮件地址、邮件主体及邮件内容。
一般情况下,电子邮件包含着四个部分内容就足够了。因此,如果程序需要经常发送这样简单的邮件,最好是调用类来完成已达到减少程序代码的目的。
实现的方法是,首先通过网页读取表单中的mailto、mailfrom、mailsubject和mailBody,然后分别指定给mail对象的 to、from、subject和Body属性,最后调用SmtpMail.Send送出邮件。
2) 使用MailMessage对象发送复杂的电子邮件:
一个实用的电子邮件系统还应该包括其他许多内容,如发送给多个收件人、使用不同的邮件格式类型和发送附件等,仅用SmtpMail是无法做到的,必须使用System.Web.Mail命名空间中的MailMessage类来实现。
要使用MailMessage类,首先必须创建MailMessage类实例。
MailMessage mymsg= new MailMessage();
然后设定MailMessage的各种属性,以实现电子邮件的各种功能。
MailMessage类的常用属性中,除了最基本的from、to、subject和Body以外,值得注意的是MailFormat属性,使用Mailformat.Text可以设置成纯文本方式,使用Mailformat.HTML可以设置成HTML格式。
在网页中可以增加2个格式单选按钮,而设置属性的程序修改为:
if Format.selecteditem.text=“纯文本格式” Then
mail.Bodyformat=mailFormat.Text
else
mail.Bodyformat=mailformat.Html
end if
mail.Body=mailBody.Value
有时我们收信时看到的是发件人的姓名而不是邮件地址,达到这个目的只要将邮件地址改为“姓名<邮件地址>”格式即可。
如果同一个邮件需要传送给多个收件人,可以将所有的邮件地址用逗号分隔列出,如:
mail.to =“xhyjl<xhyjl@pub.tz.jsinfo.net>”,”arcadian<arcadian@sohu.com>“
其他如设置副本收件人、密件副本收件人、邮件内容的编码方式、邮件的优先度等只要分别设置MailMessage的cc、bcc、Bodyencoding和priority属性即可,因为使用较少,本文不再详细表述。
完成了对MailMessage的属性设置,下一步就是将MailMessage对象转换成邮件发送出去。完成这项任务的依然是SmtpMail类的Send方法,但这里的Send方法只有一个参数:
Smtp.Send(MailMessage)
对于本例为:SmtpMail.Send(mymsg);
至此,一封内容更加丰富的邮件发送程序已经完成。
3) 使用MailMessage对象的Attachments属性发送带有附件的电子邮件:
过去在Web页面上发送电子邮件附件相对比较困难,因为无论是何种web动态技术都只能操作本地服务器上的文件,而无权操作客户机上的文件,但要发送电子邮件的附件,首先必须将这个附件上传到服务器,ASP.NET提供了内置的文件上传功能,因此发送电子邮件附件也就成了不再困难的事情。
ASP.NET发送电子邮件附件的步骤如下:
* 将文件上传到服务器;
* 创建MailAttachment类实例,引用刚刚上传的文件;
* 将刚才创建的MailAttachment类实例通过Add方法添加到MailMessage类Attachments属性,最后与MailMessage一起发送。
具体方法如下:
首先在网页上增加一个输入框:
<Input Type =“file” id=“Attach” runat=“server”>
在发送邮件之前,使用由<input Type=“file”>得到的文件名生成一个MailAttachment对象,再将其加入MailMessage对象的Attachments属性中:
mail.AttachMents.add(new mailAttachment(Attach.postedfile.sTrfilename))
至此,邮件的附件组合工作已经完成,程序最后便是使用Smtp.Send方法将带有附件的MailMessage类以邮件的形式发送出去。
三、运行测试:
下面是一个较完整的发送邮件的实例:
<% @ Page language=“vb debug=”ture” %>
<% @ Import Namespace=“System.Web.Mail” %>
<Html>
<Body>
<H2>欢迎使用asp.net发送电子邮件<Hr></H2>
<form runat=“server”>
<Table border=1>
<Tr><Td>收信人</Td>
<Td><input Type=“text” id=“mailto” size=30 runat=“server”/></Td></Tr>
<Tr><Td>寄信人</Td>
<Td><input Type=“text” id=“mailfrom” size=30 runat=“server”/></Td></Tr>
<Tr><Td>主题</Td>
<Td><input Type=“text” id=“mailsubject” size=30 runat=“server”/></Td></Tr>
<Tr><Td>内容</Td>
<Td><textarea id=“mailBody” rows=10 cols=40 runat=“server”/></textarea><br>
添加附件:<input Type =”file” id=”Attach” runat=”server”>
</Td></Tr>
</Table>
<Input Type=“button” Value=“发送” id=“Sendbutton” onserverclick=“Sendbutton_click runat=“server”/>
</form>
<hr>
<asp:label id=“label1” runat=“server”/>
</Body>
</Html>
<Script Language=“vb” runat=“server”>.
Sub Sendbutton_click(Sender as object , e as eventargs)
Dim mail as MailMessage=new MailMessage()
‘以下是设定MailMessage对象的属性
Mail.to = mailto.Value
Mail.from = mailfrom.Value
Mail.subject = mailsubject.Value
Mail.Attachments.Add(new mailAttachment(Attach.postedfile.filename))
Mail.Body=MailBody.Value
‘指定使用缺省的SMTP服务器
SmtpMail.Smtpserver=””
‘开始发送邮件
SmtpMail.Send(mail)
Label1.text=“信件发送成功!”
End sub
</script>
该程序安装在windows 2000 server操作系统的web服务器上,建立一个指向此aspx文件的虚拟目录,连接上Internet。客户端操作系统为windows 98,在浏览器中运行此程序,就可方便的完成电子邮件的发送了。