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,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @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,内容如下:
1 | if exist smtp.txt nc -vv smtp. 126 .com 25 < smtp.txt |
这里是nc连接smto.126.com 的25端口,并在连接后执行smtp.txt里的内容。
写smtp.bat,内容如下:
1 | echo_smtp.bat & send_email.bat |
这里就是执行上面的echo_smtp.bat和send_email.bat,不要将这两个命令写在两行。
运行smtp.bat就可以发送邮件了,必须成功!!
支持( 0 ) 盖楼(回复)