首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > 邮件与程序开发 > ASP.NET 2.0中发送电子邮件剖析之一 > 正文

ASP.NET 2.0中发送电子邮件剖析之一

出处:天极网 作者:朱先忠编译 时间:2006-9-25 9:26:00
一、简介

  如今,电子邮件已经成为一种无所不在、异步通知和分布式的消息系统。存在许多web开发场所;其中,服务器端代码都需要生成一个电子邮件并且把它发送给指定的接收者。该电子邮件可以被发送给网点中的一些用户,通知他们有关于他们的新建用户帐户,提醒他们忘记的口令,或以邮件形式提交给他们一个清单。当然,这也可以是针对web开发者或站点管理员,提供给他们有关一个刚刚公开的未处理的异常或用户回馈的消息。

  幸好,ASP.NET使得发送电子邮件非常轻松。.NET框架版本1.x在System.Web.Mail类中包括了许多类,它们允许以编程方式通过短短的几行代码来发送一个电子邮件。尽管这个命名空间和这些类仍然存在于.NET框架2.0版本中,但是它们已经过时,你可以在System.Net.Mail命名空间中找到新的与邮件支持相关的类。

  在本文中,让我们来一起探讨System.Net.Mail命名空间中的相关类,并且分析如何从一个ASP.NET 2.0页面的code-behind类中发送一个电子邮件。我们还要在Web.config中指定中继服务器消息以及如何把这个消息应用于一些内置ASP.NET服务器控件中以便实现发送电子邮件(例如当一个用户创建一个帐户或需要一个口令提示器/重置器时)。

  二、探讨System.Net.Mail命名空间中的类

  在System.Net.Mail命名空间中共有16个不同的类,它们都与把电子邮件发送到一个指定的简单的邮件传输协议(SMTP)服务器以便进一步提交有关。在这个命名空间中有两个核心类是:

  · MailMessage:描述一个电子邮件消息;它拥有From,To,Subject,Body等属性;

  · SmtpClient:把一个指定的MailMessage实例发送到一个指定的SMTP服务器。

  典型地,当你从一个ASP.NET 2.0页面中发送电子邮件时,你要:

  1. 创建一个MailMessage对象;

  2. 赋给它属性;

  3. 创建一个SmtpClient类实例;

  4. 指定关于使用该SMTP服务器的细节(如果它们没有在Web.config中指定);

  5. 经由SmtpClient对象的Send方法发送该MailMessage。

  其中,上面的第1步和第2步可以被略过,因为SmtpClient类的Send方法能够接收一个MailMessage对象或接收四个字符串(分别描述电子邮件消息内容的from,to,subject和body部分)。

  System.Net.Mail命名空间中的其它类还提供了更高级的电子邮件功能。例如,这些类能够用于在一个电子邮件消息中添加附件,把对象嵌入到一个电子邮件,指定SMTP服务器认证消息等;还有一些Exception的派生类用于处理SMTP特定的异常。我们会在以后的文章中来讨论这些其它类的更高级的使用情形。

  三、提供有关SMTP服务器的详细信息

  当从Outlook或GMail中把一个电子邮件发送给一个朋友时,该电子邮件程序使用一个中继服务器建立一个连接并且发送该电子邮件消息的内容(连同其它一些消息,例如电子邮件创建日期,电子邮件格式(文本或HTML,等等),接收者,等等)。中继服务器接收该消息,然后连接到接收者的SMTP服务器并且发送该消息。一旦该消息被提交,接收者就能够(稍后)使用一种不同的协议(例如IMAP或POP3)来提取该消息。

  因此,为了从一个ASP.NET页面中发送一个电子邮件,我们需要提供给SmtpClient类关于该中继服务器的消息。借助于中继服务器的主机名,你能够指定下列信息:相应的端口号(典型地使用端口25),当把你的电子邮件消息内容连接到中继服务器时是否使用SSL,以及认证证书(如果必要的话)等。作为选择,如果你可以在你的web服务器上安装一个本地SMTP服务,它可以周期性地监视一个特别的"drop-off"目录,发送出现在那个目录中的任何消息。你能够配置是否该SmtpClient类把它的电子邮件消息传送给一个单独的中继服务器或是否能通过DeliveryMethod属性把该邮件投入到一个指定的检出目录下。

  SmtpClient类使用的中继服务器信息能够以编程方式通过SmtpClient类的属性指定,也可以被集中在Web.config文件中。为了使用Web.config方法,你可以在<configuration>元素内添加一个<system.net>元素。然后,添加一个包含一个<smtp>元素(其设置是在它的<network>子元素中指定的)的<mailSettings>元素。请参考如下的代码:

<configuration>
 <!-把电子邮件设置添加到<system.net>元素-->
 <system.net>
  <mailSettings>
   <smtp>
    <network host="relayServerHostname" port="portNumber" userName="username" password="password" />
   </smtp>
  </mailSettings>
 </system.net>
 <system.web> ... </system.web>
</configuration>

  其中的host属性包含relayServerHostname。如果你正使用一个外部中继服务器,那么该relayServerHostname可能是类似于smtp.yourisp.com的内容。如果该中继服务器的端口数字是除典型的端口25以外的其它数,那么你可以通过port属性来指定它。大多数外部中继服务器都要求实现某种类型的认证(为了防止匿名垃圾邮件通过中继发送他们的垃圾信息)。在需要用户名/口令认证时需要提供userName和password属性。

  只有SmtpClient属性的一个子集能够通过Web.config中的设置指定。为了定制其它的SmtpClient属性(例如EnableSsl,Timeout,等等),你可以在发送电子邮件时以编程方式设置它们。
四、通过回馈Web页面发送管理员电子邮件

  为了说明使用MailMessage和SmtpClient类来实现发送一个电子邮件,我已经创建了一个简单的回馈页面示例。在这个页面中,用户被提示输入其电子邮件地址,他们的回馈主题和相应的回馈内容。

<table border="0">
<tr>
<td>
<b>Your Email:</b>
</td>
<td>
<asp:TextBox runat="server" ID="UsersEmail" Columns="30"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<b>Subject:</b>
</td>
<td>
<asp:TextBox runat="server" ID="Subject" Columns="30">
</asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<b>Body:</b> <br />
<asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10">
</asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button runat="server" ID="SendEmail" Text="Send Feedback" />
</td>
</tr>
</table>


  一旦用户提供了回馈消息并且点击了"Send Feedback"按钮,即发生一个回寄并且该按钮的Click事件激发。在该事件处理器内,一个MailMessage对象被创建,并且它的To,From,Subject和Body属性都根据用户提供的消息加以设置。在创建MailMessage对象并且填充它的属性后,该电子邮件被通过SmtpClient类的Send方法发送出去。

Protected Sub SendEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SendEmail.Click
 '!!!把这个值更新为你的电子邮件地址
 Const ToAddress As String = "you@youremail.com"
 '(1)创建MailMessage实例
 Dim mm As New MailMessage(UsersEmail.Text, ToAddress)
 '(2)属性MailMessage赋值
 mm.Subject = Subject.Text
 mm.Body = Body.Text
 mm.IsBodyHtml = False
 '(3)创建SmtpClient对象
 Dim smtp As New SmtpClient
 '(4)发送MailMessage(将使用Web.config设置)
 smtp.Send(mm)
End Sub

  在这里的代码中,我们不需要设置SmtpClient类的任何属性,因为它们已经在Web.config文件中指定了(请参考本文下载源码)。


  五、结论

  通过进一步结合来自于ASP.NET 1.x的其它改进功能,ASP.NET 2.0中的电子邮件发送能力被进一步更新并且移动到一个新的命名空间-System.Net.Mail。在ASP.NET 2.0中,中继服务器设置能够容易地脱离ASP.NET代码,而移动到Web.config文件中,正如我们在这个示例所看到的。而且,还有对中继服务器认证更好的支持。在下篇文章中,我们将探讨更高级电子邮件使用情况,例如构造HTML格式的电子邮件,发送附件,把对象嵌入到电子邮件内,处理与SMTP/中继服务器相关的异常,等等。
相关文章 热门文章
  • 深入解析ASP.NET中实现发送电子邮件
  • ASP.NET 2.0发送电子邮件中存在的问题
  • ASP.NET 2.0发送电子邮件全面剖析之二
  • 用C++ Builder实现电子邮件群发
  • 用Cdonts实现发送Email
  • Jmail的主要参数列表
  • ASP.NET 2.0发送电子邮件全面剖析之二
  • VC++ SMTP协议电子邮件传送剖析
  • 通过sina的smtp验证的Java发送邮件源代码
  • ASP.NET 2.0中发送电子邮件剖析之一
  • 在Asp.Net中使用SmtpMail发送邮件的方法
  • .NET环境下Email的技术介绍
  • ASP.NET 2.0发送电子邮件中存在的问题
  • 用ASP判断Email地址是否有效
  • IIS如何接收ServerXMLHTTP传过来的编码字符?
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号