我有一堆文件在“C:\ Email”文件夹中更新。这些是每周创建的PDF文件。这可以从50到500或更多文件的任何地方编号。文件名是随机的。
我需要将这些文件分别发送到三个地址,比如@ a.com,b @ b.com和c@c.com。我不能一次性发送所有文件,他们需要单独发送。主题将是文件的名称,正文将保持不变 - “请查找附件。感谢和问候,ABC”。
我一直在使用一些excel工作表的组合,我将所有必需的参数连接起来,使用命令行语法(即“C:\ Program Files \ Microsoft Office \ Office12”)为批处理文件提供文件名\ Outlook.exe / c ipm.note / m“a @ a.com,b @ b.com,c @ c.com& subject =<>& body =请找到附件。谢谢和问候,ABC“
这是我今天提出的最简单的事情,但它很麻烦,因为它打开了许多外观新消息窗口,因为有文件,这可能会让人厌烦。其次,这不允许我自动发送消息。
希望有人可以提出一个VBS / Windows脚本/ VBA代码来实现自动化。
答案 0 :(得分:0)
您可以尝试使用CDO.Message对象从VBScript发送电子邮件。以下是http://www.paulsadowski.com/wsh/cdo.htm
的示例Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Example CDO Message"
objMessage.From = "me@my.com"
objMessage.To = "test@paulsadowski.com"
objMessage.TextBody = "This is some sample message text."
objMessage.AddAttachment "c:\temp\readme.txt"
objMessage.Send
您可以将其置于循环结构中以发送文件夹
中的每个文件答案 1 :(得分:0)
使用Dir循环抓取每个PDF文件并创建新电子邮件。像这样:
Const SOURCE_FOLDER As String = "C:\Email\"
Const RECIP_A As String = "a@a.com"
Const RECIP_B As String = "b@b.com"
Const RECIP_C As String = "c@c.com"
Const EMAIL_BODY As String = "Please find attached file. Thanks and Regards, ABC"
Sub SendPDFs()
On Error GoTo ErrorHandler
Dim fileName As String
fileName = Dir(SOURCE_FOLDER)
Do While Len(fileName) > 0
Call CreateEmail(SOURCE_FOLDER & fileName)
Dir (SOURCE_FOLDER)
Loop
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.number & " - " & Err.description
Resume ProgramExit
End Sub
Function CreateEmail(fileName As String)
Dim olApp As Outlook.Application
Dim msg As Outlook.MailItem
' create email
Set olApp = Outlook.Application
Set msg = olApp.createitem(olMailItem)
' set properties
With msg
.Body = EMAIL_BODY
.Recipients.Add (RECIP_A)
.Recipients.Add (RECIP_B)
.Recipients.Add (RECIP_C)
.Attachments.Add fileName
.Send
End With
End Function
这会将Email文件夹中的每个文件发送给每个收件人,但不会为每个PDF发送三个单独的电子邮件。如果您需要具体,可以更改代码。
答案 2 :(得分:0)
替换代码
Do While Len(fileName) > 0
Call CreateEmail(SOURCE_FOLDER & fileName)
Dir (SOURCE_FOLDER)
Loop
与
Do While Len(fileName) > 0
Call CreateEmail(SOURCE_FOLDER & fileName)
filename = Dir
Loop