大家在日常开发中,经常会遇到开发一个向客户自动发送email的应用模块,例如,当客户操作某一特定的操作或上网注册、购物时,服务器端在客户操作完成时向客户自动发送一封确认邮件等。.net framework 多种方法,可以使用socket(套接字)来建立和邮件服务器的连接,然后使用smtp(简单邮件传输协议)服务传送邮件,不过这样做相当复杂。我们还是使用.net框架的system.web.mail命名空间提供的类来完成发送email吧,因为这样做很简单。
system.web.mail命名空间为smtp(简单邮件传输协议)提供了一个简单的托管接口,包含很多类,其中有mailmessage\mailattachment\smtpmail等重要类,其中mailattachment 类提供用于构造电子邮件附件的属性和方法,mailmessage 类提供用于构造电子邮件的属性和方法,smtpmail 类提供用于使用宿主系统的协作数据对象 (cdosys) 消息组件来发送消息的属性和方法。
为了保证程序能够正确运行,设置iis中默认smtp虚拟服务器的“中继”方法如下:
进入“internet信息服务“界面,右键点击“默认smtp虚拟服务器属性”在弹出菜单中选择“属性”,在“访问”选项卡中单击“中继”按钮,然后在“中继限制”窗口中在“ip地址(掩码)/域名”处加添“127.0.0.1”。
下面给出一个sendemail.aspx文件,该文件使用visual web developer 2005速成版的测试版2下开发,在windows2000server+sp4下运行通过。以供参考:
<%@ page language=”c#” %>
<%@ import namespace=”system.web.mail” %>
<!doctype html public “-//w3c//dtd xhtml 1.1//en” “http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd”>
<script runat=”server”>
void onsend(object sender,eventargs e) {
mailmessage messge = new mailmessage();
messge.from = sed.text;
messge.to = receiver.text;
messge.subject = subj.text;
messge.body = body.text;
smtpmail.smtpserver = “localhost”;
smtpmail.send(messge);
lab.text =”邮件发送成功!”;
}
</script>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>发送电子邮件用户界面</title>
</head>
<body>
<h1>发送电子邮件用户界面</h1>
<form id=”form1″ runat=”server”>
<div>
<hr>
<table cellspacing=”8″>
<tr>
<td align=right valign=bottom>发送者:</td>
<td><asp:textbox id=sed runat=server/></td>
</tr>
<tr>
<td align=right valign=bottom>接收者:</td>
<td><asp:textbox id=receiver runat=server /></td>
</tr>
<tr>
<td align=right valign=bottom>主题:</td>
<td><asp:textbox id=subj runat=server /></td>
</tr>
<tr>
<td align=right valign=bottom>内容:</td>
<td><asp:textbox id=body textmode=multiline rows=5 columns=40 runat=server /></td>
</tr>
</table>
<hr />
<asp:button text=”发送” onclick=”onsend” runat=server />
</div>
</form>
<asp:label id=lab runat=server/>
</body>
</html>
本文只介绍如何在.net框架的应用程序里发送电子邮件,并没有涉及到system.web.mail命名空间的类的详细介绍,关于system.web.mail可以参考相关资料。