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

  • 相关阅读:
    剑指offer——最小的K个数和数组中第K大的元素
    Leetcode刷题指南链接整理
    160. Intersection of Two Linked Lists
    100. Same Tree
    92. Reverse Linked List II
    94. Binary Tree Inorder Traversal
    79. Word Search
    78,90,Subsets,46,47,Permutations,39,40 DFS 大合集
    0x16 Tire之最大的异或对
    0x16 Tire
  • 原文地址:https://www.cnblogs.com/me115/p/1851783.html
Copyright © 2011-2022 走看看