1、一般格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | telnet smtp.126.com 25 helo justtest auth login bGl1amluMjIyODMxOUAxMj*** bGowMjAyLC4*** mail from:<liuj****319@126.com> rcpt to:<710****39@qq.com> data to:ds from:me subject:test this is a test . quit |
telnet smtp.126.com 25 是连接邮件服务器,返回如下信息:
helo justtest 是邮件用户名,这里我也不懂,随便输入,返回如下信息:
auth login 是用普通方式登录,返回如下信息:
bGl1amluMjIyODMxOUAxMj*** 这里是输入真正登录邮箱的用户名的base64编码(网上百度base64编码),我这里用“*”隐藏我的用户名base64编码的一些字符串,免得被破解,下面的“*”也是这个意思,返回信息如下:
bGowMjAyLC4*** 这里是密码,也是要输入密码的base64编码,返回信息如下:
mail from:<liuj****319@126.com>
rcpt to:<710****39@qq.com>
这上面两个应该懂吧?邮件来自哪,发往哪?
data 以下开始时数据内容
to:ds 发往哪,随便填
from:me 从哪来,随便填
subject:test 邮件主题
注意这里有空一行,注意啦,注意啦。也不要在这空行中打空格。
this is a test 这回邮件正文。
. 单独的、行首的、独占一行的、英文符的点,表示data的结束,开始发送邮件。
quit 退出。
看看
mail from:<liuj****319@126.com>跟from:me
rcpt to:<710****39@qq.com>跟to:ds的区别吧,一张图看懂:
上面各输入的返回如下:
这就是发送邮件的一般格式了。那怎么送批处理做了?
2、批处理发送邮件
你会发现,将上面的命令写入.bat的文件,再运行,它会停在telnet smtp.126.com 25这里,等这个连接自动超时断开后才继续执行下面的命令,这怎么可以了?下面的那些命令式在telnet 进入邮件服务器后必须立刻执行的命令,而不是在dos环境下执行的!!!
我是这么处理的
(1)用nc来代替telent
(2)用.bat生成一般格式中除telnet smtp.126.com 25的其他所有命令和邮件内容
详细过程如:
下写echo_smtp.bat,内容如下:
1234567891011121314151617@echo off
echo helo justtest>> smtp.txt
echo auth login>> smtp.txt
echo bGl1amluMjIyODMxOUAxMj***>> smtp.txt
echo bGowMjAyLC4****>> smtp.txt
echo mail from:^<liujin2****19@126.com^>>> smtp.txt
echo rcpt to:^<71****39@qq.com^>>> smtp.txt
echo data>> smtp.txt
echo to:*****039@qq.com>> smtp.txt
echo from:l****28319@126.com>> smtp.txt
echo subject:test>> smtp.txt
echo.>> smtp.txt
echo
this
is a test>> smtp.txt
type WGET.LOG>> smtp.txt
echo.>>smtp.txt
echo .>> smtp.txt
echo quit>> smtp.txt
这里就是生成一般格式中除telnet smtp.126.com 25的其他所有命令和邮件内容,
type是我要写的正文,把某某日志文件写到正文里
^是转义字符
echo.是写一空行
写send_email.bat,内容如下:
1if
exist smtp.txt nc -vv smtp.
126
.com
25
< smtp.txt
这里是nc连接smto.126.com 的25端口,并在连接后执行smtp.txt里的内容。
写smtp.bat,内容如下:
1echo_smtp.bat & send_email.bat
这里就是执行上面的echo_smtp.bat和send_email.bat,不要将这两个命令写在两行。
运行smtp.bat就可以发送邮件了,必须成功!!