问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何架设SMTP服务器

发布网友 发布时间:2022-04-24 07:23

我来回答

3个回答

懂视网 时间:2022-04-27 17:08

首先,我们创建一个继承命名空间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 + " ");
SendCommandToServer("RCPT TO: " + To + " ");
string StrHeaders = "";
StrHeaders += "From: " + From + " ";
StrHeaders += "To: " + To + " ";
StrHeaders += "Subject: " + Subject + " ";
StrHeaders += "Content-type: text/plain; charset="ISO-8859-1"" + " ";
SendCommandToServer("DATA " + StrHeaders);
SendCommandToServer(Body + " . ");
SendCommandToServer("QUIT ");
}

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

代码如下:
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 + " ");
SendCommandToServer("RCPT TO: " + To + " ");
string StrHeaders = "";
StrHeaders += "From: " + From + " ";
StrHeaders += "To: " + To + " ";
StrHeaders += "Subject: " + Subject + " ";
StrHeaders += "Content-type: text/plain; charset="ISO-8859-1"" + " ";
SendCommandToServer("DATA " + StrHeaders);
SendCommandToServer(Body + " . ");
SendCommandToServer("QUIT ");
}
private void SendCommandToServer(string cmd)
{
tcp.Send(cmd);
Response=tcp.Read();
System.Web.HttpContext.Current.Trace.Warn("Response",Response);
}
}

热心网友 时间:2022-04-27 14:16

1安装POP3和SMTP服务组件
Windows Server 2003默认情况下是没有安装POP3和SMTP服务组件的,因此要手工添加。

1.安装POP3服务组件
以系统管理员身份登录Windows Server 2003 系统。依次进入“控制面板→添加或删除程序→添加/删除Windows组件”,在弹出的“Windows组件向导”对话框中选中“电子邮件服务”选项,点击“详细信息”按钮,可以看到该选项包括两部分内容:POP3服务和POP3服务Web管理。为方便用户远程Web方式管理邮件服务器,建议选中“POP3服务Web管理”。

2.安装SMTP服务组件
选中“应用程序服务器”选项,点击“详细信息”按钮,接着在“Internet信息服务(IIS)”选项中查看详细信息,选中“SMTP Service”选项,最后点击“确定”按钮。此外,如果用户需要对邮件服务器进行远程Web管理,一定要选中“万维网服务”中的“远程管理(HTML)”组件。完成以上设置后,点击“下一步”按钮,系统就开始安装配置POP3和SMTP服务了。

二、配置POP3服务器
1.创建邮件域
点击“开始→管理工具→POP3服务”,弹出POP3服务控制台窗口。选中左栏中的POP3服务后,点击右栏中的“新域”,弹出“添加域”对话框,接着在“域名”栏中输入邮件服务器的域名,也就是邮件地址“@”后面的部分,如“rtj.net”,最后点击“确定”按钮。其中“rtj.net”为在Internet上注册的域名,并且该域名在DNS服务器中设置了MX邮件交换记录,解析到Windows Server 2003邮件服务器IP地址上。

2.创建用户邮箱
选中刚才新建的“rtj.net”域,在右栏中点击“添加邮箱”,弹出添加邮箱对话框,在“邮箱名”栏中输入邮件用户名,然后设置用户密码,最后点击“确定”按钮,完成邮箱的创建。

三、配置SMTP服务器
完成POP3服务器的配置后,就可开始配置SMTP服务器了。点击“开始→程序→管理工具→Internet信息服务(IIS)管理器”,在“IIS管理器”窗口中右键点击“默认SMTP虚拟服务器”选项,在弹出的菜单中选中“属性”,进入“默认SMTP虚拟服务器”窗口,切换到“常规”标签页,在“IP地址”下拉列表框中选中邮件服务器的IP地址即可。点击“确定”按钮,这样一个简单的邮件服务器就架设完成了。

完成以上设置后,用户就可以使用邮件客户端软件连接邮件服务器进行邮件收发工作了。在设置邮件客户端软件的SMTP和POP3服务器地址时,输入邮件服务器的域名“rtj.net”即可。

热心网友 时间:2022-04-27 15:34

架设SMTP服务器方法详见:http://jingyan.baidu.com/article/ce09321b00b2532bfe858f4d.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桥本氏甲亢化验单说明什么 桥本氏甲亢??检验报告严重么 华为Y325-T00手机不小心设置英文版怎么办? 腾讯手游助手怎么双开 腾讯手游助手能双开吗 腾讯手游助手怎么双开-腾讯手游助手双开教程 审计定义的理解是什么 全国各地还有谁叫刘超啊 ? 滑冰滑冰场 彭水火车站到重庆北火车站有的少公里一 彭水到重庆坐火车要几个小时 smtp发送邮件,参数应该怎么配置 如何配置个人SMTP邮件服务器.txt 如何配置 SMTP 虚拟服务器以进行邮件传递 短字怎么组四字词? 短短的组词有哪些 “短”字如何组词? 短字组词语有哪些 短的组词 短的组词有哪些词语 短的词有什么 短字怎么组词? 短组词有哪些词语 求改病句!(带答案)急!谢谢! 微信的隐藏功能,原来有那么多人不知道的 病句类型中并列不当的原因有哪些? 微信12大隐藏功能 你会那些? 修改病句练习题及答案 越多分越多 微信的几个隐藏功能,你可能没有发现 修改病句,答案说这个句子犯了概念并列不当的毛病,亲能帮我解释么 微信还有些什么隐藏功能没被众人发现? 如何配置smtp 用winmail服务器 如何在linux 下配置 SMTP 服务 金典纯牛奶保质期一般是多久? 怎么查自己在哪个区- 问一问 金典纯牛奶保质期一般多久 纯牛奶是金典好还是特伦苏好? 小程序分享封面图小于5;4尺寸怎么截取? 腾讯文档小程序封面设置 微店小程序显示的第一张图在哪里修改? 如何查自己档案在哪 怎么查自己的档案在哪里? 加推的名片小程序的海报怎么配置好玩的图片? 我是第一次参加PMP认证考试,听别人讲一定要参加培训班,请问参加培训班... 朋友圈封面图在哪里可以找到免费的? 考PMP项目管理的证书,一定要在PMP培训机构参与培训吗? 怎么查自己的档案在哪 PMP项目管理认证考试需要报培训班考试吗?费用多少 如何进入头奖要运气的公众号 快团团分享链接怎么改封面 阿玛尼ar1737多少饯