当前位置:DOS资源站资料中心批处理教程 → 批处理发邮件

批处理发邮件

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2008-5-12 15:19:46

@echo off
title 批处理发送邮件(只用于163邮箱)
set "life=test.conf"
cls
echo 正在检查网络
ping -n 2 smtp.163.com>nul ||(echo 请先检查网络&pause>nul&goto :eof)

:start
cls
::::::::::::::::::::::::::::::::::::::::
:name_b
title 批处理发送邮件→1/5
cls
set name=
set /p name=请输入邮箱用户名:
if *%name%==* goto name_b
echo %name%|findstr "^[0-9a-zA-Z_-=]*$" >nul ||(echo 语法错误,任意键返

回&pause>nul&goto name_b)
echo 必须保证和上面base64编码前的是同一用户名
:name__b
set name_=
set /p name_=请输入邮箱用户名(非base64编码的):
if *%name_%==* goto name__b

:pass_b
title 批处理发送邮件→2/5
cls
set pass=
set /p pass=请输入邮箱密码:
if *%pass%==* goto pass_b
echo %pass%|findstr "^[0-9a-zA-Z_-=]*$" >nul ||(echo 语法错误,任意键返

回&pause>nul&goto pass_b)

:sjr_b
title 批处理发送邮件→3/5
cls
echo 格式为xxx@xxx.xxx 例如:test@test.com
set sjr=
set /p sjr=请输入收件人:
if *%sjr%==* goto sjr_b
echo %sjr%|findstr "^[0-9a-z]*\@[0-9a-z]*\.[a-z]*$" >nul ||(echo 语法

错误,任意键返回&pause>nul&goto sjr_b)

:zt_b
title 批处理发送邮件→4/5
cls
set zt=
set /p zt=请输入邮件的主题:
if *%zt%==* goto zt_b

:zw_b
title 批处理发送邮件→5/5
cls
set zw=
set /p zw=请输入邮件的正文:
if *%zw%==* goto zw_b


::写nc调用的脚本
>%life% echo helo cn-dos
>>%life% echo AUTH LOGIN
>>%life% echo %name%
>>%life% echo %pass%
>>%life% echo mail from: ^<%name_%@163.com^>
>>%life% echo rcpt to: ^<%sjr%^>
>>%life% echo data
>>%life% echo From: %name_%@163.com
>>%life% echo To: %sjr%
>>%life% echo Subject: %zt%
>>%life% echo MIME-Version: 1.0
>>%life% echo Content-Type: text/plain
>>%life% echo.
>>%life% echo %zw%
>>%life% echo .
>>%life% echo quit

pause
cls
echo 正在获取smtp.163.com的ip
for /f "tokens=4 delims= " %%? in ('ping -n 1 smtp.163.com ^|find /i

"Ping statistics for"') do (set "ip_=%%?")
set "ip=%ip_::=%"
if *%ip%==* (echo 没有获取到ip,可能网络有问题&pause>nul&goto :eof)
echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||(echo 没有获

取到ip,可能网络有问题&pause>nul&goto :eof)
echo ip获取完成

echo 正在发送邮件
::nc连接smtp.163.com 25执行%life%中的命令发邮件
nc -nvv %ip% 25 < %life%
echo 发送完成,任意键开始继续发送
del /f/q %life%>nul
pause>nul&goto sjr_b

goto :eof

所需文件:


原理:
→→→→→→→telnet收邮件

注意:所有响应+OK (ok) or -ERR (no) 

1.连接→telnet pop.163.com 110

2.用户名→user ****

3.密码→pass ****

4.验证ok后,终端会显示如下信息:
+OK 60 message(s) [72208371 byte(s)]
数字60表示有60封邮件,72208371表示这60封邮件总的字节数(即72208371B)

这时可使用的命令如下:

1.stat命令 格式:stat 无需参数

stat命令,查看统计,执行后,POP3服务器会响应一个正确应答,它以“+OK”开头,接着是两个数字,第一个是邮件数目,第二个是邮件的大小

2.list命令 格式:list [n] 参数n可选,n为邮件编号

list命令,查看邮件列表,可以利用不带参数的list命令,获得各邮件的编号,并且每一封邮件均占用一行显示,前面的数为邮件的编号,后面的数为邮件的大小

3.uidl命令 格式:uidl [n] 参数n可选,n为邮件编号

uidl命令,与list同,不过显示邮件的信息比list更详细,更具体

4.retr命令 格式:retr n 参数n不可省,n为邮件编号

retr命令,查看邮件的内容

5.dele命令 格式:dele n 参数n不可省,n为邮件编号

dele命令,删除指定的邮件(注意:dele n命令只是给邮件做上删除标记,只有在执行quit命令之后,邮件才会真正删除)

6.top 命令 格式:top n m 参数n,m不可省,n为邮件编号,m为行数

top命令,读取指定邮件正文的行数,如果m=0,则只读出邮件的邮件头部分

7.noop命令 格式:noop 无需参数

noop命令,该命令发出后,POP3服务器不作任何事,仅返回一个正确响应"+OK"

8.quit命令 格式:quit 无需参数

quit命令,该命令发出后,telnet断开与POP3服务器的连接,系统进入更新状态

--------------------------------------------------------------------------------


→→→→→→→telnet发邮件

1.连接→telnet smtp.163.com 25
回显"220"

2.报名字(随便写)→helo vkill
回显"250 ok"

3.登陆模式(这时选一般登陆模式)→AUTH LOGIN
回显"334 dXNlcm5hbWU6"

(注:这时的用户和密码都为Base64编码后的字符,手头没有Base64编码加密器的话,偶提供个在线的:http://www.yx127.com/base64.html)

4.用户名→****
回显"334 UGFzc3dvcmQ6"

5.密码→****
回显"235 Authentication successful" 表示验证通过

6.发件人→mail from: <he200377@163.com>
回显"250 Mail OK"

7.收件人→rcpt to: <he200377@56.com>
回显"250 Mail OK"

8.开始写正文→data
输入正文内容就ok,正文要符合MIME规范
例子:
From: he200377@163.com ←电子邮件的发信人
To: he200377@56.com ←电子邮件的收信人
Cc: he200377@56.com ←接收通过抄送方式发送的邮件的收件人
Subject: test ←电子邮件的主题
MIME-Version: 1.0 ←MIME 协议的版本
Content-Type: text/plain ←邮件格式text

hello vkill ←内容

当行输入. 回车,回显"250 OK"发送成功

9.断开连接→quit

  • ·上一篇文章:批处理中引号的用法
  • ·下一篇文章:批处理建立无名文件
  • ·百度中搜索更多的关于“批处理发邮件”相关内容
  • ·谷歌中搜索更多的关于“批处理发邮件”相关内容
  • ******申明******
  • 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
  • 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
  • 如果能将出错部分反馈给我,那就更好了。