ASP.NET中怎么创建一个SMTP邮件服务

介绍

这篇文章给大家介绍ASP.NET中怎么创建一个SMTP邮件服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

首先,我们创建一个继承命名空间System.Net.Sockets的TcpClient类的类.TcpClient类提供简单的方法用于连接,发送、接收网络的数据流.GetStream方法用于创建一个网络流(NetworkStream)。读和写网络流(NetworkStream)的方法用于发送数据给远程主机和从远程主机接收网络流。

,代码如下:


公共类ClientConnection: TcpClient
{
私人NetworkStream _NetworkStream=零;
私人StreamReader _StreamReader=零;
私人StreamWriter _StreamWriter=零;公共空白
初始化()
{
_NetworkStream=this.GetStream ();
_StreamReader=new StreamReader (_NetworkStream,
System.Text.Encoding。默认情况下,假,this.ReceiveBufferSize);
_StreamWriter=new StreamWriter (_NetworkStream,
System.Text.Encoding。违约,this.SendBufferSize);
}
公共无效发送(string s)
{
_StreamWriter.WriteLine(年代);
_StreamWriter.Flush ();
}
公共字符串读取()
{
返回_StreamReader.ReadLine ();
}
},

接下来,我们创建发送邮件出去的类,这个类有几个属性去设置关于被发送的邮件的一些信息。

代码如下:


公共字符串服务器=?27.0.0.1";公共字符串
=啊?公共字符串
=啊吧硖?
公共字符串=?“,
公共字符串主题=啊?,

和一个发送邮件的方法。这个方法将会用服务器名和它的端口去创建一个连接。指令可以被发送到远程主机。

代码如下:


公共空间发送()
{
tcp=new ClientConnection ();
tcp.Connect(服务器,25);
tcp.Initialise ();
SendCommandToServer(“直升机”;+ System.Net.Dns.GetHostName ());
SendCommandToServer(“邮件:“+在+“\ r \ n");
SendCommandToServer(“收件人:”;+ +“\ r \ n");
字符串StrHeaders=啊?
StrHeaders +=?“+在+“\ r \ n"
StrHeaders +=?“+ +“\ r \ n"
StrHeaders +=爸魈?“+主语+“\ r \ n"
StrHeaders +=澳谌堇嘈?文本/平原;charset=\“iso - 8859 - 1 \”;“+“\ r \ n"
SendCommandToServer(“数据\ r \ n"+ StrHeaders);
SendCommandToServer(身体+“\ r \ n \ r \ n");
SendCommandToServer(“退出\ r \ n");
}

还有一个私有的送一个指令到本地服务器的方法。

代码如下:


私人空SendCommandToServer(字符串cmd)
{
tcp.Send (cmd);
反应=tcp.Read ();
System.Web.HttpContext.Current.Trace.Warn (“Response"、响应);
}

现在,这个类基本完成了。开发者还可以建立错误回执和释放资源(用TcpClient类中的关闭()方法)。同样,这几个属性可以被扩展到在邮件中包含更多的信息。

最后,我们可以在aspx文件中写一些发送邮件的代码。在这个例子中,“localhost"是邮件服务器。你可以根据情况改变这个,或者可以看我的关于如何设置你的发送邮件的本地服务器的文章。

代码如下:


& lt; % @导入命名空间=癕yComponents"%在
& lt;脚本runat=皊erver"在
保护无效employee(对象Src, EventArgs E)
{
如果(IsPostBack)
{
邮件梅勒=新邮件();
Mailer.From=From.Text;
Mailer.To=To.Text;
Mailer.Subject=Subject.Text;
Mailer.Body=Body.Text;
Mailer.MailServer=發ocalhost";
Mailer.Send ();
}
}
& lt;/script>

下面是完整的代码。

代码如下:


使用先;使用System.Net.Sockets
,
名称空间MyComponents
{
公共类ClientConnection: TcpClient
{
私人NetworkStream _NetworkStream=零;
私人StreamReader _StreamReader=零;
私人StreamWriter _StreamWriter=零;
公共空间初始化()
{
_NetworkStream=this.GetStream ();
_StreamReader=new StreamReader (_NetworkStream,
System.Text.Encoding。默认情况下,假,this.ReceiveBufferSize);
_StreamWriter=new StreamWriter (_NetworkStream,
System.Text.Encoding。违约,this.SendBufferSize);
}
公共无效发送(string s)
{
_StreamWriter.WriteLine(年代);
_StreamWriter.Flush ();
}
公共字符串读取()
{
返回_StreamReader.ReadLine ();
}
}
公共类邮件
{
公共字符串服务器=?27.0.0.1";公共字符串
=啊?公共字符串
=啊吧硖?
公共字符串=?“,
公共字符串主题=啊八饺薈lientConnection tcp;
=零;
私人字符串响应=啊啊?br/>公共空送()
{
tcp=new ClientConnection ();
tcp.Connect(服务器,25);
tcp.Initialise ();
SendCommandToServer(“直升机”;+ System.Net.Dns.GetHostName ());

ASP.NET中怎么创建一个SMTP邮件服务