通过批处理文件发送电子邮件

时间:2013-02-09 20:08:30

标签: php html email batch-file ip

好吧所以我的最终目标是拥有一个自动运行文件,我可以放在外部驱动器或闪存盘上,甚至是cd,如果运行将执行一堆垃圾,最终将计算机的ip信息发送给我。到目前为止,这就是我所拥有的......

的批处理文件
  • 打开一个cmd窗口并运行ipconfig / all> tcpinfo.txt将所有ipconfig存储在一个文件中
  • 然后该文件创建一个html文件

    echo ^ http://anthonyrussell.info/scripts/sendmail.php?           computerinfo =“这是ipconfig信息应该去的地方”^> ^^^>> sendEmail.html`

- 批处理文件的最后一件事是执行html文件

HTML文件重定向到我创建的php页面,该页面使用我们创建的html文件传递的GET信息发送电子邮件。

所以这一切都有效除了我不能将ipconfig信息输入到html代码中....

有什么想法吗?

下面的

是我正在使用的蝙蝠代码。随意运行它。我把它配置到如果你添加你的电子邮件,其中说altEmail =它会将它发送到你想要测试的地方。否则它将被发送给我。

将此保存为whatevernameyouwant.bat

cd desktop
ipconfig /all > tcpinfo.txt
echo ^<html^>^<head^>^<meta HTTP-EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php?computerinfo=ip:127.0.0.1&altEmail="^>^</head^>^</html^> >> sendEmail.html
sendEmail.html

更新

所以有时最简单的答案确实是最好的。这种情况的重点是从可能或可能没有窃取驱动器或磁盘的人那里获取计算机信息。

想法就是拥有它 autorun-&gt;启动批处理文件 - &gt;捕获comp信息 - &gt;创建html文件 - &gt;电话回家信息

我最终做的不是从命令提示符捕获公共IP(我现在确信无法完成)我只是创建一个html文件,启动它,并在我的服务器上捕获访问者ID然后在主体中将其与我在命令提示符中捕获的计算机名称一起通过电子邮件发送。

感谢大家的投入。这是一个有趣的练习

6 个答案:

答案 0 :(得分:1)

使用CURL。 你可以做GET,POST等许多有用的东西。

答案 1 :(得分:1)

您可以将ipconfig中的IP地址放入for语句中以获取如下变量:

for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4"') do set ipaddress=%%a

然后将你的回声改为

echo ^<html^>^<head^>^<meta HTTP EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php computerinfo=ip:%ipaddress%&altEmail="^>^</head^>^</html^> >> sendEmail.html

话虽如此,这可能是本地IP地址,而不是公开的,因此无用。如果我没记错,没有本地方式来获取公共IP地址。

修改

您可以混合使用VBS和批次

getip.vbs

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
CreateObject("Wscript.Shell" ).Run "getip.bat" & o.responseText,0

getip.bat

cd desktop
echo ^<html^>^<head^>^<meta HTTP-EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php?computerinfo=ip:%1&altEmail="^>^</head^>^</html^> >> sendEmail.html
sendEmail.html    

这只是here提供的解决方案的略微修改版本。请注意,这是未经测试的。

答案 2 :(得分:0)

你可以使用反引号将ipconfig(或任何其他命令)的输出放入变量中:

<?php
$ipconfig=`ipconfig`;
print $ipconfig;

然后您可以使用php邮件发送输出(确保首先将smtp服务器设置为php config中的有效on或使用像pear邮件这样的php smtp库)

答案 3 :(得分:0)

好的,答案如下。

我还没有能够正确地发送计算机输出,但这就是你如何将两者结合在一起。诀窍是使用COPY命令。所以创建一半的html文件。附加到计算机信息中,然后附加到HTML文件的其余部分。现在让它发挥作用......

echo computerinfoblah >> computerInfoFile.txt
echo ^<html^>^<head^>^<meta HTTP-EQUIV="REFRESH"content="0;url=http://anthonyrussell.info/scripts/sendmail.php?computerinfo=" >> sendemail.html
COPY sendemail.html + computerInfoFile.txt
echo &altEmail="^>^</head^>^</html^> >> sendemail.html
sendemail.html

答案 4 :(得分:0)

我这样做的方法是首先解决保存txt文件的位置...如果它在驱动器上,让我们说E:\然后保存它。

cd E:\

然后,我会将数据保存到文本文件中。

ipconfig /all > tcpinfo.txt

之后我会把它称之为声明每一行变量如此(假设我想要主机行,在我的情况下是我的文本文件中的第4行)

< tcpinfo.txt (
set /p notimportant=
set /p notimportant=
set /p notimportant=
set /p hostname=
)

然后,如果您想将数据发送到您的网站并且您的页面正确处理它,那么您可以直接将用户发送到网站,其中包含以下信息:

start http://anthonyrussell.info/scripts/sendmail.php?hostname=%hostname%

根据你想要的字段,你必须指定GET的内容。然后,您从网页上获取该数据并使用它将数据发送到您的电子邮件。

答案 5 :(得分:0)

如果您的客户端可以连接到smtp服务器,那么请执行此操作而不是使用Web服务器。如果安装了powershell,则内置cmdlet用于发送emais。只需让你的批处理脚本运行powershell.exe并给它一个脚本块来执行。