Automatisation d'envoi de mail avec pièce jointe

sylv1g Messages postés 5 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 3 septembre 2009 - 3 sept. 2009 à 11:55
sylv1g Messages postés 5 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 3 septembre 2009 - 3 sept. 2009 à 23:35
Hello tous,

je ne connais quasiment rien à la programmation, mais je cherche néanmoins avec acharnement un moyen d'automatiser l'envoi d'un email avec pièce-jointe (pour l'envoi de rapports d'activité.)

Après de nombreuses recherches et puisqu'il ne semble pas exister de programmes tout moulés pour ça, je suis tombé sur le script suivant, et j'ai l'impression qu'il ne manque pas grand chose pour qu'il fonctionne (ben oui, il me colle un message m'avertissant que mon mail n'a pas pu être expédié, c'est déjà ça...) :

On Error Resume Next
With CreateObject("CDO.Message" )
If Err Then
MsgBox "CDO non installé"
Else
.From="expéditeur"
.To="destinataire"
.Subject="Rapport"
.TextBody="Rapport"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing" ) = 2
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver" ) = "smtp.serveur.com"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) = 25
.Configuration.Fields.Update
.AddAttachment("C:\chemin-complet-du-fichier.ext" )
.Send
If Err Then MsgBox "Le message n'a pas pu être expédié."
End If
On Error GoTo 0
End With


Comme indiqué quelque part (?), j'ai donc enregistré ce script au format .txt avec le bloc-note, puis modifié l'extension en .vbs, mais ça ne fonctionne pas malgré mes multiples essais de configuration (adresses email, serveur smtp, port, etc.)
Auriez-vous une idée d'où le souci pourrait provenir ? Fonctionne-t-il sous Vista ? Faut-il un client de messagerie particulier pour le faire fonctionner ? (A la base, je l'ai trouvé sur une FAQ Outlook Express, et je crois que j'en ai trouvé une version ici-même, quelque part, aussi...)

Un grand merci d'avance !

6 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 sept. 2009 à 14:45
 Bonjour,

Ci-dessous un script de prod (w2000 et XP).
Constantes et variables à modifier:
- Server;
- MyFile;
- Destinataires;
- Emetteur;
- strSmartHost.



Option Explicit

Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Server : Server = "\\server\arborescence"
Dim MyFile : MyFile = "PRO-6AL.CSV"

Do
If Fso.FileExists(Server & MyFile) Then
Exit Do
End If
WScript.Sleep(60000)
Loop

'------------------
'Paramètres du Mail
'------------------

Const Destinataires = "titi@client.com;toto@client.fr"
Const Emetteur = "moi_ou_un_autre@boulot.fr"
Const cdoSendUsingPort = 2
'-------------------------------------------
'Adresse IP ou smtp du serveur de messagerie
'-------------------------------------------
Const strSmartHost = "smtp.wanadoo.fr"

'------------------------
'Déclaration de variables
'------------------------
Dim Corps, Sujet
'-------------------------------------------------------
'Envoi du mail avec pièce jointe + contenu de ce fichier
'-------------------------------------------------------
Sujet = "client: ............"
Corps = "Bonjour," & vbCrLf & vbCrLf & "Ci-joint ..."

SendMail Sujet, Corps, Server & MyFile

Fso.DeleteFile Server & MyFile, True

Set Fso = Nothing
WScript.Quit
'******************************************************************
'------------------------------
'Envoi du MAIL aux utilisateurs
'------------------------------
Sub SendMail(Sujet, Corps, fic1)
Dim iMsg, iConf
'Create the message object.
Set iMsg = CreateObject("CDO.Message")
'Create the configuration object.
Set iConf = iMsg.Configuration
'Set the fields of the configuration object to send by using SMTP through port 25.
With iConf.Fields
.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmartHost
.Update
End With
'Set the To, From, Subject, and Body properties of the message.
With iMsg
.To = Destinataires
.From = Emetteur
.Subject = Sujet
.TextBody = Corps
.AddAttachment fic1
.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
End Sub



Non testé avec Vista.


jean-marc
0
sylv1g Messages postés 5 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 15:44
Bonjour et merci, je vais tester ça. Concernant Myfile, il suffit de remplacer chaque Myfile par le chemin complet du fichier à joindre ?
0
sylv1g Messages postés 5 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 15:46
Ah non, mea culpa, j'ai compris où il fallait indiquer le chemin du fichier ;-)
0
sylv1g Messages postés 5 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 19:11
Bon, ça n'a pas marché... Mais ça ne veut pas dire que votre script défaille, c'est moi qui suis une bille.
Outre les adresses emails des Destinataires & Emetteur, j'ai remplacé "smtp.wanadoo.fr" par le smtp mon serveur et j'ai remplacé "PRO-6AL.CSV" par le chemin complet du fichier à joindre. Fallait-il modifier quelque chose à "\\server\arborescence" ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 sept. 2009 à 19:42
 Bonsoir,

soit server = "c:" 'le chemin
et MyFile = "monfichier.log"
server & MyFile = "c:\monfichier.log"
ou
il suffit d'enlever la variable server:

Option Explicit

Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
Dim MyFile : MyFile = "c:\PRO-6AL.CSV"

Const Destinataires = "titi@client.com;toto@client.fr"
Const Emetteur = "moi_ou_un_autre@boulot.fr"
Const cdoSendUsingPort = 2
Const strSmartHost = "smtp.wanadoo.fr"

Dim Corps, Sujet
Sujet = "client: ............"
Corps = "Bonjour," & vbCrLf & vbCrLf & "Ci-joint ..."

SendMail Sujet, Corps, MyFile

Set Fso = Nothing

Sub SendMail(Sujet, Corps, fic1)
...
End sub


jean-marc
0
sylv1g Messages postés 5 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 23:35
Si je comprends bien, chez moi ça donne ça :

Option Explicit
Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
Dim MyFile : MyFile = "C:\Users\moi\Desktop\fichier.ext"
Const Destinataires = "lui@gmail.com"
Const Emetteur = "moi@gawab.com"
Const cdoSendUsingPort = 2
Const strSmartHost = "smtp.sfr.fr"
Dim Corps, Sujet
Sujet = "Rapport"
Corps = "Rapport"
SendMail Sujet, Corps, MyFile
Set Fso = Nothing
Sub SendMail(Sujet, Corps, fic1)
End sub

Le problème, c'est qu'il ne se passe rien quand je lance le script, et ça quel que soit le serveur smtp employé...
0
Rejoignez-nous