怎么用dos批处理发送简单邮件

作者: 不详 2013/9/13 20:38:17

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 是连接邮件服务器,返回如下信息:

164311176.jpg

helo justtest 是邮件用户名,这里我也不懂,随便输入,返回如下信息:

164932748.jpg

auth login 是用普通方式登录,返回如下信息:

165037777.png

bGl1amluMjIyODMxOUAxMj*** 这里是输入真正登录邮箱的用户名的base64编码(网上百度base64编码),我这里用“*”隐藏我的用户名base64编码的一些字符串,免得被破解,下面的“*”也是这个意思,返回信息如下:

165546698.png

bGowMjAyLC4*** 这里是密码,也是要输入密码的base64编码,返回信息如下:

165823373.png

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的区别吧,一张图看懂:

171908865.jpg

上面各输入的返回如下:

171208904.png

这就是发送邮件的一般格式了。那怎么送批处理做了?

2、批处理发送邮件

你会发现,将上面的命令写入.bat的文件,再运行,它会停在telnet smtp.126.com 25这里,等这个连接自动超时断开后才继续执行下面的命令,这怎么可以了?下面的那些命令式在telnet 进入邮件服务器后必须立刻执行的命令,而不是在dos环境下执行的!!!

我是这么处理的

(1)用nc来代替telent

(2)用.bat生成一般格式中除telnet smtp.126.com 25的其他所有命令和邮件内容

详细过程如:

  1. 下写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.是写一空行

  2. 写send_email.bat,内容如下:

    1
    if exist smtp.txt nc -vv smtp.126.com 25 < smtp.txt

    这里是nc连接smto.126.com 的25端口,并在连接后执行smtp.txt里的内容。

  3. 写smtp.bat,内容如下:

    1
    echo_smtp.bat & send_email.bat

    这里就是执行上面的echo_smtp.bat和send_email.bat,不要将这两个命令写在两行。

  4. 运行smtp.bat就可以发送邮件了,必须成功!!

特别推荐

玩家留言 跟帖评论
第 1 楼 中国CZ88.NET 网友 客人 发表于: 2015/3/31 17:29:33
不能执行,批处理发邮件的时候前两条helo和auth login指令能执行,后面就不能登录了

支持( 0 ) 盖楼(回复)

查看更多评论