像网易邮箱、雅虎邮箱、新浪邮箱等等等等,它们 是如何 实现的?我拿 QQ 邮箱 给 网易邮箱 发 邮件 网易邮箱 是 如何实现 接受的?如果 我要做一个 邮件服务器 可以接受别的邮箱以 [email protected] 类 地址发的邮件。
实现这个功能,需要 做些 什么?我想学习 这 方面 的 技术 ,却 对 好多 东西 不知道。如果要做一个 邮件服务系统 要使用些 什么 知识?
我会点C#分 少点 , 不过是我能给的 最高分 了。
实现这个功能,需要 做些 什么?我想学习 这 方面 的 技术 ,却 对 好多 东西 不知道。如果要做一个 邮件服务系统 要使用些 什么 知识?
我会点C#分 少点 , 不过是我能给的 最高分 了。
http://www.codesoso.com/code/SMTP_POP3_Mail_Server.aspx
http://download.chinaprj.cn/detail/iiDqBTBi
http://www.codeproject.com/info/search.aspx?artkw=mail+server
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;namespace 发送邮件
{
class Program
{
public static bool SendMail(string messTo, string messBody)
{
MailMessage mess = new MailMessage();
mess.From = new MailAddress("[email protected]", "报警系统");//发件人
mess.Subject = "报警系统";//主题
mess.IsBodyHtml = true;//允许HTML
mess.BodyEncoding = System.Text.Encoding.UTF8;//编码
mess.Body = messBody;
SmtpClient client = new SmtpClient();//new 出 客服端的 smtp
client.Host = "smtp.163.com";
client.Credentials = new System.Net.NetworkCredential("邮箱名", "密码");//需要发件人的账号 密码
mess.To.Add(new MailAddress(messTo));//收件人 数组(可以群发)
try
{
client.Send(mess);
return true;
}
catch (Exception ex)
{
return false;
}
}
static void Main(string[] args)
{
//SendMail("[email protected]", "你好啊,这是我第一次发送C#邮件");
SendMail("[email protected]", "你好啊,这是我第一次发送C#邮件");
}
}
}
smtp,
pop3,
imap,
mime在实现上有
mta, transfer agent(exim, sendmail, postfix, ...)
mda, delivery agent(procmail,^_^...)
mua user agent (foxmail, mutt, pine, emacs, ...)
的划分
客户端有邮件发送给邮件服务器(XYZ.com)假设收件人[email protected]
发件人[email protected]邮件服务器接收邮件后,先检查本地路由,发现abc.com不是本地邮件(本地邮件应该是xyz.com)于是邮件服务器希望和abc.com的服务器进行通信地球上网络通信需要IP地址这么个东西,对于目前邮件服务器来说,已知的是要去的地方为abc.com于是邮件服务器联系DNS服务器,邮件服务器在DNS中要查找的是一条MX记录,平时我们查找的是www.abc.com
这个东西在DNS中叫A记录,而发送邮件时需要的MX,MX的大体格式为 abc.com<->xxx.abc.com 其实这个很奇怪
MX不是直接对应的IP地址,而是先对应一个FQDN(XXX.abc.com),所以大家在建立MX记录的时候要先建立一个
A记录,MX在DNS中解析时先解析到一个FQDN的主机,然后再由这个FQDN主机的A记录找到IP地址,其实这个主机
未必要是mail.abc.com 无所谓的好了,现在邮件服务器知道abc.com的IP地址了,于是邮件服务器发送邮件到这个IP的25号端口,对方邮件服务器
检查本地路由,然后投递到[email protected]这个人这里讲下本地路由,此路由指的是邮件路由,非IP路由。其实就是大家常说的收件人策略,也就是这个域名是不是
和我的邮件服务器有关系。邮件服务器在接受到邮件,要判断这个邮件是不是给我的,上面的那个信件接受域为
abc.com,那么接受邮件服务器要看abc.com和自己有关系没有,如果在收件人策略中有abc.com的信息,接受,
如果没有,开始检查中继权限,然后决定是否中继。
http://www.codesoso.com/code/SMTP_POP3_Mail_Server.aspx
http://download.chinaprj.cn/detail/iiDqBTBi
http://www.codeproject.com/info/search.aspx?artkw=mail+server
然后要做的话,可以把一些开源的小型的系统拿过来研究,入手不要太难。SMTP and POP3 Mail Server
这是一个用c#编写的SMTP和POP3服务器端程序,有源代码,你首先要用自己的邮箱注册成codeproject的用户,然后可以下载源码来研究,祝你学习顺利!