2011-04-15 80 views
1

我有一堆文件在文件夹“C:\ Email”中得到更新。这些是每周创建的PDF文件。这可以从50到500个或更多文件的任何位置编号。文件名是随机的。发送单个电子邮件到预定义的一组文件夹中的所有文件

我需要将这些文件分别发送到三个地址,即@ a.com,b @ b.com和[email protected]。我无法一次发送所有文件,他们需要单独进行。该主题将是文件的名称,并且主体将保持不变 - “请查找附件。谢谢并问候,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 =请查找附件。感谢和问候,美国广播公司“

这是我今天提出的最简单的事情,但它很繁琐,因为它打开了许多新的消息窗口,因为有文件,这可以让人讨厌。我自动发送消息。

希望有人能拿出一个VBS/Windows脚本/ VBA代码自动相同。

回答

0

使用Dir循环来抓取每个PDF文件并创建一封新电子邮件。类似这样的:

Const SOURCE_FOLDER As String = "C:\Email\" 
Const RECIP_A As String = "[email protected]" 
Const RECIP_B As String = "[email protected]" 
Const RECIP_C As String = "[email protected]" 
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发送三个单独的电子邮件。如果您特别需要,可以更改代码。

+0

非常感谢JP。代码似乎工作正常,但只接受循环中目录中文件列表中的第一个文件。因此,程序进入无休止的循环尝试重复发送第一个文件。 – Ravi 2011-04-27 14:11:42

+0

我写了代码,但没有测试它。看起来像你在下面修复它! – JimmyPena 2011-05-03 19:44:41

0

您可以尝试使用一个CDO.Message对象从VBScript发送电子邮件。这是一个取自http://www.paulsadowski.com/wsh/cdo.htm的示例

Set objMessage = CreateObject("CDO.Message") 
objMessage.Subject = "Example CDO Message" 
objMessage.From = "[email protected]" 
objMessage.To = "[email protected]" 
objMessage.TextBody = "This is some sample message text." 
objMessage.AddAttachment "c:\temp\readme.txt" 
objMessage.Send 

您可以将其放入循环结构以发送文件夹中的每个文件

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 
相关问题