URGENT PROJET: Compression d'un dossier et envoie de l'archive par mail. En auto [Résolu]

neocam
Messages postés
52
Date d'inscription
mercredi 28 juin 2006
Dernière intervention
1 mars 2010
- 26 janv. 2009 à 10:46 - Dernière réponse : cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 7 févr. 2009 à 22:04
Bonjour,
Je suis débutant dans l'utilisation du vbscript

J'ai déjà fouiner un peu partout et tout ce que je récupère ne fonctionne pas ...
c'est un projet trés important pour moi... vis a vis de ma nouvelle entreprise...

Donc ma question et simple, si quelque brave personne pouvait m'aider étape par étape serait exellent...

Ma premiere étape et d'arriver a lister le contenu d'un repertoire et de la ziper
Seconde insérer le zip en piece jointe dans un mail et de l'envoyer...

J'ai vraiment fouiller pendant 3 semaine il y a plein de source sur ca mais je n'arrive pas a les faire fonctionner, alors la meilleur solution et de tout reprendre moi meme... j'ai deja la tete dans les tuto... donc promi je fait tout ce que je peux ^^

Une fois fini je me ferais un plaisir de partager cette source car j'en ai trouvé vraiment aucune qui répond a mes attente, car pour résumer ce sera un script qui tourne en automatique et travail en arriére plan.

Merci par avance
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 26 janv. 2009 à 19:43
3
Merci
Pour la compression, il te suffit d'appeler 7z (téléchargeable ici) en lui donnant les arguments corrects.
Pour l'envoi par mail, fais-le via CDONTS (présent sous Windows depuis Windows 2000 si je ne me trompe pas).

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
sturtrid
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Dernière intervention
13 juillet 2012
- 27 janv. 2009 à 01:57
3
Merci
Bonsoir Neocam !

Juste une petite question qui me vient...
Un script (ici vbs) doit être lancé manuellement pour qu'il s'exécute, non ?
Car si c'est le cas, je ne vois pas comment il fonctionnerait automatiquement en tâche de fond... Je veux dire par là, que tu auras besoin de le relancer à chaque fois. Par contre en faisant un exe, celui-ci pourrait réellement tourner en tâche de fond et procéder aux actions lorsqu'il le faut...
Je demande confirmation (pour le scripte en tâche de fond)...

Pour ce qui est du code que tu demandes :

  - Pour énumérer les fichiers d'un répertoire, tu peux partir de ça :
  strComputer = "."
 Set objWMIService = GetObject("winmgmts:" & _
 "{impersonationLevel=impersonate}!\" & _
 strComputer & "\root\cimv2")
 Set colFiles = objWMIService.ExecQuery _
 ("Select * from CIM_DataFile where Path = 'Ton dossier'")
 For Each objFile In colFiles
     Wscript.Echo objFile.Name
 Next

  - Pour la compression :
  Comme le proposait Ghuysmans utilise 7zip, mais sa version en ligne de commande "7za"
  est suffisante pour toi, sans installation et plus légère ! Tu peux la télécharger =350&width= 300&group_id=14481&use_mirror=surfnet&filesize=&filename=7za464.zip&abmode= ici

  Voici deux lignes de commandes que tu peux utiliser (au choix) :
  7za.exe a "NomArchive.7z" "PathDuDossier"
 7za.exe a -t7z "NomArchive.7z" "PathDuDossier" -mx=9

  - Pour l'envoi de ton archive par e-mail :
 
With CreateObject("CDO.Message")

     .From = "TonAdresse@domaine.fr"
     .To=  "AdresseDestinataire@domaine.fr"
     .Subject= "Sujet du mail"
     .TextBody= "Texte du mail"
     'Path de l'archive à envoyer en pièce jointe :
     .AddAttachment("C:\TonArchive.7z")

     .Configuration.Fields.Item( _
     "http://schemas.microsoft.com/cdo/configuration/sendusing")=  2
     'Adresse de ton serveur SMTP :
     .Configuration.Fields.Item( _
     "http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
     "TonServeurSMTP"

     ' Voici quelque adresses de serveurs SMTP...
     ' - 9Online :       smtp.9online.fr
     ' - Alice :         smtp.alice.fr , smtp.aliceadsl.fr
     ' - AOL :           smtp.fr.aol.com
     ' - Caramail :      smtp.lycos.co.uk
     ' - Cegetel :       smtp.cegetel.net
     ' - Club-Internet : mail.club-internet.fr
     ' - DartyBox :      smtpauth.dbmail.com
     ' - Free :          smtp.free.fr
     ' - FreeSurf :      smtp.freesurf.fr
     ' - Gmail :         smtp.gmail.com
     ' - IFrance :       smtp.ifrance.com
     ' - Laposte :       smtp.laposte.net
     ' - Neuf :          smtp.neuf.fr
     ' - Noos :          smtp.noos.fr
     ' - Orange :        smtp.orange.fr
     ' - Tele2 :         smtp.tele2.fr
     ' - Tiscali :       smtp.tiscali.fr
     ' - Wanadoo :       smtp.wanadoo.fr

     'Port d'envoi (en général c'est le port 25) :
     .Configuration.Fields.Item( _
     "http://schemas.microsoft.com/cdo/configuration"& _
     "/smtpserverport")=25
     .Configuration.Fields.Update

     On Error Resume Next
     .Send

     'Affiche le resultat de l'opération, mais si tu veux que tout
     'soit silencieux enlève ce bloc If...
     If Err Then
         MsgBox "Votre message n'a pas pu être expédié.", _
         VbInformation + VbOkOnly + VbApplicationModal + 0,"Info"
     Else
         MsgBox "Votre mail a été envoyé avec succès !", _
         VbInformation + VbOkOnly + VbApplicationModal + 0,"Info"
     End If

End With

Voilà, je pense que cela est un bon point de départ, presque tout t'est donné !
Bonne prog ++

Merci sturtrid 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de sturtrid
Meilleure réponse
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 28 janv. 2009 à 19:30
3
Merci
Reçois-tu une erreur ? Est-ce l'anti-spam qui massacre ton message ?

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
sturtrid
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Dernière intervention
13 juillet 2012
- 1 févr. 2009 à 22:51
3
Merci
Re-Salut Neocam !

Bah alors ça marche pô pour le mail...?

J'ai regardé ton bout de code et j'ai noté quelque chose qui me parait étrange, l'adresse de ton serveur SMTP... Je crois que tu as mis ton IP LAN (Je suis pas connaisseur à 100% sur les config de ce type ainsi que les possibilités offertes, mais je ne pense pas que cela soit une valeur attendue, si ?). Si tu penses que cela puisse être la cause, tente de mettre l'adresse du serveur SMTP de ton FAI (je t'ai donné une liste des adresses de serveurs SMTP...)

- Par exemple si ton FAI est Wanadoo :

'Nom du serveur SMTP

objMail.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.wanadoo.fr"

Sinon vérifie que ton FireWall bloque pas Wscript ou Cscript ou le port 25 pour tous les prog (Cette dernière m'étonnerais un peu quand même !)

Tiens nous au courant !
Bonne prog
++

 

Merci sturtrid 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de sturtrid
Meilleure réponse
sturtrid
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Dernière intervention
13 juillet 2012
- 1 févr. 2009 à 23:00
3
Merci
Re...    Juste une petite précision.

Pour vérifier l'état de ta commande (si cela a fonctionné ou pas), je t'avais mis un bloc If facultatif dans le code d'envoi qui se chargeait justement de cette tâche. Tu peux donc essayer de le remettre pour voir...


'Affiche le resultat de l'opération, mais si tu veux que tout




soit silencieux enlève ce bloc If...






If Err Then
    MsgBox "Votre message n'a pas pu être expédié.", _
    VbInformation



+



VbOkOnly + VbApplicationModal + 0,"Info"
Else
    MsgBox "Votre mail a été envoyé avec succès !", _
    VbInformation + VbOkOnly + VbApplicationModal + 0,"Info"
End If

Voilà c'était juste pour info...
++

Merci sturtrid 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de sturtrid
neocam
Messages postés
52
Date d'inscription
mercredi 28 juin 2006
Dernière intervention
1 mars 2010
- 28 janv. 2009 à 11:39
0
Merci
Merci beaucoup pour cette aide.

Oui je souhaité le faire tourner automatiquement sur un serveur, je comptai mettre mon script dans le planificateur des taches maintenant si la boite de dialogue s'affiche ce n'était pas exceptionnellement grave, mais c'est sur après lecture de ton idée ca serait peut etre plus performant de le faire tourner en tache de fond...
Donc je vais me tourner vers ton code mais bon mon code suivant promet de bientôt aboutir alors j'aimerais le terminer si c'est possible avec votre aide...

Je disais de mon coté j'ai programmé un code qui permet de zipper un dossier (mais il ne faut pas que le dossier contienne des dossiers vides) vers une archive.zip (il faut que l'archive sot déjà créé a l'avance)
Et de l'envoyer en mail grâce au serveur exchange...
Mais l'envoie de mail ne fonctionne pas....

Mon code :
Option Explicit

Const ForReading 1, ForWriting 2, ForAppending = 8

Dim Source, Destination, MyHex, MyBinary, i
Dim oShell, oApp, oFolder, oCTF, oFile
Dim oFileSys
Dim objMail

Source = "C:\Temp"
Destination = "C:\maSauvegarde.zip"

MyHex = _
Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

For i = 0 To UBound(MyHex)
    MyBinary = MyBinary & Chr(MyHex(i))
Next

Set oShell = CreateObject("WScript.Shell")
Set oFileSys = CreateObject("Scripting.FileSystemObject")

'Creation du zip
Set oCTF = oFileSys.CreateTextFile(Destination, True)
oCTF.Write MyBinary
oCTF.Close
Set oCTF = Nothing

Set oApp = CreateObject("Shell.Application")

Set oFolder = oApp.NameSpace(Source)



If Not oFolder Is Nothing Then _
    oApp.NameSpace(Destination).CopyHere oFolder.Items

wScript.Sleep 5000

Set oFile = Nothing

//Partie mail qui ne foctionne pas
Set objMail = CreateObject("CDO.Message") 

objMail.Subject = "Projet envoi de mail"
objMail.Sender = "csauvage@leader.com"
objMail.To = "csauvage@leader.com"
objMail.TextBody = "Projet envoi de mail"
objMail.addattachment "c:\maSauvegarde.zip"



'Nom du serveur SMTP 
objMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.1.57"

objMail.Send 

Commenter la réponse de neocam
neocam
Messages postés
52
Date d'inscription
mercredi 28 juin 2006
Dernière intervention
1 mars 2010
- 29 janv. 2009 à 09:48
0
Merci
A je sais pas la tu me pose une colle ....

Mais j'avous avoir la net impression que le mail part pas, je n'ai pas de message d'erreur mais quant j'essaye de temporiser le code de cette manière.

wScript.echo "test0"
wScript.Sleep 5000
'Nom du serveur SMTP
objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.1.57"
wScript.echo "test1"
wScript.Sleep 5000
objMail.Send
wScript.echo "test2"
wScript.Sleep 5000

Et je ne vois pas test2.... un message apparait mais disparait trop vite ensuite...
Commenter la réponse de neocam
neocam
Messages postés
52
Date d'inscription
mercredi 28 juin 2006
Dernière intervention
1 mars 2010
- 5 févr. 2009 à 10:58
0
Merci
Bonjour,

Excusez moi d'avoir du mettre un peu ce projet en attente maisj'ai eu des obligation et me voilà encore plus a la bourre...

Donc j'ais apporté les modifications du serveur SMPT en entrant l'adresse de wanadoo et un autre test avec free, mais la message box me précise que le mail n'a pas été envoyé mais ne m'explique pas pourquoi...

Et sinon pour info, l'adresse IP que j'avais rentrai était l'adresse interne de serveur Exchange.

La je recherche activement la possibilité de convertir en ligne de commande un pdf en txt afin d'extraire l'adresse e-mail du destinataire de ce mail que nous somme en train d'essayer de faire partir :s

Merci beaucoup pour votre soutient
Commenter la réponse de neocam
neocam
Messages postés
52
Date d'inscription
mercredi 28 juin 2006
Dernière intervention
1 mars 2010
- 5 févr. 2009 à 16:44
0
Merci
Re bonjour,

Bon pour la convertion du pdf en txt et l'extraction de la première ligne c'est OK, il ne me manque plus que l'envoie de mail.

J'ai tester en dehors du réseau d'entreprise mais cela ne fonctionne pas...

C'est trés stressant...

J'oublier j'execute mon script depuis windows vista, peut etre la cdo.dll qui ne serait pas bonne? car j'ai ajouter cette dll à la racine de windows
Commenter la réponse de neocam
sturtrid
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Dernière intervention
13 juillet 2012
- 7 févr. 2009 à 18:50
0
Merci
Salut Neocam !

"Bon pour la convertion du pdf en txt et l'extraction de la première ligne c'est OK", je suis curieux de savoir comment, pourrais-tu me montrer ce code ?
Ca m'étonnerais pour ta dll car sinon, ton script bloquerait dès son utilisation...Je pense. Par contre, étrange que tu n'ais pas eu besoin de l'enregistrée...

Merci et bonne continuation
++
Commenter la réponse de sturtrid
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 7 févr. 2009 à 19:01
0
Merci
Si l'ActiveX a été faite en VB6, elle est enregistrée dès la compilation.
Commenter la réponse de cs_ghuysmans99
sturtrid
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Dernière intervention
13 juillet 2012
- 7 févr. 2009 à 19:49
0
Merci
Salut Ghuysmans !

Bein CDO.dll vient pas de VB6 j'imagine...



++
Commenter la réponse de sturtrid
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 7 févr. 2009 à 22:04
0
Merci
Euh non ... Me suis complètement planté !
Je crois qu'elle est là depuis Windows 2000 si t'as le serveur SMTP de IIS installé.
Commenter la réponse de cs_ghuysmans99

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.