华域联盟 .Net 创建基于ASP.NET的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 TO: " + To + "\r\n");

string StrHeaders = "";

StrHeaders += "From: " + From + "\r\n";

StrHeaders += "To: " + 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>

下面是完整的代码。

复制代码 代码如下:

using System.IO;

using System.Net.Sockets;

namespace MyComponents

{

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 class Mail

{

public string MailServer = "127.0.0.1" ;

public string From = "" ;

public string To = "" ;

public string Body = "" ;

public string Subject = "" ;

private ClientConnection tcp=null;

private string Response="";

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 TO: " + To + "\r\n");

string StrHeaders = "";

StrHeaders += "From: " + From + "\r\n";

StrHeaders += "To: " + 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);

}

}


您可能感兴趣的文章:

  • Asp.net发送邮件的两种方法小结
  • 在asp.NET 中使用SMTP发送邮件的实现代码
  • asp.net2.0实现邮件发送(测试成功)
  • 在ASP.NET2.0中通过Gmail发送邮件的代码
  • Asp.Net类库中发送电子邮件的代码
  • 用ASP.NET做的个性化的邮件发送系统
  • asp.net mvc发送邮件实例讲解
  • ASP.NET MVC 5之邮件服务器与客户端
  • ASP.NET Core 1.0实现邮件发送功能
  • asp.net基于windows服务实现定时发送邮件的方法
  • ASP.NET邮件发送system.Net.Mail案例
  • asp.net实现的群发邮件功能详解

本文由 华域联盟 原创撰写:华域联盟 » 创建基于ASP.NET的SMTP邮件服务的具体方法

转载请保留出处和原文链接:https://www.cnhackhy.com/52372.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部