zoukankan      html  css  js  c++  java
  • 在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,在浏览器中运行此程序,就可方便的完成电子邮件的发送了。

  • 相关阅读:
    MySQL第五天
    phprpc
    最近数据库不怎么太平
    dumpfile参数,linux和windows下稍有不同
    impdp 时无反应
    修改IP后,重新config EM
    ORA00054: resource busy and acquire with NOWAIT specified
    测试修改DBID手记
    如何关闭任务计划
    文件夹打开变成寻找框如何解决
  • 原文地址:https://www.cnblogs.com/me115/p/1851783.html
Copyright © 2011-2022 走看看