Board logo

标题: p-mailsend_4.0.cmd(命令行发送邮件,群发\多附件\匿名) [打印本页]

作者: vkill     时间: 2007-4-21 04:17    标题: p-mailsend_4.0.cmd(命令行发送邮件,群发\多附件\匿名)

4.0的代码 &附件 在2楼

随机更换发信地址的代码 在94楼

简单的代码解释 在19楼


--------------------------群发方法----------------------------------------------
p-mailsend /u *@* /p * /t a.txt /s test /c * /a *

a.txt格式如下:
a@163.com
b@qq.com
c@56.com
d@yahoo.com.cn
....

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

[ Last edited by vkill on 2007-11-18 at 05:53 PM ]
作者: vkill     时间: 2007-4-21 04:17
p-mailsend_v4.0代码

修正:
去掉了iget.vbs,现在不会提示有病毒了
增强了参数验证,现在参数错误时不会出现假死现象
要输入密码时不明文显示了
::p-mailsend.cmd
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: p-mailsend_v4.0                                                       ::
::                                                                       ::
::           Code by  : vkill                                            ::
::           Thanks   : bjsh,est,lxmxm...                                ::
::           出    处 : http://www.vkill.net http://bbs.cn-dos.net       ::
::           功    能 : 命令行邮件发送程序(群发\多附件\匿名)             ::
::           原    理 : telnet收发邮件的原理                             ::
::           最后更新 : 2007-11-12                                       ::
::           程序依赖文件:nc.exe;rar.exe;base64.exe                      ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@echo off&endlocal&setlocal ENABLEDELAYEDEXPANSION
set "t_=test.conf"
::这里是匿名发信的详细设置
set "匿名="QQ邮箱管理员匿名测试" ^<10000@qq.com^>"

call :del_
set "oneself=%~f0"
if "%1"=="" (
echo 请在命令行下执行 %oneself% /? 查看详细命令行帮助
ping -n 5 127.1 >nul 2>nul  
goto :eof
         )
if "%1"=="/?" goto help
if "%1"=="-?" goto help
for %%? in (/h,-h,--h) do (if "%~1"=="%%?" goto help)
echo.
echo p-mailsend_v4.0  by:vkill
echo _________________________________________________

set/p=依赖文件完整性检查...<nul
set "tools_name=nc.exe;rar.exe;base64.exe"
for %%? in (%tools_name%) do (
if *%%~$PATH:?==* if not exist %%? (
echo no,缺失文件%%? &goto :sleep_
                                  )
                           )
set/p=ok<nul&echo.

set/p=分析参数是否正确...<nul
set n=0
if not "%1"=="" (
:loop_ap
set/a n+=1
if "%1"=="/hu" (set "hu=on" &shift)
if "%1"=="/ht" (set "ht=on" &shift)
if "%1"=="/ch" (set "ch=on" &shift)
if "%1"=="/u" ((for /f "tokens=1-2 delims=@" %%a in ('echo %~2') do (set "user=%%a"& set "server=%%b")) &shift&shift)
if "%1"=="/p" (set "pass=%~2" &shift&shift)
if "%1"=="/t" (set "to=%~2" &shift&shift)
if "%1"=="/s" (set "subject=%~2" &shift&shift)
if "%1"=="/c" (set "content=%~2" &shift&shift)
if "%1"=="/a" (set "accessories=%~2" &shift&shift)
if not "%1"=="" (echo %~1|findstr "^/" >nul 2>nul ||(echo no,参数"%~1"错误&goto :sleep_))
if !n!==10 (echo no,参数"%~1"错误&goto :sleep_)
if not "%1"=="" (goto loop_ap)
             )
set/p=ok<nul&echo.

set/p=分析必须参数是否缺失...<nul
for %%? in (user server to subject) do (if not defined %%? (echo no&goto :sleep_))
set/p=ok<nul&echo.
if not defined pass (
:inputpass
for /f "tokens=1 delims=:" %%? in ('findstr /N "=Hiddenpass.cmd_s=" "%oneself%"') do (more +%%? %oneself%>"%temp%\a")
for /f "tokens=1 delims=:" %%? in ('findstr /N "=Hiddenpass.cmd_e=" "%oneself%"') do (set/a "a=%%?-1" & more +!a! %oneself%>"%temp%\b")
findstr /V /B /E /G:"%temp%\b" "%temp%\a">"%temp%\pass.cmd"
start /wait cmd /k ""%temp%\pass.cmd" "!user!@!server!""
set/p password=<%temp%\pass
set "pass=!password:~9!"
if not defined pass goto inputpass
del /f/q "%temp%\pass" >nul 2>nul
del /f/q "%temp%\pass.cmd" >nul 2>nul
del /f/q "%temp%\a" >nul 2>nul
del /f/q "%temp%\b" >nul 2>nul
                 )

set/p=验证支持这个地址的邮箱发信否...<nul
for /f "tokens=3-6 delims=," %%a in ('findstr "^::,%server%," "%oneself%"') do (
set "smtp=%%a"&set "port=%%b"&set "认证方式=%%c"&set "max_z=%%d"
                                                                             )
if not defined smtp (echo no&goto :sleep_)
set/p=ok<nul&echo.

set/p=验证网络通否...<nul
for /f "tokens=2 delims=[]" %%? in ('ping -n 1 %smtp% ^|findstr /i "^ping.*[.*]"') do (set "ip=%%?")
if not defined ip (echo no&goto :sleep_)
set/p=ok<nul&echo.

set/p=验证telnet %smtp% %port%通否...<nul
>"%temp%\l%t_%" echo quit
nc -d -nvv %ip% %port% < "%temp%\l%t_%" >"%temp%\p-mailsend.log"
findstr . "%temp%\p-mailsend.log">nul 2>nul||(echo no&goto :sleep_)
set/p=ok<nul&echo.

set/p=验证登陆成功否...<nul
if "%认证方式%"=="1" call :认证方式1
copy "%temp%\%t_%" "%temp%\l%t_%">nul 2>nul
>>"%temp%\l%t_%" echo quit
nc -d -nvv %ip% %port% < "%temp%\l%t_%" >"%temp%\p-mailsend.log"
set n=0
for /f "tokens=1,2* delims=:" %%a in ('findstr /N . "%temp%\p-mailsend.log"') do (set "n=%%a"&set "x%%a=%%b")
set/a n-=1
echo "!x%n%!"|findstr "235 " >nul 2>nul ||(echo no,错误"!x%n%!"&goto :sleep_)
set/p=ok<nul&echo.

::继续写nc配置文件
>>"%temp%\%t_%" echo mail from: ^<%user%@%server%^>
if exist "%to%" (
for /f "tokens=*" %%? in ('findstr "^[0-9a-zA-Z-_.]@" "!to!"') do (set "lto=%%?,!lto!")
             )
if defined lto (set "to=!lto!")
for %%? in (!to!) do (>>"%temp%\%t_%" echo rcpt to: ^<%%?^>)
>>"%temp%\%t_%" echo data
if not defined hu (>>"%temp%\%t_%" echo From: %user%@%server%) else (>>"%temp%\%t_%" echo From: %匿名%)
if not defined ht (>>"%temp%\%t_%" echo To: %to%)
>>"%temp%\%t_%" echo Subject: %subject%
>>"%temp%\%t_%" echo X-mailer: p-mailsend_v4.0 [cn]
>>"%temp%\%t_%" echo Mime-Version: 1.0
>>"%temp%\%t_%" echo Content-Type: multipart/mixed;
>>"%temp%\%t_%" echo         boundary="=====vkill====="
>>"%temp%\%t_%" echo.
>>"%temp%\%t_%" echo --=====vkill=====
if defined content call :htmlortxt !content!
>>"%temp%\%t_%" echo         charset="gb2312"
>>"%temp%\%t_%" echo Content-Transfer-Encoding: 7bit
>>"%temp%\%t_%" echo.
if defined content (dir !content! >nul 2>nul &&(type "!content!">>"%temp%\%t_%" &>>"%temp%\%t_%" echo.) ||(>>"%temp%\%t_%" echo !content!)) else (>>"%temp%\%t_%" echo :^))

set z=0
if defined accessories set/p=压缩编码附件中...<nul
echo "%accessories%" |findstr ")" >nul 2>nul && (echo no,附件路径或文件名中不能包含^)&goto :sleep_)
if defined accessories (
for /f "tokens=1,2,3,4,5,6 delims=→" %%a in ('echo %accessories%') do (
   call :压缩编码附件 "%%~a"
   call :压缩编码附件 "%%~b"
   call :压缩编码附件 "%%~c"
   call :压缩编码附件 "%%~d"      
   call :压缩编码附件 "%%~e"
   call :压缩编码附件 "%%~f"                                 )
                     )
if defined xx (echo no,压缩或编码附件错误&goto :sleep_)
if not !z! lss %max_z% (echo 附件过大,%server%邮箱最大支持附件大小为%max_z%K&goto :sleep_)
if defined accessories (set/p=ok<nul&echo.)
>>"%temp%\%t_%" echo --=====vkill=====--
>>"%temp%\%t_%" echo .
>>"%temp%\%t_%" echo quit

::发信
set/p=发信中...<nul
nc -d -nvv %ip% %port% < ""%temp%\%t_%"" >"%temp%\p-mailsend.log"
for /f "tokens=*" %%? in ("%temp%\p-mailsend.log") do (
if defined vk1 if not defined vk2 (set vk2=0&set "发信错误=%%?"&echo "%%?"|findstr "250 " >nul 2>nul ||(set vk3=0))
echo "%%?"|findstr "354 " >nul 2>nul &&(set vk1=0)
                                          )
if defined vk3 (echo no,错误"!发信错误!"&goto :sleep_)
set/p=ok<nul&echo.

call :del_
echo _________________________________________________
echo 信件发送完成,2秒后退出
ping -n 2 127.1 >nul 2>nul
goto :eof

::all call::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:help
echo.
echo p-mailsend_v4.0  2007.11  by:vkill  Thanks to bjsh,est,lxmxm...
echo Copyright (C) 2006-2008 http://www.vkill.net http://bbs.cn-dos.net
echo 当前支持的邮箱有:21cn.com,sina.com,163.com,126.com,sohu.com,yahoo.com.cn,qq.com
echo 程序依赖文件:nc.exe;rar.exe;base64.exe
echo 如依赖文件不全请手动到http://www.vkill.net/tools.html上下载到windows目录
echo.
echo Usage:
echo p-mailsend [/hu] [/ht] /u 用户@地址 [/p 密码] /t 收件人 /s 主题 [/c 内容] [/ch] [/a 附件]
echo.
echo /hu   匿名发信
echo /ht   隐藏多方发送时别的收件人
echo /u *  用户名@地址 例:/u 122755990@qq.com
echo /p    密码
echo /t *  收件人:(收件人/写好收件人列表的文本文件路径)
echo              (多收件人用,隔开;用""引住) 例:/t "abc@163.com,123@56.com"
echo              (收件人列表的文本文件格式如下:)
echo               a@163.com   
echo               b@163.com  
echo               c@163.com           
echo /s *  主题
echo /c    内容:(文字/写好内容的文本文件路径)
echo /ch   信件内容html格式开关,表示发送的内容为html格式   
echo /a    附件:(绝对/相对路径,多附件用→隔开用""引住) 例:/a "c:\a b.cmd→1234.txt"
goto :eof

:认证方式1
>>"%temp%\%t_%" echo helo vkill
>>"%temp%\%t_%" echo auth login
for %%? in (%user%;%pass%) do (
set/p=%%?^<nul|base64>"l!t_!"
set/p v=<"l!t_!"
>>"%temp%\%t_%" echo !v!
del /f/q "l!t_!"
                           )
goto :eof

:del_
del /f/q "%temp%\%t_%">nul 2>nul
del /f/q "%temp%\l%t_%">nul 2>nul
del /f/q "%temp%\p-mailsend.log">nul 2>nul
goto :eof

:htmlortxt
if "%ch%"=="on" (>>"%temp%\%t_%" echo Content-Type: text/html;) else (>>"%temp%\%t_%" echo Content-Type: text/plain;)
goto :eof

:压缩编码附件
if "%~1"=="" exit/b
if "%~x1"==".rar" (copy "%~1" "%temp%\%~n1_.rar" >nul 2>nul) else (
dir %~1 >nul 2>nul &&(rar.exe -r a "%temp%\%~n1_.rar" "%~1" >nul 2>nul)||(rar.exe a "%temp%\%~n1_.rar" "%~1" >nul 2>nul)
                                                        )
if not exist "%temp%\%~n1_.rar" (set xx=vkill&exit/b)
for %%? in ("%temp%\%~n1_.rar") do (set/a z=z+%%~z?)
>>"%temp%\%t_%" echo --=====vkill=====
>>"%temp%\%t_%" echo Content-Type: application/octet-stream;
>>"%temp%\%t_%" echo         name="%~n1_.rar"
>>"%temp%\%t_%" echo Content-Transfer-Encoding: base64
>>"%temp%\%t_%" echo Content-Disposition: attachment;
>>"%temp%\%t_%" echo         filename="%~n1_.rar"
>>"%temp%\%t_%" echo.
base64.exe -i "%temp%\%~n1_.rar">>"%temp%\%t_%"
>>"%temp%\%t_%" echo.
del /f/q "%temp%\%~n1_.rar" >nul 2>nul
goto :eof

:sleep_
call :del_
ping -n 2 127.1 >nul 2>nul
goto :eof

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

=Hiddenpass.cmd_s=
@echo off
chcp 437>nul&graftabl 936>nul
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
echo (注:输入密码时不明文显示)
set  /p password=请输入mail:%~1的密码:<nul
for /f "tokens=*" %%i in ('in.com') do set password=%%i
del in.com
echo.
>%temp%\pass set password
exit
=Hiddenpass.cmd_e=

:::::::::::::::::::::当前支持的地址::::::::::::::::::::::
::,邮箱地址,smtp地址,telnet smtp端口,认证方式,最大附件大小(k)
::,21cn.com,smtp.21cn.com,25,1,15000000
::,sina.com,smtp.sina.com.cn,25,1,15000000
::,163.com,smtp.163.com,25,1,20000000
::,126.com,smtp.126.com,25,1,20000000
::,sohu.com,smtp.sohu.com,25,1,10000000
::,yahoo.com.cn,smtp.mail.yahoo.com,25,1,15000000
::,yahoo.com,smtp.mail.yahoo.com,25,1,15000000
::,qq.com,smtp.qq.com,25,1,5000000
::
[ Last edited by vkill on 2007-11-18 at 05:46 PM ]
附件 1: p-mailsend v3.8.rar (2007-5-14 21:08, 3.16 K, 下载附件所需积分 1点 ,下载次数: 375)
附件 2: p-mailsend_v4.0(all.rar (2007-11-18 17:45, 190.21 K,下载次数: 1009)

作者: everest79     时间: 2007-4-21 04:34
这个好,可以群发
作者: vkill     时间: 2007-4-21 04:35


  Quote:
Originally posted by everest79 at 2007-4-21 04:34:
这个好,可以群发

哈哈,就知道往这个方面想,群发的网上很多的,相信那些效率才高
作者: everest79     时间: 2007-4-21 04:38
好这个算被你驳倒了,不过还有一个,是附件大小,嘿嘿,没想到吧?
作者: vkill     时间: 2007-4-21 04:39


  Quote:
Originally posted by everest79 at 2007-4-21 04:38:
好这个算被你驳倒了,不过还有一个,是附件大小,嘿嘿,没想到吧?

这个我试了,貌似最大支持1M的附件
作者: everest79     时间: 2007-4-21 04:42
这人是空想,我以为会跳过限制大小那一环节
作者: estar     时间: 2007-4-21 08:18
不错啊,顶
作者: everest79     时间: 2007-4-21 10:04
打倒马甲
作者: vkill     时间: 2007-4-25 09:10
更新...
作者: bjsh     时间: 2007-4-25 09:21
vkill兄又发好东西;

加分  下载 回去研究
作者: vkill     时间: 2007-4-25 09:26


  Quote:
Originally posted by bjsh at 2007-4-25 09:21:
vkill兄又发好东西;

加分  下载 回去研究

呵呵,帮我好好测试哦~希望可以一起完善
作者: vkill     时间: 2007-4-25 09:28
发现错误,交互模式,当使用此参数时别的参数全部无效,我又看了下代码 用了/x 别的参数还是有效的,呵呵
作者: lxmxn     时间: 2007-4-25 09:40
不错,加分支持。

另外,有个小建议,登录失败之后会产生很多临时文件,建议加入登录失败之后,自动删除这些临时文件的功能。
作者: vkill     时间: 2007-4-25 09:42


  Quote:
Originally posted by lxmxn at 2007-4-25 09:40:
不错,加分支持。

另外,有个小建议,登录失败之后会产生很多临时文件,建议加入登录失败之后,自动删除这些临时文件的功能。

呵呵,你先自己修改下凑合着用了,到时候我更新到3.0的时候我相信就很完美了

到错误的时候 加call :del_ 就好了
作者: bjsh     时间: 2007-4-26 01:24
今天早上分析了一下
vkill兄的代码;
在这里解析下;以便于新手学习;


整体的流程是:

1.检查文件完整性 or下载

2.检查参数

3.测试登陆

4.写全配置文件

5.nc 灌入  发送邮件
作者: bjsh     时间: 2007-4-26 01:27
看了下;发现些小问题;下面提出些建议;


为了避免只使用一次/x建议在开头把user等初始化

:发信程序最后漏写了个goto :eof

这一处错误会导致

:发信程序  执行后会紧接着执行  :判断登陆成功否;

在 call :判断登陆成功否后面加一句

if errorlevel 1 goto :del_

否则无论是否登陆成功都继续发信;


在call :判断发送成功否 会出现些其它不必要的信息;而且发送不成功的话;发送不成功提示会出现两次;
而且最后还会echo 全部信件发送完毕;

建议在
call :del
echo 全部信件发送完毕
上加
cls
if errorlevel 1 echo 发信不成功 & goto del_



在:交互模式中
if not defined user (set/p=用户名:<nul&set/p "user= ")
完全可以简写为:if not defined user (set/p "user=用户名: ")
依次类推




for /f "tokens=2 delims=[]" %%? in ('ping -n 1 smtp.163.com ^|findstr /i "^Pinging"') do (set "ip=%%?")

建议把pinging改为ping否则vista无法成功找到ip


vista回显为:

  Quote:
正在 Ping smtp.163.split.netease.com [220.181.12.13] 具有 32 字节的数据:

来自 220.181.12.13 的回复: 字节=32 时间=35ms TTL=51

220.181.12.13 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 35ms,最长 = 35ms,平均 = 35ms

应该把help下的if "%1"=="vkill" goto :eof提到help前;否则则失去了他应有的作用;
作者: wudixin96     时间: 2007-4-26 01:33
好东西。不过还是要借助vbs?!
作者: bjsh     时间: 2007-4-26 01:35
给vkill兄的代码
根据上面的建议稍微修改了下
并稍微写了点注释

代码如下

  Quote:

  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. set "t_=test.conf"
  3. set "server=163.com"
  4. set "port=25"
  5. set "最大附件大小=15000000"
  6. set "tools_url=http://www.vkill.net/netbar/网吧所需exe/"
  7. set "tools_name=nc.exe;rar.exe;base64.exe"

  8. rem ================检查文件完整性=====================
  9. :down_tools
  10. set "down_ok=y"
  11. if not "%tools_name%*"=="*" (
  12. for %%? in (%tools_name%) do (
  13. if *%%~$PATH:?==* if not exist %%? (
  14. set "down_ok=n"
  15. echo 程序所依赖文件%%?缺失,已自动开始下载
  16. if not exist iget.vbs call :iget.vbs_
  17. iget.vbs "%tools_url%%%?" "%%?"
  18. ::move "%%?" %windir%>nul 2>nul
  19. echo 文件%%?下载完毕
  20.                                    )
  21.                              )
  22.                             )
  23. del /f/q iget.vbs>nul 2>nul
  24. if [%down_ok%]==[n] goto down_tools
  25. rem ==================结束==============================


  26. rem ===============分析参数=============================
  27. for %%? in (/? -? /h -h --h) do (if "%1"=="%%?" goto help)
  28. if "%1"=="" goto help
  29. :loop_ap
  30. set/a n+=1
  31. if not "%1"=="" (
  32.   if "%1"=="/x" goto 交互模式
  33.   if "%1"=="/u" set "user=%~2"
  34.   if "%1"=="/p" set "pass=%~2"
  35.   if "%1"=="/t" set "to=%~2"
  36.   if "%1"=="/s" set "subject=%~2"
  37.   if "%1"=="/c" set "content=%~2"
  38.   if "%1"=="/a" set "accessories=%~2"
  39.   shift&shift
  40.   goto loop_ap
  41.                 )
  42. for %%? in (user pass to subject) do (if not defined %%? goto 参数错误)
  43. goto start

  44. rem ===================结束===============================

  45. :交互模式
  46. call :help vkill
  47. if not defined user (set/p "user=用户名: ")
  48. if not defined pass (set/p "pass=密码: ")
  49. if not defined to (set/p "to=收件人: ")
  50. if not defined subject (set/p "subject=主题<hello>: ")
  51. if not defined content (set/p "content=内容: ")
  52. if not defined accessories (set/p "accessories=附件: ")

  53. rem                               :::::开始写配置文件:::::
  54. :start
  55. ::写单个发送配置文件
  56. for /l %%? in (1,1,7) do (>%%? cd.)

  57. >>1 echo helo vkill
  58. >>1 echo AUTH LOGIN

  59. rem ===================1文件的内容==========================
  60. rem                    helo vkill
  61. rem                    AUTH LOGIN
  62. rem ====================结束================================

  63. for %%? in (%user%;%pass%) do (
  64.   set/p=%%?^<nul|base64>"!t_!"
  65.   set/p v=<"!t_!"
  66.   >>2 echo !v!
  67.   del /f/q !t_!
  68.                               )

  69. rem [*第一次改写 test.conf 做为一个中介用来把用户名密码的base64编码写入文件2*]

  70. rem =================2文件的内容=============================
  71. rem               用户名和密码的base64编码
  72. rem =====================结束================================


  73. rem          [*改写test.conf利用nc 灌入服务器25端口的回显判断是否能够成功登陆*]
  74. >8 echo quit


  75. rem =================8文件的内容============================
  76. rem                     quit
  77. rem ====================结束================================


  78. copy 1+2+8 "!t_!" >nul 2>nul

  79. rem                                     ::判断能否登陆::
  80. rem 第二次改写test.conf 以用来 验证能否登陆服务器 nc -nvv IP Port <test.conf
  81. rem =================test.conf文件的内容=====================
  82. rem                helo vkill
  83. rem                AUTH LOGIN
  84. rem                用户名base64编码
  85. rem                密码base64编码
  86. rem                quit
  87. rem ====================结束================================
  88. call :发信程序
  89. cls
  90. call :判断登陆成功否
  91. if errorlevel 1 goto :del_

  92. rem                                     ::判断结束::
  93. >>3 echo mail from: ^<%user%@%server%^>

  94. rem ===================3文件的内容=============================
  95. rem             mail from: <%user%@163.com>
  96. rem =======================结束================================



  97. >>5 echo data
  98. >>5 echo From: %user%@%server%
  99. >>5 echo To: %to%
  100. >>5 echo Subject: %subject%
  101. >>5 echo X-mailer: p-163ms 2.0 [cn]
  102. >>5 echo Mime-Version: 1.0
  103. >>5 echo Content-Type: multipart/mixed;
  104. >>5 echo         boundary="=====vkill====="
  105. >>5 echo.
  106. if defined content (
  107. >>5 echo --=====vkill=====
  108. >>5 echo Content-Type: text/plain;
  109. >>5 echo         charset="gb2312"
  110. >>5 echo Content-Transfer-Encoding: 7bit
  111. >>5 echo.
  112. dir !content! >nul 2>nul &&(type "!content!">>5) ||(>>5 echo !content!)
  113.                    )


  114. rem ====================5文件的内容=============================
  115. rem                        data
  116. rem                        From: %user%@163.com
  117. rem                        To: %to%
  118. rem                        Subject: %subject%
  119. rem                        X-mailer: p-163ms 2.0 [cn]
  120. rem                        Mime-Version: 1.0
  121. rem                        Content-Type: multipart/mixed;
  122. rem                                boundary="=====vkill====="
  123. rem         如果有内容的话   
  124. rem                        --=====vkill=====
  125. rem                        Content-Type: text/plain;
  126. rem                                charset="gb2312"
  127. rem                        Content-Transfer-Encoding: 7bit
  128. rem
  129. rem                        内容
  130. rem ======================结束================================

  131. echo 压缩编码文件中...
  132. if defined accessories for %%? in (%accessories%) do (call :压缩编码附件 "%%?")

  133. >>7 echo --=====vkill=====--
  134. >>7 echo .
  135. >>7 echo quit

  136. rem ===================7文件的内容============================
  137. rem                 --=====vkill=====--
  138. rem                                       
  139. rem                 quit
  140. rem ======================结束================================

  141. ::发信
  142. for %%? in (%to%) do (
  143.   echo%%?发信中...
  144.   ::合并单个发送配置文件
  145.   >4 echo rcpt to: ^<%%?^>
  146.   del /f/q "!t_!"
  147.   copy 1+2+3+4+5+6+7 "!t_!" >nul 2>nul
  148.   call :发信程序
  149.   call :判断发送成功否
  150.                      )

  151. rem ====================4文件的内容=============================
  152. rem                    rcpt to:<%to%>
  153. rem =======================结束================================

  154. rem 第三次改写 test.conf文件.合并1-7个文件;内容如下;也是最关键的东西.
  155. rem ===================test.conf文件的内容==========================
  156. rem                     helo vkill
  157. rem                     AUTH LOGIN
  158. rem                     用户名base64编码
  159. rem                     密码base64编码
  160. rem                     mail from: <%user%@163.com>
  161. rem                     rcpt to: <%to%@163.com>
  162. rem                     data
  163. rem                     From: %user%@163.com
  164. rem                     To: %to%@163.com
  165. rem                     Subject: %subject%
  166. rem                     X-mailer: p-163ms 2.0 [cn]
  167. rem                     Mime-Version: 1.0
  168. rem                     Content-Type: multipart/mixed;
  169. rem                             boundary="=====vkill====="
  170. rem
  171. rem                     --=====vkill=====
  172. rem                     Content-Type: text/plain;
  173. rem                             charset="gb2312"
  174. rem                     Content-Transfer-Encoding: 7bit
  175. rem
  176. rem                     %content%
  177. rem                     --=====vkill=====
  178. rem                     Content-Type: application/octet-stream;
  179. rem                             name="附件名称_.rar"
  180. rem                     Content-Transfer-Encoding: base64
  181. rem                     Content-Disposition: attachment;
  182. rem                             filename="附件名称_.rar"
  183. rem
  184. rem                     附件压缩文件的base64编码
  185. rem
  186. rem                     --=====vkill=====--
  187. rem                     .
  188. rem                     quit
  189. rem ====================结束================================
  190. rem                                                  ::::写配置文件结束::::
  191. cls
  192. if errorlevel 1 echo 发信不成功 & goto del_
  193. call :del_
  194. echo 全部信件发送完毕
  195. ping -n 3 127.1>nul 2>nul
  196. goto :eof

  197. :del_
  198. for /l %%? in (1,1,8) do (del /f/q %%?>nul 2>nul)
  199. del /f/q "%t_%">nul 2>nul
  200. del /f/q p-163ms.log>nul 2>nul
  201. goto :eof

  202. :help
  203. if "%1"=="vkill" goto :eof
  204. echo ____help________________________________________________________________________
  205. echo.
  206. echo p-163ms v2.0  by:vkill
  207. echo Copyright (C) 2006-2008 http://www.vkill.net
  208. echo.
  209. echo Usage: p-163ms.cmd [/x] /u 用户名 /p 密码 /t 收件人 /s 主题 [/c 内容] [/a 附件]
  210. echo.
  211. echo /x 交互模式,当使用此参数时别的参数全部无效
  212. echo /t 收件人:(多收件人中间用,隔开;多附件时用""引住)
  213. echo /c 内容:(文字/写好内容的文本文件路径)
  214. echo /a 附件:(绝对路径/相对路径,多附件中间用,隔开;多附件时用""引住)
  215. echo.
  216. echo 示例:
  217. echo p-163ms.cmd /u 123 /p abc /t "122755990@qq.com" /s hello
  218. echo p-163ms.cmd /u 123 /p abc /t "122755990@qq.com" /s hello /c 123 /a "d:\00.txt"
  219. echo p-163ms.cmd /u 123 /p abc /t "122755990@qq.com,yx127@yx127.com" /s hello /c 123 /a "d:\00.txt,c:\00.bat"
  220. echo.
  221. echo ________________________________________________________________________________
  222. goto :eof

  223. :压缩编码附件
  224. dir %~1 >nul 2>nul &&(call :压缩文件 "%~1" "rar.exe -r")||(call :压缩文件 "%~1" rar.exe)
  225. call :判断文件大小 "%~n1_.rar"
  226. >>6 echo --=====vkill=====
  227. >>6 echo Content-Type: application/octet-stream;
  228. >>6 echo         name="%~n1_.rar"
  229. >>6 echo Content-Transfer-Encoding: base64
  230. >>6 echo Content-Disposition: attachment;
  231. >>6 echo         filename="%~n1_.rar"
  232. >>6 echo.
  233. base64.exe -i "%~n1_.rar">>6
  234. >>6 echo.
  235. del /f/q "%~n1_.rar" >nul 2>nul
  236. goto :eof

  237. rem ==================6文件的内容===================================
  238. rem                  --=====vkill=====
  239. rem                  Content-Type: application/octet-stream;
  240. rem                          name="%~n1_.rar"
  241. rem                  Content-Transfer-Encoding: base64
  242. rem                  Content-Disposition: attachment;
  243. rem                          filename="%~n1_.rar"
  244. rem
  245. rem                  附件的base64编码
  246. rem                                    
  247. rem ====================结束======================================

  248. :压缩文件
  249. %~2 a "%~n1_.rar" "%~1" >nul 2>nul||(goto 压缩文件错误)
  250. goto :eof

  251. :判断文件大小
  252. set/a z+=%~z1
  253. ::判断附件大小
  254. if not !z! lss %最大附件大小% (goto 附件大小超出)
  255. goto :eof

  256. :发信程序
  257. for /f "tokens=2 delims=[]" %%? in ('ping -n 1 smtp.163.com ^|findstr /i "^Ping"') do (set "ip=%%?")
  258. nc -nvv !ip! %port%<"!t_!">p-163ms.log
  259. goto :eof

  260. :判断登陆成功否
  261. for /f "tokens=1-2 delims=:" %%a in ('findstr /N . p-163ms.log') do (set "%%a=%%b")
  262. echo !5!|findstr "^235" >nul 2>nul ||(goto 登陆不成功)
  263. goto :eof

  264. :判断发送成功否
  265. for /f "tokens=1-2 delims=:" %%a in ('findstr /N . p-163ms.log') do (set "%%a=%%b")
  266. if not defined 10 (call :发信不成功)
  267. echo !9!|findstr "^250" >nul 2>nul ||(goto 发信不成功)
  268. goto :eof

  269. :iget.vbs_
  270. >iget.vbs echo x=LCase(WScript.Arguments(1))
  271. >>iget.vbs echo y=LCase(WScript.Arguments(0))
  272. >>iget.vbs echo Set xPost=CreateObject("Microsoft.XMLHTTP")
  273. >>iget.vbs echo xPost.Open "GET",y,0
  274. >>iget.vbs echo xPost.Send()
  275. >>iget.vbs echo Set sGet=CreateObject("ADODB.Stream")
  276. >>iget.vbs echo sGet.Mode=3
  277. >>iget.vbs echo sGet.Type=1
  278. >>iget.vbs echo sGet.Open()
  279. >>iget.vbs echo sGet.Write(xPost.responseBody)
  280. >>iget.vbs echo sGet.SaveToFile x,2
  281. goto :eof

  282. :::::::::::::::::::::所有错误start::::::::::::::::::::::
  283. :参数错误
  284. echo 参数错误,用户名\密码\收件人\主题中某一项缺少
  285. goto :eof

  286. :压缩文件错误
  287. echo 压缩文件失败
  288. goto :eof

  289. :附件大小超出
  290. echo 附件大小超出
  291. goto :eof

  292. :登陆不成功
  293. echo 登陆不成功
  294. goto :eof

  295. :发信不成功
  296. echo 发信不成功
  297. goto :eof
  298. :::::::::::::::::::::所有错误end::::::::::::::::::::::

         BJSH发表于:  2007-04-25  13:20

[ Last edited by bjsh on 2007-4-25 at 01:34 PM ]
作者: bjsh     时间: 2007-4-26 04:12
根据vkill兄的代码;我重新写了一下;
直接生成 test 和 post文件;
避免了9个文件的加和和复制;
稍微容易理解些:
代码如下:

  Quote:

  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. set "t_=test.conf"
  3. set "server=163.com"
  4. set "port=25"
  5. set "最大附件大小=15000000"
  6. set "tools_url=http://www.vkill.net/netbar/网吧所需exe/"
  7. set "tools_name=nc.exe;rar.exe;base64.exe"
  8. set "user="
  9. set "pass="
  10. set "to="
  11. set "subject="
  12. set "content="
  13. set "accessories="
  14. :down_tools
  15. set "down_ok=y"
  16. if not "%tools_name%*"=="*" (
  17. for %%? in (%tools_name%) do (
  18. if *%%~$PATH:?==* if not exist %%? (
  19. set "down_ok=n"
  20. echo 程序所依赖文件%%?缺失,已自动开始下载
  21. if not exist iget.vbs call :iget.vbs_
  22. iget.vbs "%tools_url%%%?" "%%?"
  23. echo 文件%%?下载完毕
  24.                                    )
  25.                              )
  26.                             )
  27. del /f/q iget.vbs>nul 2>nul
  28. if [%down_ok%]==[n] goto down_tools
  29. for %%? in (/? -? /h -h --h) do (if "%1"=="%%?" goto help)
  30. if "%1"=="" goto help
  31. :loop_ap
  32. set/a n+=1
  33. if not "%1"=="" (
  34.   if "%1"=="/x" goto 交互模式
  35.   if "%1"=="/u" set "user=%~2"
  36.   if "%1"=="/p" set "pass=%~2"
  37.   if "%1"=="/t" set "to=%~2"
  38.   if "%1"=="/s" set "subject=%~2"
  39.   if "%1"=="/c" set "content=%~2"
  40.   if "%1"=="/a" set "accessories=%~2"
  41.   shift&shift
  42.   goto loop_ap
  43.                 )
  44. for %%? in (user pass to subject) do (
  45. if not defined %%? echo 参数错误参数错误,用户名\密码\收件人\主题中某一项缺少 & goto :eof
  46. )
  47. goto start

  48. :交互模式
  49. call :help vkill
  50. if not defined user (set/p "user=用户名: ")
  51. if not defined pass (set/p "pass=密码: ")
  52. if not defined to (set/p "to=收件人: ")
  53. if not defined subject (set/p "subject=主题<hello>: ")
  54. if not defined content (set/p "content=内容: ")
  55. if not defined accessories (set/p "accessories=附件: ")

  56. :start
  57. echo helo vkill >test
  58. echo AUTH LOGIN >>test
  59. set /p"=%user%"<nul|base64>"!t_!"
  60. set /p v=<"!t_!"
  61. >>test echo !v!
  62. set /p"=%pass%"<nul|base64>"!t_!"
  63. set /p v=<"!t_!"
  64. >>test echo !v!
  65. del /f /q !t_!
  66. echo quit>>test
  67. call :发信程序 test
  68. cls
  69. for /f "tokens=1-2 delims=:" %%a in ('findstr /N . p-163ms.log') do (set "%%a=%%b")
  70. echo !5!|findstr "^235" >nul 2>nul ||(echo 登陆不成功)
  71. if errorlevel 1 goto :del_
  72. if exist post del /f /q post
  73. for /f "delims=" %%a in (test) do if not "%%a"=="quit" echo %%a >>post
  74. del /f /q test
  75. >>post echo mail from: ^<%user%@%server%^>
  76. >>post echo rcpt to: ^<%to%^>
  77. >>post echo data
  78. >>post echo From: %user%@%server%
  79. >>post echo To: %to%
  80. >>post echo Subject: %subject%
  81. >>post echo X-mailer: p-163ms 2.0 [cn]
  82. >>post echo Mime-Version: 1.0
  83. >>post echo Content-Type: multipart/mixed;
  84. >>post echo         boundary="=====vkill====="
  85. >>post echo.
  86. if defined content (
  87. >>post echo --=====vkill=====
  88. >>post echo Content-Type: text/plain;
  89. >>post echo         charset="gb2312"
  90. >>post echo Content-Transfer-Encoding: 7bit
  91. >>post echo.
  92. dir !content! >nul 2>nul &&(type "!content!">>post) ||(>>post echo !content!)
  93.                    )
  94. echo 压缩编码文件中...
  95. if defined accessories for %%? in (%accessories%) do (call :压缩编码附件 "%%?")
  96. echo%to%发信中...
  97. call :发信程序 post
  98. cls
  99. for /f "tokens=1-2 delims=:" %%a in ('findstr /N . p-163ms.log') do (set "%%a=%%b")
  100. if not defined 10 echo.
  101. echo !9!|findstr "^250" >nul 2>nul ||echo.
  102. cls
  103. if errorlevel 1 echo 发信不成功 & goto del_
  104. call :del_
  105. echo 全部信件发送完毕
  106. ping -n 3 127.1>nul 2>nul
  107. goto :eof
  108. :del_
  109. del /f /q test >nul 2>nul
  110. del /f /q post >nul 2>nul
  111. del /f /q p-163ms.log>nul 2>nul
  112. goto :eof
  113. :发信程序
  114. for /f "tokens=2 delims=[]" %%? in ('ping -n 1 smtp.163.com ^|findstr /i "^Ping"') do (set "ip=%%?")
  115. nc -nvv !ip! %port%<%1>p-163ms.log
  116. goto :eof
  117. :压缩编码附件
  118. dir %~1 >nul 2>nul &&(call :压缩文件 "%~1" "rar.exe -r")||(call :压缩文件 "%~1" rar.exe)
  119. call :判断文件大小 "%~n1_.rar"
  120. >>post echo --=====vkill=====
  121. >>post echo Content-Type: application/octet-stream;
  122. >>post echo         name="%~n1_.rar"
  123. >>post echo Content-Transfer-Encoding: base64
  124. >>post echo Content-Disposition: attachment;
  125. >>post echo         filename="%~n1_.rar"
  126. >>post echo.
  127. base64.exe -i "%~n1_.rar">>post
  128. >>post echo.
  129. del /f/q "%~n1_.rar" >nul 2>nul
  130. >>post echo --=====vkill=====--
  131. >>post echo .
  132. >>post echo quit
  133. goto :eof
  134. :压缩文件
  135. %~2 a "%~n1_.rar" "%~1" >nul 2>nul||(echo 压缩文件错误)
  136. goto :eof
  137. :判断文件大小
  138. set/a z+=%~z1
  139. ::判断附件大小
  140. if not !z! lss %最大附件大小% (echo 附件大小超出)
  141. goto :eof
  142. :help
  143. if "%1"=="vkill" goto :eof
  144. echo ____help________________________________________________________________________
  145. echo.
  146. echo p-163ms v2.0  by:vkill
  147. echo Copyright (C) 2006-2008 http://www.vkill.net
  148. echo.
  149. echo Usage: p-163ms.cmd [/x] /u 用户名 /p 密码 /t 收件人 /s 主题 [/c 内容] [/a 附件]
  150. echo.
  151. echo /x 交互模式,当使用此参数时别的参数全部无效
  152. echo /t 收件人:(多收件人中间用,隔开;多附件时用""引住)
  153. echo /c 内容:(文字/写好内容的文本文件路径)
  154. echo /a 附件:(绝对路径/相对路径,多附件中间用,隔开;多附件时用""引住)
  155. echo.
  156. echo 示例:
  157. echo p-163ms.cmd /u 123 /p abc /t "122755990@qq.com" /s hello
  158. echo p-163ms.cmd /u 123 /p abc /t "122755990@qq.com" /s hello /c 123 /a "d:\00.txt"
  159. echo p-163ms.cmd /u 123 /p abc /t "122755990@qq.com,yx127@yx127.com" /s hello /c 123 /a "d:\00.txt,c:\00.bat"
  160. echo.
  161. echo ________________________________________________________________________________
  162. goto :eof
  163. :iget.vbs_
  164. >iget.vbs echo x=LCase(WScript.Arguments(1))
  165. >>iget.vbs echo y=LCase(WScript.Arguments(0))
  166. >>iget.vbs echo Set xPost=CreateObject("Microsoft.XMLHTTP")
  167. >>iget.vbs echo xPost.Open "GET",y,0
  168. >>iget.vbs echo xPost.Send()
  169. >>iget.vbs echo Set sGet=CreateObject("ADODB.Stream")
  170. >>iget.vbs echo sGet.Mode=3
  171. >>iget.vbs echo sGet.Type=1
  172. >>iget.vbs echo sGet.Open()
  173. >>iget.vbs echo sGet.Write(xPost.responseBody)
  174. >>iget.vbs echo sGet.SaveToFile x,2
  175. goto :eof
         BJSH发表于:  2007-04-25  14:59


作者: vkill     时间: 2007-4-26 07:41
bjsh 兄
我用copy + + 完全是为了多方发送,因为多方发送的时候只是修改了rcpt to: ,其他的完全没有变,我用copy ++ 你发信的时候试试 start nc -nvv ...看看那样更快,呵呵

19楼的解释太精彩了,佩服

在:交互模式中
if not defined user (set/p=用户名:<nul&set/p "user= ")
完全可以简写为:if not defined user (set/p "user=用户名: ")
依次类推
我刚刚试了set/p "user=用户名: " 和set/p=用户名:<nul&set/p "user= "一样,谢谢兄指点
作者: vkill     时间: 2007-4-26 07:44
还有看来bjsh 兄这么有意研究这个,再说说吧!

>>post echo mail from: ^<%user%@%server%^>
>>post echo rcpt to: ^<%to%^>

mail from:可以把这去掉,也可以写别的邮箱,应该也可以写文字之类的,类似匿名,哈哈
rcpt to: 可以把这去掉,这样别人就看不到你同时都给谁发了,我相信到mail.163.com是做不到这样的
作者: bjsh     时间: 2007-4-26 07:44


  Quote:
bjsh 兄
我用copy + + 完全是为了多方发送,因为多方发送的时候只是修改了rcpt to: ,其他的完全没有变,我用copy ++ 你发信的时候试试 start nc -nvv ...看看那样更快,呵呵

原来如此啊!还真没想到多方发送;确实
作者: bjsh     时间: 2007-4-26 07:48
我还想把他做成校内通用的;

可惜想了半天也没明白学校的邮件服务器用的是什么;

看了看似乎是80;

至于smtp完全是模仿你的;

至于含义真的是不懂;

有空真得去学学网络协议了;

如果vkill兄不嫌我郁闷;

帮我搞定学校内的邮件发送;真是感激不尽了;
作者: vkill     时间: 2007-4-26 07:51
后面的完全就是mime了,http://blog.yx127.com/?action=show&id=190,这里讲的很详细
学校的那个你 telnet 上去看看,例子:

telnet 192.168.0.1 25
help

看看出来什么

[ Last edited by vkill on 2007-4-26 at 07:52 AM ]
作者: bjsh     时间: 2007-4-26 08:00
25端口不开的;

问了学校的一些人

说smtp和pop3都不开放的;
作者: vkill     时间: 2007-4-26 08:01
bjsh 兄

可否有意一起写那?我想写为 p-mailsend ,支持更多的邮箱,最起码我想支持现在几个大站的,163 yahoo qq hotmail gmail 56 sina sohu 21cn ==

Usage: p-163ms.cmd [/x] /u 用户名@服务器 /p 密码 /t 收件人 /s 主题 [/c 内容] [/a 附件]
作者: vkill     时间: 2007-4-26 08:03


  Quote:
Originally posted by bjsh at 2007-4-26 08:00:
25端口不开的;

问了学校的一些人

说smtp和pop3都不开放的;

这个不开放那用telnet就没有办法了,用foxmail OE ==也不可以,只有通过网页形式发了,你可以用vbs写个登陆邮箱发邮件的,呵呵,量体财衣了
作者: bjsh     时间: 2007-4-26 08:14
他的端口只有这些
80(HTTP)
21(FTP Control)
3306(MYSQL)
22(SSH)
389(LDAP)

确实得用vbs了;
五一写
作者: bjsh     时间: 2007-4-26 08:15


  Quote:
Originally posted by vkill at 2007-4-25 07:01 PM:
bjsh 兄

可否有意一起写那?我想写为 p-mailsend ,支持更多的邮箱,最起码我想支持现在几个大站的,163 yahoo qq hotmail gmail 56 sina sohu 21cn ==

Usage: p-163m ...

好啊!
这样就可以和兄学习到好东西了;呵呵
作者: vkill     时间: 2007-4-26 09:15


  Quote:
Originally posted by bjsh at 2007-4-26 08:15:



好啊!
这样就可以和兄学习到好东西了;呵呵

其实都是些重复动作了
作者: bjsh     时间: 2007-4-26 09:59
刚才看了下:
对于以下的网站
163 yahoo qq hotmail gmail 56 sina sohu 21cn

和163相同处理方式的有:
smtp.qq.com 219.133.60.51
smtp.sina.com  202.108.3.233
smtp.sohu.com  220.181.26.195
smtp.21cn.com  202.104.32.230

稍微有点变化的是:
smtp.56.com     61.143.210.110
第一个要用 EHLO  而不是 HELO
后面的操作和前面一样了

对于:
smtp.gmail.com  64.233.163.111

我不知道该怎么做了;

vkill 给解答下
作者: vkill     时间: 2007-4-26 10:12


  Quote:
Originally posted by bjsh at 2007-4-26 09:59:
刚才看了下:
对于以下的网站
163 yahoo qq hotmail gmail 56 sina sohu 21cn

和163相同处理方式的有:
smtp.qq.com 219.133.60.51
smtp.sina.com  202.108.3.233
smtp.sohu.com  22 ...

gmail的好象要什么特殊认证的,我也不是很清楚了
作者: flyinspace     时间: 2007-4-26 10:55
其实可以设定.ini文件的。

要不发送邮件反而被你们搞复杂了。

------------------------------------------------------------------------
作者: bjsh     时间: 2007-4-26 12:13
flyinspace能否详细说一下:
作者: vkill     时间: 2007-4-26 12:19


  Quote:
Originally posted by flyinspace at 2007-4-26 10:55:
其实可以设定.ini文件的。

要不发送邮件反而被你们搞复杂了。

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

我的想法
find "条件" "%~nx0" 这样不是更好
作者: flyinspace     时间: 2007-4-26 14:30    标题: ------------------------------------------------------

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

[ Last edited by flyinspace on 2007-4-26 at 01:09 PM ]
作者: flyinspace     时间: 2007-4-26 14:37
其实,我们这样做的目的就好象在c++里设置默认值一样。。

bool sub(用户名,密码,POP服务器,端口) 这里都设置了默认值。
{
       base64 转换 用户名,密码
       验证登陆是否成功。
       是,返回成功
}
作者: bjsh     时间: 2007-4-26 22:16
to: flyinspace
哦:
兄可以看一下我昨天发在20楼的代码;

那段代码开始要求输入用户名\密码\主题\内容\附件\

然后生成test文件进行验证是否能够登陆成功;

然后生成post文件(其实就是你说的配置文件;这两者作用是一样的);

至于你所说的有设置默认值;完全可以在最后不删生成的post文件;
添加一句if exist post;这效果不就相当于配置文件了;不同的是这个配置文件不用ini后缀;呵呵;

实质是一样的;

那段代码同样可以

  Quote:
=====参数检测======不管参数怎么输入都行==============

而且要比兄的简练许多啊;

那段代码可是vkill兄很值得我们学习的一个地方啊;用了shift移位;兄有空好好看下;
作者: vkill     时间: 2007-4-28 08:13
再次更新
作者: vkill     时间: 2007-4-28 09:04
bjsh 兄 lxm 兄 帮我测试哦~我只测试了qq yahoo 163 别的我没有,测试不了
作者: bjsh     时间: 2007-4-28 09:52
vkill兄真是高效啊!!
作者: bjsh     时间: 2007-4-28 09:58
先提个建议;在测试登陆是否成功之前;
先测试是否ping的通;
ping -n 1 %smtp% >nul 2>nul || (echo 确认网络连接.. & goto :eof)

发现了几个小问题;

发信成功也会提示发信不成功;
问题出在:
echo !10!  | findstr "^250"   1>nul 2>nul  || (echo 发信不成功  & goto :eof )

!10! 改为 !9!

  Quote:
D:\post>for /F "tokens=1-2 delims=:" %a in ('findstr /N . p-mailsend.log') do (set "%a=%b" )

D:\post>(set "1=220 163.com Anti-spam GT for Coremail System (163com[20050206])" )

D:\post>(set "2=250 OK" )

D:\post>(set "3=334 fdsfdsfsadfsadsf" )

D:\post>(set "4=334 dfsdfsdsfdfdfdsf" )

D:\post>(set "5=235 Authentication successful" )

D:\post>(set "6=250 Mail OK" )

D:\post>(set "7=250 Mail OK" )

D:\post>(set "8=354 End data with <CR><LF>.<CR><LF>" )

D:\post>(set "9=250 Mail OK queued as smtp10,dfsfdsdfsfdsfsdfdsdsf==.121322316541321 13213" )

D:\post>(set "10=221 Bye" )

D:\post>if not defined 10 (echo 发信不成功  & goto :eof )

D:\post>echo !10!  | findstr "^250"   1>nul 2>nul  || (echo 发信不成功  & goto :eof )
发信不成功

登陆不成功 .. 附件过大... 发信不成功 都不会 call :del_
应该添加上;
echo !9!|findstr "^250" >nul 2>nul ||(echo 发信不成功&call :del_ &goto :eof)

再有就是:vkill兄 是否没写完啊!;

怎么只有验证方式1啊;
smtp.56.com 这种的 验证方式2还没有写啊!!

快完美了!!

写的真漂亮

[ Last edited by bjsh on 2007-4-27 at 09:35 PM ]
作者: vkill     时间: 2007-4-28 13:21
呵呵,bjsh兄提的几点好,我尽快完善
作者: vkill     时间: 2007-4-29 03:38
bjsh 兄

现在除了
smtp.56.com 这种的 验证方式2还没有写啊!!
这个没有写外,别的都已经完善,呵呵,再测试
作者: vkill     时间: 2007-4-29 03:54
56 的怎么回事我改为ehlo 还出现错误
553 this mail is blocked by kbas system,
作者: bjsh     时间: 2007-4-29 04:06
if not defined ip (echo 网络不通&goto :eof)
echo quit|telnet %ip% %port%||(echo %smtp% telnet不通,可能你的%port%端口未开启&goto :eof)

这句还是有问题啊!!

ping不通不代表找不到IP;
也就是说连接不到%smtp% 25 用ping 定义%IP%是还是能成功的...

telnet %ip% %port% ;
无法连接到 %ip% %port% 可能你的%port%端口未开启;
这种说法是不正确的.
本机连接%ip%的端口不一定是%port%;

所以还是建议用

ping %ip% -n 1 >>nul 2>>nul || echo ..& goto :eof

ping通了;自然能连接到ip的%port%端口;

[ Last edited by bjsh on 2007-4-28 at 03:07 PM ]
作者: bjsh     时间: 2007-4-29 04:09
56应该用
HELO
作者: vkill     时间: 2007-4-29 04:15


  Quote:
Originally posted by bjsh at 2007-4-29 04:06:
if not defined ip (echo 网络不通&goto :eof)
echo quit|telnet %ip% %port%||(echo %smtp% telnet不通,可能你的%port%端口未开启&goto :eof)

这句还是有问题啊!!

pi ...

我想这些大站还是ping不通就解析不了地址的吧!呵呵
作者: vkill     时间: 2007-4-29 04:15


  Quote:
Originally posted by bjsh at 2007-4-29 04:09:
56应该用
HELO

56的我不管怎么试还是 553错误,不知道为什么?你发一遍看看你的可以不?
作者: bjsh     时间: 2007-4-29 04:19
ping不通是可以解析地址的;

我今天网卡里刚刚没钱;
用代理来这的呢;
对于56没法试了;
还是和你说的那个问题;
代理网页可以;
命令行下就不行了;
值得研究的东西
作者: vkill     时间: 2007-4-29 04:19


  Quote:
Originally posted by bjsh at 2007-4-29 04:06:
if not defined ip (echo 网络不通&goto :eof)
echo quit|telnet %ip% %port%||(echo %smtp% telnet不通,可能你的%port%端口未开启&goto :eof)

这句还是有问题啊!!

pi ...

我网吧的这个机子可以ping 通 smtp.163.com ,可就是telnet 连接不上,我查了下好象把服务删除了,所以之前要telnet下才会更好
作者: bjsh     时间: 2007-4-29 04:21
telnet不上;nc能不能连上呢;
作者: vkill     时间: 2007-4-29 04:22


  Quote:
Originally posted by bjsh at 2007-4-29 04:21:
telnet不上;nc能不能连上呢;

呵呵,肯定连接不上了
作者: vkill     时间: 2007-4-29 04:24
命令行下用代理确实是个问题,要么换nc为可以支持代理的telnet代替工具
作者: fengzi     时间: 2007-4-30 01:06
呵呵``我拿来做了个QQ邮件群发``谢谢vkill了```
要是能加入代理功能就好了。。。
作者: fengzi     时间: 2007-5-5 00:07
这个可以添加从文本里找发信账号密码 地址也从文本里提取吗````
作者: vkill     时间: 2007-5-7 09:19


  Quote:
Originally posted by fengzi at 2007-5-5 00:07:
这个可以添加从文本里找发信账号密码 地址也从文本里提取吗````

一切都可以
作者: honghunter     时间: 2007-5-7 17:20
有没有不用NC的解决方案哪?

NC在我们这里会被安全类软件发出警报。
作者: vkill     时间: 2007-5-7 18:45


  Quote:
Originally posted by honghunter at 2007-5-7 17:20:
有没有不用NC的解决方案哪?

NC在我们这里会被安全类软件发出警报。

暂时我不知道
作者: fengzi     时间: 2007-5-7 21:38
我试了21cn QQ 163的邮箱发信``只有163的能成功``
其他的怎么不登陆呢?
作者: vkill     时间: 2007-5-8 13:24


  Quote:
Originally posted by fengzi at 2007-5-7 21:38:
我试了21cn QQ 163的邮箱发信``只有163的能成功``
其他的怎么不登陆呢?

baidu google 搜索错误原因看看~qq的要手动开启smtp才可以的
作者: vkill     时间: 2007-5-9 20:53
再次更新
作者: fengzi     时间: 2007-5-11 21:31
还没有注意这个又有新版本了```
不知道新版本有什么新功能啊``
我先试下``
作者: fengzi     时间: 2007-5-11 21:34
/ht   隐藏多方发送时别的收件人
这个是什么意思呢``?
作者: vkill     时间: 2007-5-12 12:21


  Quote:
Originally posted by fengzi at 2007-5-11 21:34:
/ht   隐藏多方发送时别的收件人
这个是什么意思呢``?

你发送多个人的时候分别试下就明白了
作者: fengzi     时间: 2007-5-12 23:31
为什么我用这个挂着发了一个小时后机箱就会有报警声呢`  同时程序显示说无法登陆,是否是邮箱服务器的限制?
作者: vkill     时间: 2007-5-14 20:18


  Quote:
Originally posted by fengzi at 2007-5-12 23:31:
为什么我用这个挂着发了一个小时后机箱就会有报警声呢`  同时程序显示说无法登陆,是否是邮箱服务器的限制?

这个未知,我想不通你怎么挂着发了一个小时那?群发的话可以这样

p-mailsend /u *@* /p * /t a.txt /s test /c *

a.txt格式如下:
a@163.com
b@qq.com
c@56.com
d@yahoo.com.cn
....
作者: fengzi     时间: 2007-5-15 01:30
for /l %%i in(400000,1,500000) dop-mailsend /u *@* /p * /t %%i@qq.com /s test /c *
做的QQ群发``只是最多也就能挂1个小时。
作者: fengzi     时间: 2007-5-15 01:39
比如我用来做QQ群发`收信账号是FOR 自动加1生成的的`
能不能预先在某一文本里设置发信账号 然后群发的时候隔段时间换一个发信邮箱,
(不是QQ邮箱循环完了换。)
作者: fengzi     时间: 2007-5-15 01:40
呵呵``做好了完全可以成商业版本的了```
作者: REDSUN     时间: 2007-5-15 06:37
高手啊!!!!!!!!!!!1
作者: vkill     时间: 2007-5-15 11:12


  Quote:
Originally posted by fengzi at 2007-5-15 01:39:
比如我用来做QQ群发`收信账号是FOR 自动加1生成的的`
能不能预先在某一文本里设置发信账号 然后群发的时候隔段时间换一个发信邮箱,
(不是QQ邮箱循环完了换。)

这个可以用p来call p-mailsend来实现了,很简单的
作者: fengzi     时间: 2007-5-15 12:57


  Quote:
Originally posted by vkill at 2007-5-15 11:12 AM:

这个可以用p来call p-mailsend来实现了,很简单的

O 可以写个示例吗`?
谢谢``
因为我这几天常常在用这个发QQ邮箱。
作者: vkill     时间: 2007-5-15 21:57


  Quote:
Originally posted by fengzi at 2007-5-15 12:57:



O 可以写个示例吗`?
谢谢``
因为我这几天常常在用这个发QQ邮箱。

搜索下以前的,这个很简单的
作者: duckgaga     时间: 2007-5-17 00:33
高手……彻底佩服……
作者: zch1366     时间: 2007-5-17 11:07
不错啊,顶
作者: yjq635     时间: 2007-5-26 23:40
看来我要改名字了-----井底之蛙
呵呵
牛人太多
作者: denven     时间: 2007-6-3 09:47
问下楼主,附件中的3.6版本被瑞星杀了。能避免么?
作者: knoppix7     时间: 2007-6-3 12:57
希望能马上出新版本。
那样论坛上的邮件交流就方便了。
作者: vkill     时间: 2007-6-3 21:26


  Quote:
Originally posted by denven at 2007-6-3 09:47:
问下楼主,附件中的3.6版本被瑞星杀了。能避免么?

那个是 iget.vbs 惹的祸,冒办法了,最好你用的时候把瑞星关闭了
作者: vkill     时间: 2007-6-3 21:27


  Quote:
Originally posted by knoppix7 at 2007-6-3 12:57:
希望能马上出新版本。
那样论坛上的邮件交流就方便了。

说说再加点什么哪?最基本的已经都差不多了,我的想法就是在没有参数的情况下调用vbs弄个类似ie的窗口,写收件人\内容...
作者: 72hour     时间: 2007-6-4 19:07
杀毒软件要杀。。
作者: wxx0924i     时间: 2007-6-27 13:56
试下
作者: wxx0924i     时间: 2007-6-27 14:00
下不了
作者: eech     时间: 2007-6-28 17:18
如果有群发的短信的多好,我愿意出钱,不超过1毛一条
作者: 214490008     时间: 2007-7-2 13:32
正需要,谢谢了!;)
作者: tclgb     时间: 2007-7-11 14:43
这个东西太好了,感谢vkill,学到不好东西
作者: vkill     时间: 2007-7-13 21:40


  Quote:
Originally posted by tclgb at 2007-7-11 14:43:
这个东西太好了,感谢vkill,学到不好东西

呵呵~共同学习
作者: koala     时间: 2007-8-4 10:10
强烈赞一个
作者: fengzi     时间: 2007-8-16 02:08
可不可以加入随机更换发信地址 和自己更换代理呢?期待中````
我用163的挂着发了一个小时 `邮箱被封掉了 ``
希望VKILL能加入到这些功能``谢谢。。。
作者: blxzboy     时间: 2007-9-12 15:38
感谢楼主的程序,不过好像只有些邮局的可以发送成功...
作者: vkill     时间: 2007-9-13 15:08


  Quote:
Originally posted by fengzi at 2007-8-16 02:08:
可不可以加入随机更换发信地址 和自己更换代理呢?期待中````
我用163的挂着发了一个小时 `邮箱被封掉了 ``
希望VKILL能加入到这些功能``谢谢。。。

随机更换发信地址这个我以前写了个,更换代理的这个我没有弄

[ Last edited by vkill on 2007-9-13 at 03:10 PM ]
附件 1: 随机更换发信地址测试.rar (2007-9-13 15:10, 545 bytes, 下载附件所需积分 1点 ,下载次数: 83)

作者: sht0602     时间: 2007-9-13 15:44
??
看不懂,呵呵!~
还是顶了吧!
学习中……
作者: fourme2009     时间: 2007-9-14 09:38
下载时,卡巴报毒,怎么回事
作者: rdingding     时间: 2007-9-22 12:21
好东西,收藏了
谢谢
作者: xxx008     时间: 2007-9-24 13:13
这个好,凑合着用
作者: feimei     时间: 2007-10-9 15:19
支持
作者: 67411666     时间: 2007-10-14 15:57
好东西,可以改进改进
作者: mrxdwq     时间: 2007-10-14 22:40
haohaohaohaohoahoahoahoaho
作者: ckys     时间: 2007-10-20 14:42
!厉害了。
作者: mydnet     时间: 2007-10-31 19:20
好的,值得学习
作者: gsgbjhpd     时间: 2007-11-1 17:00
这个难度很是不小啊
作者: zhinengzi     时间: 2007-11-6 16:10
楼主`~!我爱死你了`!~!!!
作者: zhinengzi     时间: 2007-11-9 20:56
上面那个有木马,我使用过一次,结果QQ被偷了
作者: cavinja     时间: 2007-11-11 14:44
我要试试看。。
作者: qsheup     时间: 2007-11-28 23:05
支持
作者: taihsing     时间: 2007-12-10 19:16
强烈支持
作者: gxgjames     时间: 2007-12-21 09:09    标题: 好东西要顶

好东西要顶
作者: rootkit     时间: 2008-1-5 10:46    标题: 牛人!

长见识了....
作者: zhingying     时间: 2008-1-8 11:00
支持你
作者: czom     时间: 2008-2-4 19:33
好东西 收下喽!!!
作者: zncznc     时间: 2008-2-15 05:37
没用过。试用先
作者: bob1989     时间: 2008-3-30 00:08
大哥``想死你了``
`   要的就是你这样的软件 ` ``

    太感谢了` ` ` ` `  ` ` ` `
作者: qq53225441     时间: 2008-7-26 01:09
顶一下.我很需要这个东西.可是下载不能解压的啊
作者: 498570148     时间: 2008-8-21 15:11    标题: 好东西

好东地
作者: xb20082007     时间: 2008-8-29 21:50    标题: 打开眼界

小弟近日才刚刚加入联盟,就看到如此好东西,幸甚哉,顶
作者: xb20082007     时间: 2008-8-29 21:50    标题: 打开眼界

小弟近日才刚刚加入联盟,就看到如此好东西,幸甚哉,顶
作者: uiopuiop     时间: 2008-9-3 21:26
NC.exe 被NORTON 查杀了。有没有其他工具可以替换啊?
作者: zszhw     时间: 2008-9-12 09:35
这是个好东西
作者: coolwei88     时间: 2008-11-6 13:05
太感谢了 正需要呢
作者: ylbshuis     时间: 2008-11-6 14:51
很好,非常强大
作者: e114     时间: 2008-12-6 23:25
zhichi