在WEB页面上发送电子邮件功能的实现

【摘要】利用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,在浏览器中运行此程序,就可方便的完成电子邮件的发送了。

原文地址:https://www.cnblogs.com/me115/p/1851783.html