Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 需要使用批处理文件发送邮件_Batch File - Fatal编程技术网

Batch file 需要使用批处理文件发送邮件

Batch file 需要使用批处理文件发送邮件,batch-file,Batch File,我有下面的代码,给我2个值 第一个是基于某个ext文件(test.mtc)最近修改的目录 第二种方法是获取该(test.mtc)文件的名称并添加域以发送邮件。例如test.companyname.com 我能够通过下面的批处理文件实现这一点,但现在我需要使用此批处理文件的输出发送邮件。使用blat是否可行 下面是我在批处理文件中编写的脚本 Output.bat cd C:\Desktop\Foldername for /f "tokens=*" %%a in ('dir /b /a-d *.mt

我有下面的代码,给我2个值

  • 第一个是基于某个ext文件(test.mtc)最近修改的目录
  • 第二种方法是获取该(test.mtc)文件的名称并添加域以发送邮件。例如test.companyname.com
  • 我能够通过下面的批处理文件实现这一点,但现在我需要使用此批处理文件的输出发送邮件。使用blat是否可行

    下面是我在批处理文件中编写的脚本 Output.bat

    cd C:\Desktop\Foldername
    for /f "tokens=*" %%a in ('dir /b /a-d *.mtc') do echo User=%%~na@companyname.com >> Output.txt
    for /f "delims=" %%x in ('dir /a:d /b /o:d') do set recent=%%x
    echo Path=\\Mycomputername\Desktop\FolderName\%recent% >> Output.txt
    
    我需要使用这些值并使用批处理文件发送邮件。像下面这样
    --发送至主题测试完整正文

    您可以使用本机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="myemail@myemailserver.com"
    set To="recipient@server.com"
    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 "myname@gmail.com" "RecipientEmailAddress@server.com" "Subject line" "Email Body in one line" "smtp.gmail.com"  "myname@gmail.com" "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
    

    如前所述,您可以使用Blat。例如:

    set eMailTo=someone1@something.com,someone2@something.com
    set eMailFrom=randomName
    set subj=-s "Email subject"
    set eMailBody=*:\******\log.txt
    set server=-server SERVERNAME
    blat %eMailBody% -to %eMailTo% -f %eMailFrom% %subj% %server%
    

    非常感谢你的剧本。可以使用blat实用程序发送邮件吗?是的。Blat应该和Sendmail实用程序一样工作正常。