用ASP.NET构建完整E-mail发送系统

asp.net

如果要你用ASP来做一个E-mail发送系统,你首先想到的一定是借助第三方开发的组件,但这样做会耗费你很多的银子。当然你也可以用Windows的自带的对象--CDONTS.NewMail对象来传送E-mail,这虽然是免费的,但却十分依赖操作平台,CDONTS.NewMail对象只存在Windows 200和NT底下,在Windows 95/98底下是没有这个对象。
自从Microsoft公司推出了ASP.NET,E-mail的发送已经成为WEB程序设计的基本对象。本篇文章就是来讨论如何做一个功能十分完备的E_mai的发送系统。

一.开发和运行平台
Windows 2000 Professional、.Net FrameWork Beta 2

二.什么样的E-mail发送系统才是一个功能十分完备系统 只有当一个邮件发送系统具备了:收件人地址、发信人地址、抄送地址、密送地址、邮件主题、邮件主体、和附件等功能时,这个邮件发送系统才是一个比较完备的系统。具备的具体功能如下图所示:

下面就介绍实现这些功能的具体步骤。

三.具体实现步骤
首先要介绍.Net FrameWork SDK中的一个关于E-mail发送的Class Library(类库)--System.Web.Mail。这个Class library提供了E-mail发送的所有对象、属性和方法。其中最重要的对象是MailMessage对象和SmtpMail对象。MailMessage对象主要是包装E-mail的各个结构。譬如:收件人地址、发信人地址等。SmtpMail对象主要是把已经定义好的MailMessage对象发送出去。下面就一些重要的步骤具体说明一下:
1.为了定义MailMessage对象,首先要创立一个MailMessage对象。通过下面语句就可以创立一个MailMessage对象。
<% @Import Namespace="System.Web.Mail"
Dim MailObj as New MailMessage() %>

2.有了一个MailMessage对象后,下面就来定义邮件的结构。我们按照上图的邮件结构顺序来逐个定义。
1>.邮件的发送地址:
MailObj.form="发送地址"
2>.邮件的目的地址:
MailObj.to="目的地址"
如果你要发送给多个人,用逗号分开每个邮件地址。
3>.邮件的抄送地址:
MailObj.cc="抄送地址"
同样的,如果你要发送给多个人,可以在"抄送地址"上,写上多个邮件地址,但要用逗号把他们分开。
4>.邮件的密送地址:
MailObj.bcc="密送地址"
密送地址和抄送地址类似
5>.邮件主题:
MailObj.subject="邮件主题"
6>.邮件内容:
MailObj.Body="邮件内容"
7>.邮件的优先级:
MailObj.Priority = MailPriority.Normal '这是把邮件的优先级定义为普通,你也可以定义为高(high)、低(low)
8>.定义邮件格式:
MailObj.BodyFormat = MailFormat.Text '这是把邮件定义为文本格式,你也可以把邮件定义为超文本格式,只有把MailFormat.Text改成MailFormat.Html即可。
9>.给邮件添加一个附件:
用过ASP的人都了解,要想浏览一下文件是多么困难的事情。但ASP.NET出现以后,这一切就变的简单起来。只用下面一行代码,就可以选择驱动器的任何文件。
<input id="Emailfile" type="file" runat="server" size="40" />

3.发送E-mail
SmtpMail.SmtpServer = "" '指定使用缺省的SMTP服务器
SmtpMail.Send(MailObj) '发送E-mail

四.程序完整的源代码
<% @Import Namespace="System.Web.Mail" %>
<script language="vb" runat="server">
Sub SendButton_Click(sender as Object, e as EventArgs)
'创立一个 MailMessage 对象
Dim MailObj as New MailMessage()
'以下是设定MailMessage 对象的属性,及程序的一些常规判断。
'设定邮件的发送地址
if EmailFrom.text<>"" then MailObj.From = EmailFrom.text
'设定邮件的目的地址
if EmailTo.text<>"" then MailObj.To = EmailTo.text
'设定邮件的抄送地址
if EmailCc.text<>"" then MailObj.Cc = EmailCc.text
'设定邮件的密送地址
if EmailBcc.text<>"" then MailObj.Bcc = EmailBcc.text
'设定邮件格式是文本格式,如果要设定成超文本,把MailFormat.Text改成 MailFormat.Html
MailObj.BodyFormat = MailFormat.Text
'设定邮件优先级,可为 High(高), Low(低), Normal(普通)
MailObj.Priority = MailPriority.Normal
'设定邮件主题
MailObj.Subject = EmailSubject.text
'设定邮件内容
MailObj.Body = EmailBody.text
'给邮件增加一个附件
Dim strFileName as string
strFileName=Emailfile.PostedFile.FileName
if strFileName<>"" then MailObj.Attachments.Add(new MailAttachment(strFileName))
'指定使用缺省的SMTP服务器
SmtpMail.SmtpServer = ""
'现在开始发送邮件
SmtpMail.Send(MailObj)
panelSendEmail.Visible = false
panelMailSent.Visible = true
End Sub
</script>
<html>
<body>
<asp:panel id="panelSendEmail" runat="server">
<form Method="Post" EncType="Multipart/Form-Data" runat="server">
<h2>欢迎用ASP.NET来发送E-mail</h2>
<b>请输入邮件发送地址:</b>
<asp:textbox id="EmailFrom" size="30" runat="server" />
<p>
<b>请输入邮件目的地址:</b>
<asp:textbox id="EmailTo" size="30" runat="server" />
<p>
<b>请输入邮件抄送地址:</b>
<asp:textbox id="EmailCc" size="30" runat="server" />
<p>
<b>请输入邮件密送地址:</b>
<asp:textbox id="EmailBcc" size="30" runat="server" />
<p>
<b>请输入邮件主题:</b>
<asp:textbox id="EmailSubject" size="30" runat="server" />
<p>
<b>请输入邮件主体:</b>
<asp:textbox id="EmailBody" TextMode="MultiLine"
Columns="40" Rows="10" runat="server" />
<p>
<b>请加入附件名称:</b>
<input id="Emailfile" type="file" runat="server" size="40" />
<asp:button runat="server" id="SendButton" Text="发送"
OnClick="SendButton_Click" />
</form>
</asp:panel>
<asp:panel id="panelMailSent" runat="server" Visible="False">
您的邮件已经成功发送,欢迎您的再次使用!
</asp:panel>
</body>
</html>

五.至此一个完整的E-mail发送系统就完成了。如果你的机器达到了本文前面提到的运行环境,那么就建立一个指向此aspx文件的虚拟目录,连接上Internet,在浏览器里运行此程序,就可以方便的完成E-mail的发送了。

时间: 2025-01-30 11:13:11

用ASP.NET构建完整E-mail发送系统的相关文章

Asp.net 构建可扩展的的Comet Web 应用(二)

说明 如果你已经阅读了我之前的一篇文章<Asp.net构建可扩展的的Comet Web 应用>.你应该能够理解我将要写的内容.我解释了Comet技术并且解释了怎样用asp.net构建具有可扩展性的应用.然而,我认为之前的的一篇文章写得有点像主线.它展示了足够的技术,但是没有足够包含任何有用的代码.因此,我想我需要写一个API来将之前一篇文章中的功能封装起来.封装为一系列整齐的类,让它们可以被包含到一个通常的web项目中,给你机会去扩展和测试它. 我将不涉及太多关于线程模型的具体细节.因为在之前

mysql-在Mysql(或者在js中)构建完整查询结果数组

问题描述 在Mysql(或者在js中)构建完整查询结果数组 是这样子的,我想实现从Mysql中查询结果之后调用给js的highchart画图用 现在我通过mysql的 类似select 数量,月份,状态 from table group by 月份,状态,结果如下: 数量 月份 状态 3 1月 成功 5 1月 失败 3 2月 成功 7 4月 失败 原本我想通过json化之后返回给前台画图. 但很显然,我用highchart画图的时候,需要一整年的数据,即如果某个月份,或者状态没有,这一个数量就必

四项措施构建完整的民行申诉网络

本报讯(邱召伟)山东省诸城市检察院今年以来采取四项措施构建完整的民行申诉网络,取得了良好的效果.一是在全市街道.乡镇建立民行http://www.aliyun.com/zixun/aggregation/6918.html">工作联系点,聘请乡镇有关领导担任民行联络员,定期到各联系点了解情况;二是向群众发放便民申诉卡,将民行工作职责和检察官的名字及联系方式予以公布;三是在人口相对集中的乡镇设立民行申诉联络站,派驻业务骨干,对有价值的线索做到及时立案;四是积极推行检法联席会议制度,加强与法院

商务部编制发布13个市场指数欲构建完整指数体系

中国将构建完整市场指数体系 苏琳 张林 尹晓宇 商务部市场运行调节司司长王炳南在近期召开的2010市场指数工作座谈会上表示,"十二五"期间,商务部将继续依托大型商品交易市场编制.发布市场指数,在条件具备的情况下,对主要大宗商品逐一建立市场指数,形成完整的市场指数体系. 今年7月,中关村电子信息产品指数正式发布,该指数根据中关村最大的4家卖场--海龙.鼎好.E世界.科贸中的450家商户的实际成交价,采用销售量加权合成指数方法编制而成,这既让销售商家有了评估产品景气度的市场参考值,又让消费

亚马逊发布智能手机:构建完整软硬件生态平台

没有任何悬念,亚马逊推出了他们的首款智能手机Fire Phone,加入了这个最为拥挤.竞争激烈的红海行业.构建完整生态系统自2011年亚马逊发布平板电脑Kindle Fire之后,业界就一直传言亚马逊在研发自己的智能手机.亚马逊此前花了三年时间研发电子书阅读器Kindle,如今同样用了三年时间才推出智能手机.贝佐斯也希望,Fire Phone可以复制Kindle此前的成功,为亚马逊再次开启一个新时代.亚马逊确实需要一款有新意产品来提振投资者信心.虽然在电子商务.数字内容.云服务三大领域都占据着主

中国人寿适时控股银行构建完整金融板块

中国人寿董事长杨超9日在成都举办的"2010年中国人寿全球开放日"活动上表示,公司最终发展目标是综合性金融集团,会适时控股银行来构建完整的金融板块.国寿副总裁刘家德透露,目前中国人寿对未上市公司的投资近100亿元,其中上半年中国人寿参股投资的广东发展银行对国寿收益贡献最高,年化收益接近13%. 控股银行要与保险主业互动 中国人寿已是民生银行.广发行的最大股东,并持有杭州银行等银行股权.杨超表示,目前国寿并未控股广发行和民生银行.中国人寿将在做强保险主业的同时,逐渐做强资产管理.银行.证

用ASP.NET做自己的邮件发送系统

如果要你用ASP来做一个邮件发送系统,你一定认为这是一个比较复杂的工作.其实也的确是这样.但当他的后继产品ASP.NET被推出以后,他的强大功能就使的这一切就变的相对简单了.真的这样神奇么?我们就通过ASP.NET做一个邮件发送系统,看看到底有什么奥秘,是不是真的简单. 一.运行环境 虽然Microsoft公司推出Visual Studio .NET已经有一段时间了,但.NET Framework SDK却依然还是BETA版,分别是BETA 1和BETA 2.这二个版本之间也有很大的差异,譬如说

单页应用程序:使用 ASP.NET 构建响应迅速的现代 Web 应用程序

单页应用程序 (SPA) 是加载单个 HTML 页面并在用户与应用程序交互时动态更新该页面的 Web 应用程序 . SPA 使用 AJAX 和 HTML5 创建流畅且响应迅速的 Web 应用程序,不会经常进行页面重载.但是,这意味 着许多工作在客户端的 JavaScript 中进行.传统的 ASP.NET 开发人员可能难以适应这一巨变.幸运的是, 可以借助许多开放源代码 JavaScript 框架来简化创建 SPA 的任务. 在本文中,我将演示如何创建一个简单的 SPA 应用程序.在此过程中,我

Asp.net 构建可扩展的的Comet Web 应用(一)

说明 这篇文章用来提供在asp.net中使用comet的一种理论上的解决方案.它包含了Comet技术在服务端的实现以及怎样去解决可扩展的问题.我将在不久以后发表一般文章,使用我接下来要讲到的Comet 线程池技术演示一个小游戏,来提供客户端的代码.它可能会给你在真实的环境下解决问题带来一些思路. 简介 在过去的六个月里,我一直都在投入精力开发一个在线的象棋应用程序.它能够让玩家注册.登陆,并且像在真实世界中对弈一样.其中,我不得不克服的一个障碍就是,怎样在服务端和客户端实现一个类似在真实世界中的