【问题标题】:VB script for send mail发送邮件的VB脚本
【发布时间】:2026-02-11 05:20:05
【问题描述】:

我不了解 vb 脚本。所以我在这里问请帮助我... :) 我们有一个备份批处理脚本,它使用 robo copy 将所有数据复制到另一台服务器。 我们安排了那个脚本,但是我们一直都必须去那个服务器并手动检查那个脚本是否运行。 现在我们已经编写了一个 vb 脚本,它将调用该批处理脚本并检查该脚本是否正常运行,如果脚本运行正常,那么邮件将在备份完成时发送,否则备份未完成。 如果您对 vb 脚本有任何想法,请帮助我。

【问题讨论】:

  • 这是一个很棒的链接,提供了很多选项:paulsadowski.com/wsh/cdo.htm
  • 您可以使用Blat.exe 一个很棒的命令行工具来发送电子邮件

标签: email batch-file vbscript


【解决方案1】:

您可以使用 mailsend.exe ,只需将 exe 放在您的脚本文件夹中并在最后将以下代码附加到您的 RoboCopy 脚本中。如果您不想抄送或密送任何人,只需添加 +cc 和 +bcc

输入logs.txt | mailsend.exe -smtp smtp_server_ip_or_FQDN -port 25 -d smtp.mail.com -t xyz@mail.com -f seding_from@mail.com -sub "Whatever Subject" -user mail_username@mail.com -pass mailpassword -auth -cc xyz@mail.com -bcc xyz@mail.com

【讨论】:

    【解决方案2】:

    这是一个使用 VBS 发送电子邮件的批处理文件。

    阅读脚本中的 cmets 以了解如何对其进行测试。

    :: 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
    

    【讨论】: