探知,不断发现
探知不断发现

大部分人都知道发送邮件可以用 SmtpClient 连到中转服务器上来发送邮件。
哪我们能知道邮件到底有没有发送成功呢。 也许有人会建议说搞一个 POP3 来收邮件, ok这是思路之一。
但是有一个问题是你在用这个邮件发送的时候你常常直接提示别人说邮件已经发送成功,这似乎不是很好。

我们来看一下传统寄邮件的流程, 我们信放到邮箱, 然后邮局的人会把信送到某个人哪边,
简单的抽象后邮局就是相当于中转服务器, ok。 哪我直接把哪封信投到对方家里的邮箱是不是也是ok的了?

电子邮件同样可以这样做。哪我什么知道对方家在哪里,这个实际上就记录在 MX记录里 MX Mail Exchanger 邮件交换记录 主要有两个值  MX preference(优先级越小的优先级越大) , mail exchanger 地址了(可以是A记录 Cname,ip)



通过Windows自带的的一个小程序 NsLooup 我们就可以查询到这些了

ok得到哪个地址后你就可以直接发送了.. 如果还想玩命令行你就可以 Telnet 163mx00.mxmail.netease.com 
(一些系统如Vista Telnet好象默认没开,要自己去开)
然后按照邮件发送的协议一行一行敲下去了。

ok现在我们来看一下如何使用c#来完成这些工作
里面核心部分同样还是协议 Socket通信,
我们去://www.codeproject.com/ 搜一下就可以找到好多现成的DNS查询组件可以使用了
(曾经也有人喜欢用C#调用Nslookup)
我这边用的是 DNSQuery


Code
同样通过这个,或者自己架的smtp服务器,我们可以干很多的坏事。
DirectSMTPClient.rar

(发邮件的过程类似于传统的邮件过程,你将信放到信箱(中转服务器) 邮递员将信 放到收件人的信箱 ,收信人去拿信。)
(反垃圾邮件是由接收者设制的。有很多规则,每个产商都可能不一样。 )
(用这个发送假冒邮件,后果自已承担。)
posted on 2009-08-06 09:59  lovebanyi  阅读(1262)  评论(2编辑  收藏  举报