我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 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. 『科学计算_理论』优化算法:梯度下降法&牛顿法

    梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步 ...

  2. javaScript数组的三种属性—数组索引、数组内置属性、数组自定义属性

    JS数组也是一种对象. 我们用JavaScript处理的所有东西,都可以视为是一种对象. JavaScript中有两种数据类型,基本类型数对象类型,但是基本类型基本都是包括在对象类型之中的. 数组.函 ...

  3. nyoj1248(阅读理解???)

    海岛争霸 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己 ...

  4. 配置postgres9.3间的fdw——实现不同postgres数据库间的互访问

    下面是安装.配置.使用fdw实现postgres数据库间互访问的方法,转载注明出处: 1.源码安装fdw支持(要求数据库源码安装) cd /usr/local/postgresql-9.3.2/con ...

  5. java并发编程:线程安全管理类--原子操作类--AtomicLongArray

    1.类 AtomicLongArray public class AtomicLongArray extends Object implements Serializable 可以用原子方式更新其元素 ...

  6. Grep console 设置

    Grep console     DEBUG 9961B8 INFO 4B5E76 WARN 8A8A00 ERROR 9F6B00 8A7674      

  7. jsp jsp标签

    JSP标签页称为Jsp Action(JSP动作元素),用于在Jsp页面中提供业务逻辑功能,避免在Jsp页面中直接编写java代码,造成jsp页面难以维护. jsp常用标签 jsp:include标签 ...

  8. POJ 2195 Going Home 最小费用流 难度:1

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17955   Accepted: 9145 Descr ...

  9. struts2.1.6 action 01

    目录(?)[-] 安装与设置 HelloWorld 常见问题 Action   struts 官网下载 http://www.apache.org/ http://struts.apache.org/ ...

  10. IO文件相关操作

    IO编程 IO 即Input/Output  input stream 就是数据从外面(磁盘.网络)流进内存,output stream 就是数据从内存流到外面去. 通常cpu 和 内存的速度远远高于 ...