Partage
  • Partager sur Facebook
  • Partager sur Twitter

VBScript - Envoi de mail

Problème avec une variable

Sujet résolu
    15 juillet 2011 à 15:13:30

    Bonjour,

    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:

    From:adresse@domaine
    To:adresse@domaine
    Subject:Test
    Bonjour,
     
    Test.
     
    Cordialement.
    


    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.
    • Partager sur Facebook
    • Partager sur Twitter

    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.
    • Editeur
    • Markdown