smtp service(simple mail transport protocol简单邮件传输协议)是microsoft windows 2000的组件,它能执行发送和获取电子邮件的基本工作,但不支持多个邮箱。此服务使用两个主要目录处理电子邮件,它们是pickup和drop,这两个目录位于inetpub\mailroot目录下。服务不断地检查pickup目录,当找到电子邮件消息时,就尝试发送这个电子邮件。若服务无法立即投递这个消息,就将它保存于queue目录中,同时服务继续尝试投递消息。如果电子邮件消息无法投递,而且返回给发送者,消息就转移到badmail目录。
在.net中可以通过smtpmail类进行发送电子邮件消息.在进行程序调试前应确保smtp服务正常运行,并且系统装有microsoft .net framework以便编译aspx文件,如果发现不能正常编译,记住要检查相应的服务是否已启动。下面以例子来描述smtp的般用法。本人使用的编程环境是:一机作邮件服务器,运行exchange server2003,另一机运行windows 2000 server作开发端.例子中进行了三种常用的邮件内容:文本,附件,html文本.同时也进行了提取信息的方法演示,具体代码如下:
<%@ page validaterequest=false %>
<%@ import namespace="system.web.mail"%>
<%@ import namespace="system.io" %>
<%@ import namespace="system.data.sqlclient" %>
<script runat="server">
sub page_load
if not ispostback then
dim conn as sqlconnection
dim cmd as sqlcommand
dim dtrmailto as sqldatareader
conn = new sqlconnection("server=localhost;uid=sa;pwd=sa;database=mailtest")
conn.open()
cmd = new sqlcommand("select email from mailtable",conn)
dtrmailto = cmd.executereader()
mailtolist.datasource = dtrmailto
mailtolist.datatextfield ="email"
mailtolist.databind()
dtrmailto.close()
conn.close()
end if
end sub
sub button_click(s as object,e as eventargs)
smtpmail.send(mailfrom.text,mailto.text,txtsubject.text,txtbody.text)
end sub
sub button_attachment_click(s as object,e as eventargs)
dim objmailmessage as mailmessage
dim objmailattachment as mailattachment
objmailattachment = new mailattachment(filename.postedfile.filename)
objmailmessage = new mailmessage
objmailmessage.from = mailfrom.text
objmailmessage.to = mailto.text
objmailmessage.subject=txtsubject.text
objmailmessage.body=txtbody.text
objmailmessage.attachments.add(objmailattachment)
smtpmail.send(objmailmessage)
end sub
sub button_html_click(s as object,e as eventargs)
dim objmailmessage as mailmessage
dim strcontent as string
strcontent = txthtmlbody.text
objmailmessage = new mailmessage
objmailmessage.from = mailfrom.text
objmailmessage.to = mailto.text
objmailmessage.subject=txtsubject.text
objmailmessage.body=strcontent
objmailmessage.bodyformat = mailformat.html
smtpmail.send(objmailmessage)
end sub
sub button_db_click(s as object,e as eventargs)
dim objmailmessage as mailmessage
objmailmessage = new mailmessage
objmailmessage.from = mailfrom.text
objmailmessage.to = mailtolist.selecteditem.text
objmailmessage.subject=txtsubject.text
objmailmessage.body=txtbody.text
smtpmail.send(objmailmessage)
end sub
</script>
<html>
<body>
<h3><font color=green>发送邮件</font></h3>
<form runat="server">
<b>发件人:</b>
<asp:textbox id="mailfrom" columns="30" runat="server"/>
<br>
<b>收件人</b>
<asp:textbox id="mailto" columns="30" runat="server"/>
<br><b>标 题:</b>
<asp:textbox id="txtsubject" columns="30" runat="server"/>
<br><b>内 容:</b>
<asp:textbox id="txtbody" textmode="multiline" columns="30" runat="server"/>
<br>
<asp:button text="发送" onclick="button_click" runat="server"/>
<br>
<b>收件人列表:</b><asp:dropdownlist id="mailtolist" runat="server"/>
<br>
<asp:button text="从数据库得收件人的发送" onclick="button_db_click" runat="server"/>
<br><br>
<b>附 件:</b><input id="filename" type="file" runat="server"/>
<br>
<asp:button text="带附件的发送" onclick="button_attachment_click" runat="server"/>
<br><br>
<b>html内容:</b><asp:textbox id="txthtmlbody" textmode="multiline" columns="30" runat="server"/>
<br>
<asp:button text="发送html" onclick="button_html_click" runat="server"/>
</form>
</body>
</html>
运行结果: 
此处没有指定smtpmail.smtpserver属性,所以使用的smtp服务器就是本地的默认smtp服务器,如果要使用其它的smtp服务器可通过此属性进行设置.