欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【创建基于ASP.NET的SMTP邮件系统】,下面是详细的分享!
创建基于ASP.NET的SMTP邮件系统
您可能习惯了在ASP程序中使用JMAIL组件收发邮件,Asp.net在System.Web.Mail名称空间中有一个发送email的内建类,但这仅是cdosys的一个假象。开发者能使用一个替代的它smtp邮件服务。在这篇文章里面,我将会展示如何创建一个用于asp.net的功能齐全的smtp邮件服务。
首先,我们创建一个继承命名空间System.Net.Sockets的TcpClient类的类。TcpClient类提供简单的方法用于连接,发送,接收网络的数据流。GetStream方法用于创建一个网络流(NetworkStream)。读和写网络流(NetworkStream)的方法用于发送数据给远程主机和从远程主机接收网络流。
| 以下为引用的内容: public class ClientConnection : TcpClient { private NetworkStream _NetworkStream=null; private StreamReader _StreamReader=null; private StreamWriter _StreamWriter=null; public void Initialise() { _NetworkStream=this.GetStream(); _StreamReader=new StreamReader(_NetworkStream, System.Text.Encoding.Default, false, this.ReceiveBufferSize); _StreamWriter=new StreamWriter(_NetworkStream, System.Text.Encoding.Default, this.SendBufferSize); } public void Send(string s) { _StreamWriter.WriteLine(s); _StreamWriter.Flush(); } public string Read() { return _StreamReader.ReadLine(); } } |
接下来,我们创建发送邮件出去的类,这个类有几个属性去设置关于被发送的邮件的一些信息。
| 以下为引用的内容: public string MailServer="127.0.0.1" ; public string From="" ; public string To="" ; public string Body="" ; public string Subject="" ; |
和一个发送邮件的方法。这个方法将会用服务器名和它的端口去创建一个连接。指令可以被发送到远程主机。
| 以下为引用的内容: public void Send() { tcp=new ClientConnection(); tcp.Connect(MailServer,25); tcp.Initialise(); SendCommandToServer("HELO " + System.Net.Dns.GetHostName()); SendCommandToServer("MAIL FROM: " + From + "\r\n"); SendCommandToServer("RCPT T " + To + "\r\n"); string StrHeaders=""; StrHeaders +="From: " + From + "\r\n"; StrHeaders +="T " + To + "\r\n"; StrHeaders +="Subject: " + Subject + "\r\n"; StrHeaders +="Content-type: text/plain; charset=\"ISO-8859-1\"" + "\r\n"; SendCommandToServer("DATA\r\n" + StrHeaders); SendCommandToServer(Body + "\r\n.\r\n"); SendCommandToServer("QUIT\r\n"); } |
还有一个私有的送一个指令到本地服务器的方法。
| 以下为引用的内容: private void SendCommandToServer(string cmd) { tcp.Send(cmd); Response=tcp.Read(); System.Web.HttpContext.Current.Trace.Warn("Response",Response); } |
现在,这个类基本完成了。开发者还可以建立错误回执和释放资源(用TcpClient类中的Close()方法)。同样,这几个属性可以被扩展到在邮件中包含更多的信息。
最后,我们可以在aspx文件中写一些发送邮件的代码。在这个例子中,"localhost"是邮件服务器。你可以根据情况改变这个,或者可以看我的关于如何设置你的发送邮件的本地服务器的文章。
| 以下为引用的内容: <%@ Import Namespace="MyComponents" %> <script runat="server"> protected void Page_Load(Object Src, EventArgs E) { if (IsPostBack) { Mail Mailer=new Mail(); Mailer.From=From.Text; Mailer.To=To.Text; Mailer.Subject=Subject.Text; Mailer.Body=Body.Text; Mailer.MailServer="localhost"; Mailer.Send(); } } </script> |
技术交流 永无止境
以上所分享的是关于创建基于ASP.NET的SMTP邮件系统,下面是编辑为你推荐的有价值的用户互动:
相关问题:Exchange2013架设邮件服务器必须的步骤
答:用 Win2003 架设邮件服务器 很多企业局域网内都架设了邮件服务器,用于进行公文发送和工作交流。但使用专业的企业邮件系统软件需要大量的资金投入,这对于很多企业来说是无法承受的。其实我们可以通过Windows Server 2003提供的POP3服务和SMTP服... >>详细
相关问题:想建立一个邮件系统,smtp邮件发送程序做好了,pop...
答:关注中。。。。。。 >>详细
相关问题:创建SMTP虚拟服务器如何接收POP3的邮件?
答:另建一个SMTP虚拟服务器时要给它指定不同的IP地址,要创建不同的端口来实现安全,比如说(你有两个SMTP服务器),其中一个作为内网用户发送和接受邮件,要设置中继限制.另外一个(设定不同IP,和端口的那个),作为员工外出时所用.它不用设置中继限制,只是... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
