2014-03-06 118 views
0

我有sendmail.bat腳本低於使用Windows 2003中的工作,但現在不執行任何操作在Windows 2012Windows Server 2012中調用命令不起作用

Win32SendMail.pl腳本需要五ARGS [smpt_host,來自於主題,EMAIL_BODY]。

我仍然可以從PowerShell終端運行它,但是在.bat腳本內部使用時(見下文),它不會發送電子郵件,也不會返回錯誤。任何想法如何解決這個問題?

call perl.exe Win32SendMail.pl 192.168.101.10 [email protected] [email protected] 
    my_subject email_body.txt 
+0

是什麼出現的代碼在你的問題的第二行('my_subject email_body.txt')實際上在不同的與命令的其餘部分一致,還是僅僅爲了美學? – unclemeat

回答

0

以下是使用VBS從批處理文件發送電子郵件的本機方法。

它可以在命令行中被稱爲太 - 看到裏面的腳本註釋:

:: email.bat ::::::::::::::::::::::::::::::::::::::::::::::::::::: 
@echo off 
setlocal 

:: use these settings to send from a gmail account 
:: set port=465 and set SSL=True 

:: use these settings for standard email SMTP port and no encryption 
:: set port=25 and set SSL=False 

:: Change these following items to use the same variables all the time 
:: or use the command line to pass all the variables 

set Port=25 
set SSL=False 
set From="[email protected]" 
set To="[email protected]" 
set Subject="Subject line" 
set Body="Email Body in one line" 
set SMTPServer="mailservername.myemailserver.com" 
set User="username" 
set Pass="password" 
set fileattach="d:\myfolder\file.txt" 


:: This section sets the command line arguments 
:: use this format: CALL email.bat "[email protected]" "[email protected]" "Subject line" "Email Body in one line" "smtp.gmail.com" "[email protected]" "password" "d:\folder\filename to attach.txt" 


if "%~7" NEQ "" (
set From="%~1" 
set To="%~2" 
set Subject="%~3" 
set Body="%~4" 
set SMTPServer="%~5" 
set User="%~6" 
set Pass="%~7" 
set fileattach="%~8" 
) 

set "vbsfile=%temp%\email-bat.vbs" 
del "%vbsfile%" 2>nul 
set cdoSchema=http://schemas.microsoft.com/cdo/configuration 
echo >>"%vbsfile%" Set objArgs  = WScript.Arguments 
echo >>"%vbsfile%" Set objEmail  = CreateObject("CDO.Message") 
echo >>"%vbsfile%" objEmail.From  = %From% 
echo >>"%vbsfile%" objEmail.To  = %To% 
echo >>"%vbsfile%" objEmail.Subject = %Subject% 
echo >>"%vbsfile%" objEmail.Textbody = %body% 
if exist %fileattach% echo >>"%vbsfile%" objEmail.AddAttachment %fileattach% 
echo >>"%vbsfile%" with objEmail.Configuration.Fields 
echo >>"%vbsfile%" .Item ("%cdoSchema%/sendusing")  = 2 ' not local, smtp 
echo >>"%vbsfile%" .Item ("%cdoSchema%/smtpserver")  = %SMTPServer% 
echo >>"%vbsfile%" .Item ("%cdoSchema%/smtpserverport") = %port% 
echo >>"%vbsfile%" .Item ("%cdoSchema%/smtpauthenticate") = 1 ' cdobasic 
echo >>"%vbsfile%" .Item ("%cdoSchema%/sendusername")  = %user% 
echo >>"%vbsfile%" .Item ("%cdoSchema%/sendpassword")  = %pass% 
echo >>"%vbsfile%" .Item ("%cdoSchema%/smtpusessl")  = %SSL% 
echo >>"%vbsfile%" .Item ("%cdoSchema%/smtpconnectiontimeout") = 30 
echo >>"%vbsfile%" .Update 
echo >>"%vbsfile%" end with 
echo >>"%vbsfile%" objEmail.Send 

cscript.exe /nologo "%vbsfile%" 
echo email sent (if variables were correct) 
del "%vbsfile%" 2>nul 
goto :EOF