我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 Windows 自带的 Telnet 程序手工地发送一封简单的邮件,以此来稍微明白关于邮件发送的一些知识。

现在 E-mail 的传输一般都使用了 ESMTP (扩展的简单邮件传输协议),SMTP 中定义了 18 条命令,用于发送一封邮件。但是作为一个测试实验的话,我们只需要其中最基本的6条命令。

如下(其中的<Space>代表一个空格,<CRLF>代表回车加换行,即写代码时的 \r\n ):

ehlo<Space>主机名<CRLF>

SMTP 邮件发送程序与SMTP邮件接收程序建立连接的第一条必须的命令,主机名是当前邮件发送者的主机名;

auth<Space>login<CRLF>

现在一般的邮箱都需要进行用户名、密码验证,而且SMTP 邮件服务器一般都使用 Login 验证方式,因此就不用考虑其他两种验证方式了;

mail<Space>from:发送人邮箱地址<CRLF>

从命令中很明显地看出来 mail 命令用于指定邮件发送者的邮箱地址;

rcpt<Space>to:收件人邮箱地址<CRLF>

同理,rcpt 命令用于指定邮件接收人的邮箱地址;

data<CRLF>

data 命令用于表示该命令之后的所有内容、数据都将被作为邮件的相关内容,直到遇到<CRLF>.<CRLF>标识符,即一个句号“.”结束邮件的发送内容;

quit<CRLF>

该命令结束邮件发送过程,关闭本机与SMTP 邮件服务器的网络连接。

出处:http://haolloyin.blog.51cto.com/1177454/351256

======================================================

实例一

telnet常规发邮件

1.连接→telnet smtp.163.com 25
回显"220"

2.报名字(随便写)→helo 163.com
回显"250 ok"

3.登陆模式(这时选一般登陆模式)→AUTH LOGIN
回显"334 dXNlcm5hbWU6"(注:这时的用户和密码都为Base64编码后的字符

4.用户名****
回显"334 UGFzc3dvcmQ6"

5.密码****
回显"235 Authentication successful" 表示验证通过

6.发件人→mail from: <>
回显"250 Mail OK"

7.收件人→rcpt to: <>
回显"250 Mail OK"

8.开始写正文→data
输入正文内容就ok,正文要符合MIME规范

例子:
From: ←电子邮件的发信人
To: ←电子邮件的收信人
Cc: ←接收通过抄送方式发送的邮件的收件人
Subject: test ←电子邮件的主题
MIME-Version: 1.0 ←MIME 协议的版本
Content-Type: text/plain ←邮件格式texthello vkill ←内容当行输入. 回车,回显"250 OK"发送成功

9.断开连接→quit

一般这种发送邮件的方式都可以在网上大把大把的搜到的,再有不明白的自己其网上看别人的详细介绍。

出处:http://hi.baidu.com/coc_zero/item/78c5bed75b1e639d270ae751

1.在cmd里输入
telnet mail.xxx.com 25
一般来说,如果mail.xxx.com存在,并且port:25有打开,就能连接成功。

2.跟服务器打招呼
helo mail.xxx.com
服务器应该返回
250
如果服务器smtp需要验证,进行第3步,否则到第4步

3.输入
auth login
会一次提示你
334 VXNlcm5hbWU6

334 UGFzc3dvcmQ6
输入用户名的base64编码的字符串,再enter
再输入密码的base64编码的字符串,再enter
注意这里的可以 网上找在线base64加密码的网页对你的用户名和密码加密
smtp认证通过后会显示
235 2.0.0 Authentication successful

4.写信
输入发信人
mail from: <name@xxx.com>

输入收信人
rcpt to: <name2@xxx.com>
分别是发件人,收件人
如果正常都应该返回250

5.输入信件内容
DATA
从这里开始写信的内容
subject:test send mail
test email,receive
.//说明:这个英文的点号不能漏掉,表示信内容的结束

会返回
250 2.0.0 Ok: queued as 93223136C8E
退出邮件
QUIT
出处:http://www.2cto.com/net/201101/82340.html

======================================================

实例二

企业内部网络发邮件

在公司或企业内部,往往都有自己的邮件服务器或使用Exchanger服务器,外部免费邮件服务器网站或端口经过了拦截或屏蔽。
这样我们就没法使用外部服务器,所以我们需要先找到内部服务器再发邮件,当然,你也可以根据Outlook配置查找。

C:\>nslookup
Default Server: ns.hncsptt.net.cn
Address: 202.103.96.68 //开始运行nslookup,并且默认的DNS服务器为该IP地址。
>set type=mx //设置显示类型为MX纪录。
>domainname.com //查询domainame.com 的MX纪录。
domainname.com MX preference = 10, mail exchanger = mail.domainname.com
mail.domainname.com internet address = xxx.xxx.xxx.xxx
>exit

很快通过上面的命令就查出了domainname.com这个域的STMP服务器地址为xxx.xxx.xxx.xxx
好了,让我们继续,   C:\>telnet xxx.xxx.xxx.xxx 25
会出现:
220 mail.domainname.com
在这里也可能是别的,因为可能默认域不是domianname.com的域,而且其他的,但不管这些,你只要看到220这个数字就行了。
现在再接着输入命令:
HELO domain.com
返回:
250 mail.domainname.com Hello [x.x.x.x]
这里表示和邮件服务器握手成功,其中x.x.x.x就是你的IP地址。
好了,我们冒充的最关键地方开始了:
MAIL FROM: [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email]
250 OK
这里告诉服务器,我们将用 [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email] 这个电子邮件来发送这封电子邮件,很可惜任何的SMTP服务器都不会验证这个电子邮件的真实性,所以这里就被服务器给认可了,于是服务器返回250 OK,表示接受,继续等待下面的命令。
RCPT TO: [email=[ft=#fff9ba,,]username@domainname.com]username@domainname.com[/email]
250 OK
告诉服务器邮件发送给 [email=[ft=#fff9ba,,]username@domainname.com]username@domainname.com[/email] ,但是服务器在这里仅仅只检查domainname.com这个域是不是在自己的转发列表里,由于我们是直接查的dommainname.com这个域的SMTP服务器,所以当然也绝对会在列表了,所以服务器的返回OK,而不会做更多的验证。
DATA
354 Start mail input; end with <CRLF>.<CRLF>
这里输入DATA,告诉服务器要开始输入邮件内容了,邮件服务器会返回354信息,以及上面说的邮件以“.”结束。
开始输入邮件内容了,但一般邮件都会有邮件头,为了更真实的伪造邮件,我们可以按下面的输入:
From: [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email] //让Outlook,foxmail等这样的客户端工具显示发送者为 [email=[ft=#fff9ba,,]webmaster@domain.com]webmaster@domain.com[/email]
To:username@domainname.com //同样让客户端工具显示接收者为 [email=[ft=#fff9ba,,]username@domainname.com]username@domainname.com[/email]
Subject: send anonymous mail //邮件主题
Test //邮件内容,这里想怎么写就怎么写了。
. //最后输入一个“.”结束邮件。
250 send OK

服务器返回250,说邮件发送成功,
备注:为企业邮箱局域名加上TXT解析记录,可以防止一此非正常手段发送的邮件,也避免别人盗用自己的邮件服务器来发送垃圾邮件!
TXT记录,如: ABC.COM     V=SPF.include.XXXX.  ~ALL
 出处:http://www.862686.com/thread-36357-1-1.html

最新文章

  1. ASP.NET MVC 过滤器(一)
  2. Dubbo消费端错误: ClassNotFoundException: org.apache.zookeeper.proto.WatcherEvent
  3. C#使用Timer.Interval指定时间间隔与指定时间执行事件
  4. Client默认用户及登录密码(转)
  5. simplify the design of the hardware forming the interface between the processor and thememory system
  6. Memcache的安装
  7. Android---WebView显示Html乱码问题
  8. Mysql的主从数据库没有同步的解决办法
  9. JavaScript高级编程(一)
  10. iOS开发的小技巧(断点打印)
  11. JS代码判断IE6,IE7,IE8,IE9的函数代码
  12. codevs 4650 破损的键盘(链表)
  13. 关于CoreData的理解和使用.
  14. 【Linux操作系统分析】设备驱动处理流程
  15. 1.11 str 字符串
  16. Selenium Chrome
  17. 【dfs】P1331 海战
  18. tomcat修改端口号
  19. E. Thematic Contests 二分,离散化
  20. mysql 主从配置,主-》windows,从-》centos6.5

热门文章

  1. Confluence 6 的高级 Crowd 设置
  2. linux 不解压日志压缩包直接搜索里面的内容
  3. H.Playing games
  4. juqery的一些简单用法
  5. Android studio jni
  6. Inno Setup 编译器操作
  7. notepad++插件安装
  8. sql语句:查询、排序、不区分大小写查询,及联合使用
  9. select into from和insert into from
  10. try catch finally return运行顺序