65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 VBScript 和 NetCat 发送电子邮件

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2007 年 3 月 7 日

CPOL

2分钟阅读

viewsIcon

55753

downloadIcon

3

为了补充我之前关于使用 JScript 和 Netcat 发送电子邮件的文章,这里是使用 VBScript 的版本,并展示了从 JScript 到 VBScript 的转换。

引言

不久前,我写了一篇关于如何使用 JScript 和非常有用的程序 - NetCat 发送电子邮件的文章。这篇文章涵盖了相同的内容,但使用 VBScript,并比较了这两种语言的代码。

原始文章在这里:http://nerds-central.blogspot.com/2007/02/email-load-tester-auto-email-sender.html,也在 'The Code Project' 上:https://codeproject.org.cn/KB/scripting/Exsead5.aspx

我发现 JScript 比 VBScript 更容易使用,尤其是在我做的大部分工作上;然而,许多人更喜欢 VBScript。问题是微软似乎没有投入太多精力来支持 VBScript;他们甚至没有创建(据我所知)它的 .NET 版本。我想这意味着 VBScripters 能够编写 JScript 代码是有好处的。为此,我不仅提供了并讨论了这里的 VBScript 源代码,还展示了(在注释中)原始的 JScript 代码。我希望那些不太熟悉 JScript 的人能看到,一旦你克服了那些弯弯曲曲的括号,它实际上与 VBScript 非常相似!

它是如何工作的

我已经讨论过使用 XMLHTTP 对象与 Web 服务交互。对于发送电子邮件,没有这样的现成对象来帮助我们。但是,发送电子邮件并不是一件特别复杂的事情,所以我们可以直接使用 NetCat!

为此,你首先需要一份 NetCat 的副本。我有一个在 Windows XP 上运行的副本,可以从 这里 下载。我没有进行端口修改,但功劳在 zip 文件中,并且是 GPL 2 许可。一旦你有了 nc.exe,你需要把它放在可执行路径上(例如 system32)或者与你将要运行脚本的目录中。

该脚本应该通过命令行中的 cscript 运行。你必须更改 SMTP 服务器的地址为你可以访问的一个,并设置收件人和发件人电子邮件地址、命中次数和命中间隔延迟到适当的设置。这是一个真实的脚本,我今天用它来负载测试一个电子邮件服务器!

'var strExe = "nc -v smtp.gotadsl.co.uk 25";
dim strExe
strExe = "nc -v smtp.gotadsl.co.uk 25"

'var objShell = WScript.CreateObject("WScript.Shell");
dim objShell
set objShell = WScript.CreateObject("WScript.Shell")

'var total  = 8;
dim total
total  = 8

'var delay  = 0;
dim delay
delay  = 0

'var victim = "ian.manson@project-network.com";
dim victim
victim = "git@cubicalland.com"

'for(var i=0;i<total;++i)
dim i
for i=1 to total

'    var strExeIn ="HELO nerds-central.com\r\n"; 
'        strExeIn+="MAIL FROM: <test@nerds-central.com>\r\n";
'        strExeIn+="RCPT TO: <"+victim+">\r\n";
'        strExeIn+="DATA\r\n";
'        strExeIn+="Body of email: this is an auto generated test email.\r\n";
'        strExeIn+="This is "+(i+1)+" of "+total+"\r\n";
'        strExeIn+=".\r\n";
'        strExeIn+="QUIT\r\n";

    dim strExeIn
    strExeIn =            "HELO nerds-central.com" + vbcrlf
    strExeIn = strExeIn + "MAIL FROM: <test@nerds-central.com>" + vbcrlf
    strExeIn = strExeIn + "RCPT TO: <"+victim+">" + vbcrlf
    strExeIn = strExeIn + "DATA"+ vbcrlf
    strExeIn = strExeIn + _
               "Body of email: this is an auto generated test email." + _
               vbcrlf
    strExeIn = strExeIn + "This is " & i & " of " & total & vbcrlf
    strExeIn = strExeIn + "." + vbcrlf
    strExeIn = strExeIn + "QUIT" + vbcrlf
    
    'var objScriptExec = objShell.Exec(strExe);
    dim objScriptExec
    set objScriptExec = objShell.Exec(strExe)

    'objScriptExec.StdIn.write(strExeIn);
    objScriptExec.StdIn.write(strExeIn)

    'objScriptExec.StdIn.close();
    objScriptExec.StdIn.close()

    'WScript.echo("Sending "+(i+1)+" of "+total+" to "+victim);
    WScript.echo("Sending " & i & " of " & total & " to "+victim)

    'WScript.echo(objScriptExec.StdOut.ReadAll());
    WScript.echo(objScriptExec.StdOut.ReadAll())

    'WScript.sleep(delay);
    WScript.sleep(delay)

next

有关更多 VBScript 信息,请参阅 Nerds-CentralVBScript 部分。

© . All rights reserved.