Vbscript 发送带有附件的电子邮件通知

Vbscript 发送带有附件的电子邮件通知,vbscript,Vbscript,我正在编写一个VBScript,以便在文件到达测试文件夹时发送电子邮件通知。我想将该文件附加到我的电子邮件中。文件名不是常量。每次文件以不同的名称到达时 下面是我的代码: Const PATH = "F:\Test" Dim fso: Set fso = CreateObject("Scripting.FileSystemObject") Dim folder: Set folder = fso.GetFolder(PATH) If folder.Files.Count <> 0

我正在编写一个VBScript,以便在文件到达测试文件夹时发送电子邮件通知。我想将该文件附加到我的电子邮件中。文件名不是常量。每次文件以不同的名称到达时

下面是我的代码:

Const PATH = "F:\Test"
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder: Set folder = fso.GetFolder(PATH)

If folder.Files.Count <> 0 Then
  strSMTPFrom = "errorfile@test.com"
  strSMTPTo = "test@test.com"
  strSMTPRelay = "127.0.0.1"
  strTextBody = "The attached file arrived in Test folder"
  strSubject = "File arrived in Test folder"
  strAttachment = 

  Set oMessage = CreateObject("CDO.Message")
  oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
  oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPRelay
  oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
  oMessage.Configuration.Fields.Update
  oMessage.Subject = strSubject
  oMessage.From = strSMTPFrom
  oMessage.To = strSMTPTo
  oMessage.TextBody = strTextBody
  oMessage.AddAttachment strAttachment
  oMessage.Send
End If
Const PATH=“F:\Test”
Dim fso:Set fso=CreateObject(“Scripting.FileSystemObject”)
Dim文件夹:Set folder=fso.GetFolder(路径)
如果folder.Files.Count为0,则
strSMTPFrom=”errorfile@test.com"
strSMTPTo=”test@test.com"
strSMTPRelay=“127.0.0.1”
strTextBody=“附件已到达测试文件夹”
strSubject=“文件已到达测试文件夹”
地层厚度=
设置oMessage=CreateObject(“CDO.Message”)
oMessage.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
oMessage.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserver“”=strSMTPRelay
oMessage.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
oMessage.Configuration.Fields.Update
oMessage.Subject=strSubject
oMessage.From=strSMTPFrom
oMessage.To=strsmtpot
oMessage.TextBody=strTextBody
oMessage.AddAttachment连接
oMessage.发送
如果结束

要查找文件夹中的最新文件,请使用以下代码:

Const PATH = "F:\Test"
dim fso: set fso = CreateObject("Scripting.FileSystemObject")
dim myFolder: set myFolder = fso.getFolder(PATH)
dim myFile
dim recentFile  

For Each myFile in myFolder.Files
  If (isempty(recentFile)) Then
    Set recentFile = myFile
  ElseIf (myFile.DateLastModified > recentFile.DateLastModified) Then
    Set recentFile = myFile
  End If
Next
然后只需使用其路径来附加文件

strAttachment = recentFile.path

我想说,你真正想要的是一个文件系统监视器。大概是这样的:

Sub SendNotification(filename)
  'your mail sending code goes here
End Sub

Function CreateMonitor(path)
  Set wmi = GetObject("winmgmts://./root/cimv2")
  Set fso = CreateObject("Scripting.FileSystemObject")

  path = Split(fso.GetAbsolutePathName(path), ":")
  drv  = path(0) & ":"
  dir  = Replace(path(1), "\", "\\")
  If Right(dir, 2) <> "\\" Then dir = dir & "\\"

  query = "SELECT * FROM __InstanceOperationEvent" & _
          " WITHIN 1" _
          " WHERE Targetinstance ISA 'CIM_DataFile'" & _
          " AND TargetInstance.Drive=""" & drv & """" & _
          " AND TargetInstance.Path=""" & dir & """"
  Set CreateMonitor = wmi.ExecNotificationQuery(query)
End Function

Set monitor = CreateMonitor("F:\Test")
Do
  Set evt = monitor.NextEvent()
  If evt.Path_.Class = "__InstanceCreationEvent" Then
    SendNotification evt.TargetInstance.Name
  End If
Loop
子发送通知(文件名)
'您的邮件发送代码在这里
端接头
函数CreateMonitor(路径)
设置wmi=GetObject(“winmgmts://./root/cimv2")
设置fso=CreateObject(“Scripting.FileSystemObject”)
路径=拆分(fso.GetAbsolutePathName(路径),“:”)
drv=路径(0)和“:”
dir=Replace(路径(1),“\”,“\”)
如果右(dir,2)“\\”则dir=dir&“\\”
query=“选择*FROM\uuu InstanceOperationEvent”&_
“1以内”_
“其中Targetinstance ISA‘CIM_数据文件’”&_
“和TargetInstance.Drive=”“&drv&”_
“和TargetInstance.Path=”“&dir&”“”
设置CreateMonitor=wmi.ExecutionQuery(查询)
端函数
设置监视器=创建监视器(“F:\Test”)
做
设置evt=monitor.NextEvent()
如果evt.Path\uu.Class=“\uuu InstanceCreationEvent”,则
SendNotification evt.TargetInstance.Name
如果结束
环

TargetInstance
对象的
Name
属性包含新文件的完整路径。将您的邮件发送代码放入
发送通知
功能,并将其附加到邮件中。

另外,您的问题是什么?您是否不确定如何附加文件?剩下的代码可以工作吗?你收到错误信息了吗?你试过附加文件的方法吗?我想在文件夹里附加文件。试过它不起作用了吗?这次起作用了吗?优素福,社区也是,不是免费的个人助理。如果答案确实对你有帮助,请不要消失。把那个答案标为答案。这是公平的。这也适用于您之前的所有问题。@优素福我已经更改了检查recentFile变量中值的方法;现在试试看它是否有效