我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 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

使用 telnet 发邮件的更多相关文章

  1. Linux搭建smtp服务器+laravel5.2发邮件配置

    /** * 这里主要是想通过自己搭建smtp服务器,配置laravel5.2框架,实现邮箱发邮件功能, * 主要内容是搭建smtp服务器,laravel5.2发邮件顺手提一下 */ /** * 1.l ...

  2. telnet发电子邮件

    无聊今天的工作,想想一个学生被提到最后一次telnet发电子邮件,所以我想试试.最后,成功的实践,这里做个总结. 首先,cmd进telnet打开回话: 下面红色字体为命令. 1.open smtp.1 ...

  3. [svc]msmtp+mutt发附件,发邮件给多个人

    环境:centos6.7 x86-64 内网有web服务器(curl可展示目录) #预安装软件 yum install lrzsz ntpdate sysstat dos2unix wget teln ...

  4. 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)

    通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...

  5. Qt5.5 使用smtp发邮件的各种坑

    本人刚开始学习C++,用的是Qt5.5的IED,经过了两天的学习和查找资料,终于成功发了第一封邮件.以163邮箱为例,简单总结一下. 1.设置邮箱 这一步比较关键,要开通smtp服务,在开通的过程中会 ...

  6. linux(centos8):阿里云ecs配置smtps发邮件(解决不能通过25端口发邮件问题)

    一,2016年9月后购买的阿里云ecs不再支持通过25端口发送邮件 官方的建议是使用465端口 465端口(SMTPS): 465端口是为SMTPS(SMTP-over-SSL)协议服务开放的 它是S ...

  7. # PHP - 使用PHPMailer发邮件

    PHPMailer支持多种邮件发送方式,使用起来非常简单 1.下载PHPMailer https://github.com/PHPMailer/PHPMailer,下载完成加压后, 把下边的两个文件复 ...

  8. Linux发邮件之mail命令

    一.mail命令 1.配置 vim /etc/mail.rc 文件尾增加以下内容 set from=1968089885@qq.com smtp="smtp.qq.com" set ...

  9. 测试MailUtils,作用是发邮件

    package cn.itcast.test; import java.io.IOException; import javax.mail.MessagingException; import jav ...

随机推荐

  1. Confluence 6 为用户管理连接 Confluence 到 Crowd

    你可以连接你的 Confluence 应用程序到 Atlassian Crowd 或 a Jira (5.3 及后续版本)来管理你的用户和用户组以及针对他们的授权. Atlassian Crowd 是 ...

  2. 二分求LIS并打印结果

    1275: God's ladder [DP] 时间限制: 1 Sec 内存限制: 128 MB  Special Judge 题目描述 天明来到神之宫殿,在他眼前出现了若干个石柱,每个石柱上有1枚金 ...

  3. UVA-11882 Biggest Number (DFS+剪枝)

    题目大意:给出一个方格矩阵,矩阵中有数字0~9,任选一个格子为起点,将走过的数字连起来构成一个数,找出最大的那个数,每个格子只能走一次. 题目分析:DFS.剪枝方案:在当前的处境下,找出所有还能到达的 ...

  4. Leetcode 115

    Ø r a b b b i t Ø r a b b i t class Solution { public: int numDistinct(string s, string t) { ; ; int ...

  5. 4.2 event

    using System; public delegate void DownloadStartHandler(object sender, DownloadStartEventArgs e); // ...

  6. JSP EL简介

    JSP EL简介:1.语法:    ${expression} 2.[ ]与.运算符    EL 提供“.“和“[ ]“两种运算符来存取数据.     当要存取的属性名称中包含一些特殊字符,如.或?等 ...

  7. spring中@Scope作用域的注解

    @Scope简单点说就是用来指定bean的作用域 官方解释是:scope用来声明IOC容器中的对象应该处的限定场景或者说该对象的存活空间,即在IOC容器在对象进入相应的scope之前,生成并装配这些对 ...

  8. ES 分布式搜索

    ES整个查询过程是scatter/gather的过程,具体如下: 图见 https://blog.csdn.net/thomas0yang/article/details/78572596?utm_s ...

  9. elasticsearch 路由文档到分片

    路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...

  10. 2.strcpy使用注意(2)

    分析下述代码: void test2() { char string[10],str1[10]; int i; for(i=0;i<10;i++) { srtr1='a'; } strcpy(s ...