J'ai un script en VB qui me permet d'envoyer des mails automatiquement à partir de ficher mail(texte) se trouvant dans un répertoire précis. Je précise que je suis débutant dans ce langage et que je n'ai pas écrit le script ci-dessous tout seul.
Mes fichiers mails, où je récupère mes variables sont tous de la même forme:
Au total j'ai 4 variables à récupérer, le destinataire "vDest", l'expéditeur "vExpediteur", le sujet "vSujet" et le message "vMsg". Donc j'ai une fonction qui me récupère, dans un tableau dynamique, mes 3 premières valeurs et pour la dernière (le problème est ici )je récupère bien la valeur, mais je ne sais pas comment l'intégrer dans un tableau.
Voici le script:
'----------------------------------------------------'
'Envoi de fichiers quotidien en automatique par smtp '
'----------------------------------------------------'
' Répertoire où sont déposés les fichiers mails
Dim sRep
sRep = "C:\Users\script\Documents"
'''''' Ne rien modifier ensuite
Dim objFSO, objReadFile, contents, Sh, vDest, vDomain, vExpediteur, vExecution, vSujet, vMsg, vPJ
' Tableau dynamique vide
Dim aData()
Const ForReading = 1
Set oFso = CreateObject("Scripting.FileSystemObject")
' Fonction qui découpe les parties d'un fichier
Function ReadData(sRep)
Dim oFiles,oFile,oTFile,i,k,aBuffer
Set oFiles = oFso.GetFolder(sRep).Files
ReDim aData(oFiles.Count - 1,4)
i = 0
For Each oFile In oFiles
Set oTFile = oFso.OpenTextFile(oFile.Path, ForReading)
s = ""
For k = 0 to 2
aBuffer = Split(oTFile.ReadLine, ":")
aData(i,k) = aBuffer(1)
Next
i = i + 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFich = fso.OpenTextFile(oFile.Path, 1,True)
tx = oFich.ReadAll
oFich.Close ' On ferme le fichier après en avoir lu le contenu
tb = Split(tx,VbNewline)
For h = 3 To UBound(tb) ' On commence à 3 qui correspond à la 4ème ligne
' puisque le premier index du tableau (tb) est 0(zéro)
s = s+tb(h)+VbNewline
Next
'Affichage du résultat
MsgBox s
' Nettoyage
Set oFich = Nothing
Set fso = Nothing
Next
End Function
ReadData(sRep)
For j = 0 to UBound(aData)
'MsgBox aData(j,0) & " " & aData(j,1) & " " & aData(j,2) & " " & aData(j,3)
' Assignation des variables
vExpediteur = aData(j,0)
vDest = aData(j,1)
vSujet = aData(j,2)
' Création de l'email à envoyer
Set objMessage = CreateObject("CDO.Message")
objMessage.To = vExpediteur
objMessage.From = vDest
objMessage.Subject = vSujet
objMessage.TextBody = vMsg
' Protocole d’envoi du mail ici 2 correspond au SMTP
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
' Nom du serveur SMTP
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.domaine"
' Port serveur SMTP
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
On Error Resume Next
' Envoi du mail
objMessage.Send
If Err.Number <> 0 Then
'Msgbox "le mail n'a pas pu être envoyé !",16,"Erreur d'envoi du Mail"
'MsgBox Err.Description,16,"Erreur d'envoi du Mail"
Else
'Msgbox "Le mail a été bien envoyé !",64,"Information"
End If
' True : pour copier en "écrasant" la destination si déjà présente.
Const OverWriteFiles = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Copie des mails: répertoire source et destination
objFSO.CopyFile "C:\Users\script\Documents\*" , "C:\Users\script\sauv\" , OverWriteFiles
Next
Je vois que je récupère bien mes valeurs avec le "MsgBox s". Le problème est que j'ai deux boucles pour récupérer les valeurs, une qui prend ce qui se trouve après les ":" sur les 3 premières lignes et l'autre s'occupe de tout ce qui se trouve après peu importe la taille.
Mais comment stocker la variable "s", sachant que la variable peut contenir 3 voir 10 lignes de texte, dans un tableau afin de l'utiliser pour l'envoi de mail.
Désolé pour la longueur du message, mais si quelqu'un a un conseil à me donner, je suis preneur .
Merci d'avance pour votre aide.
VBScript - Envoi de mail
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.