Vbscript 如何发送包含多个附件的电子邮件

Vbscript 如何发送包含多个附件的电子邮件,vbscript,Vbscript,只要每个文件都存在,这段代码就可以正常工作。 即使缺少文件,发送电子邮件的代码中也缺少什么? 我曾试图找到解决办法,但没有成功 Set fso=CreateObject("Scripting.FileSystemObject") strSMTP="smtp.telenor.no" strSubject="Files form me to you" strSubject="XXXXX" strSubject="XXXX" strBody="XXXXXX" strAttach="File 1.cs

只要每个文件都存在,这段代码就可以正常工作。 即使缺少文件,发送电子邮件的代码中也缺少什么? 我曾试图找到解决办法,但没有成功

Set fso=CreateObject("Scripting.FileSystemObject")

strSMTP="smtp.telenor.no"
strSubject="Files form me to you"
strSubject="XXXXX"
strSubject="XXXX"
strBody="XXXXXX"
strAttach="File 1.csv"
strAttach1="File 2.csv"
strAttach2="File 3.csv"

If fso.FileExists(strAttach) then
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1    ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Update
End With
With iMsg
    Set .Configuration = iConf
    .To = "XXXX"
    .CC = ""
    .BCC = ""
    .From = "XXXX"
    .Subject = strSubject
    .TextBody = strBody
    .AddAttachment strAttach
    .AddAttachment strAttach1
    .AddAttachment strAttach2
    .Send
End With
Set iMsg = Nothing
Set iConf = Nothing
Else
MsgBox "The specified attachment does not exist"
End if

以下内容使用ArrayList保存附件,并将其逐个添加到邮件中,首先检查文件是否存在:

Dim iCounter
Dim sAttachment
Dim objAttachments

Set objAttachments = CreateObject("System.Collections.ArrayList")

objAttachments.Add "File 1.csv"
objAttachments.Add "File 2.csv"
objAttachments.Add "File 3.csv"

Set objFSO = CreateObject("Scripting.FileSystemObject")

strSMTP = "smtp.telenor.no"
strSubject = "Files form me to you"
strSubject = "XXXXX"
strSubject = "XXXX"
strBody = "XXXXXX"

' Create message and configuration
Set objMessage = CreateObject("CDO.Message")
Set objConf = CreateObject("CDO.Configuration")

objConf.Load -1    ' CDO Source Defaults
Set objFields = objConf.Fields

With objFields
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Update
End With

' Initalize message
With objMessage
    Set .Configuration = objConf
    .To = "XXXX"
    .CC = ""
    .BCC = ""
    .From = "XXXX"
    .Subject = strSubject
    .TextBody = strBody
End With

' Add attachments
For iCounter = 1 To objAttachments.Count
    sAttachment = objAttachments.Item(iCounter - 1)
    If objFSO.FileExists(sAttachment) Then objMessage.AddAttachment sAttachment
Next

' Send Message
objMessage.Send

仅检查是否存在
strAttach
。您的代码没有检查
strAttach2
strAttach3
。如果将文件放置在数组中,检查其存在性并将其作为附件添加到
For
语句中,则此代码可能会更干净。(原则:)太好了!如果有机会,请使用答案左侧的灰色复选标记将答案标记为已接受!为什么选择arraylist而不是简单的数组?只是出于好奇。我之所以问这个问题,是因为它引入了对.Net的依赖关系。@ArnovanBoven我试图模仿VB6集合对象的工作方式。一本字典也可以用,这很公平@请注意,公认的答案需要.Net。在VBS中,可以使用
数组
字典
更自然地完成此操作。当然,提供的答案更方便。