2011-04-15 1 views
1

J'ai un tas de fichiers qui sont mis à jour dans le dossier "C: \ Email". Ce sont des fichiers PDF créés chaque semaine. Cela pourrait être compris entre 50 et 500 fichiers ou plus. Les noms de fichiers sont aléatoires.Envoyer des emails individuels à un ensemble prédéfini de personnes avec tous les fichiers dans un dossier

Je dois envoyer ces fichiers individuellement à trois adresses, par exemple @ a.com, b @ b.com et [email protected] Je ne peux pas envoyer tous les fichiers en une fois, ils doivent aller individuellement. Le sujet sera le nom du fichier et le corps restera le même - "S'il vous plaît trouver le fichier joint Merci et Cordialement, ABC". J'ai utilisé une combinaison de quelques feuilles excel où je concatanate tous les paramètres requis pour trouver les noms de fichiers pour un fichier batch en utilisant la syntaxe de la ligne de commande à savoir "C: \ Program Files \ Microsoft Office \ Office12 \ Outlook.exe/c ipm.note/m "a @ a.com, b @ b.com, c @ c.com & sujet = <> & body = Veuillez trouver le fichier joint. Merci et salutations, ABC "

c'est la chose la plus simple que j'ai trouvé aujourd'hui, mais il est lourd car il ouvre autant de nouvelles fenêtres de messages que de fichiers, ce qui peut devenir ennuyeux. envoyez-moi le message automatiquement.

espoir quelqu'un peut venir avec un script VBS/Windows/code VBA pour automatiser la même.

Répondre

0

Utilisez une boucle Dir pour récupérer chaque fichier PDF et créer un nouveau courrier électronique. Quelque chose comme ceci:

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 

Cela envoie chaque fichier dans le dossier de courrier à chaque destinataire, mais il n'envoie trois e-mails séparés pour chaque PDF. Si vous en avez besoin spécifiquement, le code peut être modifié.

+0

Merci beaucoup JP. Le code semble fonctionner correctement mais n'accepte que le premier fichier de la liste des fichiers dans le répertoire de la boucle. D'où le programme va dans une boucle sans fin d'essayer d'envoyer le premier fichier à plusieurs reprises. – Ravi

+0

J'ai écrit le code mais je ne l'ai pas testé. On dirait que vous l'avez fixé ci-dessous! – JimmyPena

0

Vous pouvez envoyer des messages électroniques à partir de VBScript à l'aide d'un objet CDO.Message. Voici un exemple tiré de 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 

Vous placez ceci dans une structure de boucle pour envoyer chaque fichier dans le dossier

0

Remplacez le code

Do While Len(fileName) > 0  
Call CreateEmail(SOURCE_FOLDER & fileName)  
Dir (SOURCE_FOLDER) 
Loop 

avec

Do While Len(fileName) > 0  
Call CreateEmail(SOURCE_FOLDER & fileName)  
filename = Dir 
Loop 
Questions connexes