标题: 批处理怎样发送邮件?急
[打印本页]
作者: chone88
时间: 2010-4-17 10:23
标题: 批处理怎样发送邮件?急
@echo off
set "life=test.conf"
: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
不过运行到最后一步就停止了,邮件发不出去了,问一下是什么问题?谢谢
[
Last edited by chone88 on 2010-4-17 at 12:55 ]
作者: chardos
时间: 2010-4-17 13:16
nc 是第三方工具
作者: xue0808
时间: 2010-4-17 13:58
blat
作者: chone88
时间: 2010-4-17 18:45
对啊 我用的就是nc.exe,但是运行到最后一步就不动了,不知为何?麻烦您帮我看看?
作者: chone88
时间: 2010-4-17 18:46
blat也是第三方软件?
作者: rs369007
时间: 2010-4-17 18:48
似乎不行,也不是nc 问题
反馈信息如下:
(UNKNOWN) [220.181.12.13] 25 (?) open
220 163.com Anti-spam GT for Coremail System (163com[20090903])
250 OK
334 dXNlcm5hbWU6
535 Error: authentication failed
502 Error: command not implemented
502 Error: command not implemented
553 authentication is required,smtp9,DcCowLBLnwU8jMlL0kMMAA--.512S2 1271500137
503 bad sequence of commands
503 bad sequence of commands
502 Error: command not implemented
502 Error: command not implemented
421 Too many error commands
sent 245, rcvd 438: NOTSOCK
作者: chone88
时间: 2010-4-17 18:53
对 就是这样的 不知道怎么回事?我用的用户名和密码都是base64加密过的啊
作者: chone88
时间: 2010-4-17 18:54
不知道用blat怎么发送?简单吗?
作者: pop081
时间: 2010-4-18 07:50
可以嗎?
作者: chone88
时间: 2010-4-18 10:05
请各位大虾指教
作者: rs369007
时间: 2010-4-18 10:35
以前也有前辈讨论个这个问题,貌似163的服务器现在似乎不支持这个样
作者: rs369007
时间: 2010-4-18 18:17
这个问题很有实用价值哦,确实不行的话可以自己架ftp,用批处理进行自动文件传输,在局域网环境效果差不多
作者: chone88
时间: 2010-4-18 20:01
恩 但是我用126的也不可以
作者: chone88
时间: 2010-4-18 20:39
用批处理出现错误,但是手动发送可以的,见下面:
DOS命令发邮件第1步:telnet smtp.163.com 25
//smtp端口号25
第2步:helo liuyuan
其中liuyuan可以乱写 这里是我的名字 注意与helo隔个空格
第3步:auth login
//因为163邮箱需要身份验证
第4步:bGl1eXVhbl9hbmR5
我的邮箱ID
注意这是我的邮箱ID base64加密后的 既liuyuan_andy加密的结果
可以到
http://www.tc711.com/tool/Base64.asp在线加密
第5步:MTk4NjExMjA=
我的密码,base64加密结果,大家不要去改我密码啊,反正我是学生 油箱里没有啥东西
我的银行卡 也不用这个密码 ,你要去进我邮箱我也不在乎。。
第6步:mail from:<
liuyuan_andy@163.com>
//发信人油箱 注意格式
第7步:rcpt to:<
liuyuan_andy@163.com>
收信人油箱 注意格式
第8步:data
//邮件内容
第9步:
to:liuyuan_andy@163.com 这个将作为收信人收到邮件后,上面显示的收件人 ,to:后面的内容可乱写
from:liuyuan_andy@163.com这个将作为收信人收到邮件后,上面显示的发件人,from:后的内容可乱写 如:from:hehe@163.com 那么他看到的就是
hehe@163.com发给他的,但他如果查邮件的源码,是可以知道真实发件人的
subject:helo
//顾名思义,邮件主题 下面空一行 写邮件内容
this is a test
.
//写完内容后输入一点 后敲回车;
最后:quit
作者: rs369007
时间: 2010-4-19 11:09
确实能行,不过似乎只能发文字邮件哦
作者: rs369007
时间: 2010-4-19 11:09
base64 加解密:
http://tool.chinaz.com/Tools/Base64.aspx
作者: chone88
时间: 2010-4-19 11:28
对啊,但是为什么写成批处理就不行了?真的搞不懂??
作者: rs369007
时间: 2010-4-19 12:37
会不会是批处理写命令进去时,没有等上一句返回,便写入下一个命令,而造成某些命令丢失
作者: rs369007
时间: 2010-4-19 19:31
借用前辈的贴:(这种方法能行)
@echo off
:::::::::::::: 参数设置::::::::::::::
set from=xxx@163.com
set user=xxx
set pass=xxx
set to=xxx@qq.com
set subj=测试
set mail=mail_body.txt
set server=smtp.163.com
set debug=-debug -log blat.log -timestamp
::::::::::::::::: 运行blat :::::::::::::::::
blat %mail% -to %to% -base64 -charset Gb2312 -subject %subj% -server %server% -f %from% -u %user% -pw %pass% %debug%
pause > nul & exit /b
附件
1:
blat_2[1].6.1.rar (2010-4-19 19:32, 101.43 K,下载次数: 27)
作者: chone88
时间: 2010-4-19 20:19
不行啊 我试过了,你怎么成功的?
作者: rs369007
时间: 2010-4-19 22:05
这个blat 要放在%windir%\system32 下 还有一个dll文件
作者: rs369007
时间: 2010-4-20 10:30
这个问题确实很有意义,如果借用telnet能够自动发送邮件,那省事多了
作者: exzzz
时间: 2010-4-20 11:23
我觉得如果想仅仅用 telnet 实现本地SMTP或者POP3功能的话,可能性不大,毕竟现在的邮件服务器基本都用了账号密码加密,在本地,CMD环境下,如果不借助第三方的DLL或者OCX或者EXE,应该是没有办法实现加密,无法通过认证这一关,更不用提发送接收邮件了。
我想一个比较可行的办法,应该是用 CMD 自带telnet 或者 ftp.exe,将本地的邮件内容及附件上传到某个网站,由该网站自动转发邮件到目的地。
再或者,寻找某个提供匿名SMTP服务、不需要加密验证账户的网站,通过该网站转发、接收邮件。
这样的可行性会高一点。
SORRY,刚才仔细查了一下,VBS可以实现BASE64的加解密
[
Last edited by exzzz on 2010-4-20 at 11:35 ]
作者: rs369007
时间: 2010-4-20 17:20
base64.exe 控制台工具也能行,可以把用户名、密码加密后在,发送到邮件服务器。
作者: chone88
时间: 2010-4-21 13:04
标题: 可以了发送了!!!!
我用blat.exe可以发送了,太好了 你们也试试!还可以发送附件。我用的是163的,如果要用别的邮箱发送,就把smtp.163.com改成smtp.XX.com就可以了
如又qq发送就这样:smtp.qq.com.
代码如下:
@echo off
set /p youjian=请输入您的邮箱(163的):
set /p mima=请输入您的密码:
set /p fasong=请输入收信人地址:
set /p fujian=请输入附件的路径:
set /p zhuti=请输入信的主题:
set /p nirong=请输入信的内容:
echo %nirong% >c:\youjian.txt
blat -install smtp.163.com %youjian% 3 25 >nul
echo 正在发送中...
blat c:\youjian.txt -to %fasong% -s "%zhuti%" -attach "%fujian%" -u %youjian% -pw %mima% -base64 -charset Gb2312 >nul
echo.
echo 发送成功!(按任意键退出!)&& pause >nul