IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Envoi de mail par la commande CDO


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Par défaut Envoi de mail par la commande CDO
    Bonjour,

    J'utilise pas mal la fonction CDO pour envoyer des mails a partir de serveurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SIZE="2"]Set wshShell = WScript.CreateObject( "WScript.Shell" )
    Set objEmail = CreateObject("CDO.Message") ' On crée un objet message
     
    objEmail.From = "email emeteur"
    objEmail.To = "email reception"
    objEmail.Subject = "sujet du mail"
    objEmail.Textbody = "Texte dans le corps du mail"
    objEmail.Fields.Item("urn:schemas:httpmail:importance") = 2 
    objEmail.AddAttachment("Piece jointe")
    objEmail.Fields.Update 'On met a jour les champs
     
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'On choisi la methode d'envoi 
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Serveur Exchange" ' On donne ici le serveur SMTP
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'On donne la le port du serveur smtp
    objEmail.Configuration.Fields.Update 'mise a jour des champs
    objEmail.Send ' Envoi du mail
    Je suis avec un compte admin du serveur mais aussi admin du partie de domaine ( c'est possible ? ) .... bref cela fonctionne tres bien tant que je reste sur des emails en interne.

    Des que je souhaite ecrire a l'exterieur ca ne passe pas !!!!

    Est ce une restriction sur le serveur exchange ? sur des firewall ?

    Auriez vous une astuce pour contourner cela ?

    Merci

    PS : Je fais parti d'une 'grande' structure en terme de reseau ( societe international ) ..... je n'ai pas la main sur tout

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Citation Envoyé par bigfoot75 Voir le message
    ... bref cela fonctionne tres bien tant que je reste sur des emails en interne.

    Des que je souhaite ecrire a l'exterieur ca ne passe pas !!!!
    Tu veux dire que en utilisant la même config (même serveur, même user) tu ne peux envoyer de mails sur un autre serveur de mail ?

    Tu envoies le mail à quelle adresse ?

    Edit : je viens de voir que tu n'utilises pas le mode Authentication.
    Les serveurs de mail apprécient pas trop ce genre de mail et les bloques en général (trop de spam sinon).
    Essaie avec le mode Authentication.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Par défaut
    Citation Envoyé par Anikinisan Voir le message
    Tu veux dire que en utilisant la même config (même serveur, même user) tu ne peux envoyer de mails sur un autre serveur de mail ?

    Tu envoies le mail à quelle adresse ?

    Edit : je viens de voir que tu n'utilises pas le mode Authentication.
    Les serveurs de mail apprécient pas trop ce genre de mail et les bloques en général (trop de spam sinon).
    Essaie avec le mode Authentication.
    Pardon, je vais expliquer le contexte -

    J'ai ecris un vbs afin de verifier la presence de fichiers - je fais tourner ca sur le serveur de fichiers avec une tache planifié

    Le script test si les fichiers sont et envoi un rapport sur mon email pro ( prenom.nom@nomdedomaine.com ) - Le serveur n'a pas de suite office , le script tourne en arriere plan , nuit et jour , weekend .....

    Il fonctionne parfaitement depuis des mois.

    Je voudrais ajouter quelqu'un dans le mail, mais il a un email externe ( @free.fr ) - et cela ne fonctionne pas.

    Je ne connais pas ce mode ' authentification ' - tu pourrais m'en dire plus ?!

    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Citation Envoyé par bigfoot75 Voir le message
    Je ne connais pas ce mode ' authentification ' - tu pourrais m'en dire plus ?!
    En fait, ça permet d'utiliser un compte du serveur smtp pour envoyer des mails.
    Les serveurs n'acceptent presque plus les mails envoyés sans utiliser le mode avec authentification (pour éviter le spam).

    Donc sur ton serveur exchange, tu créées un compte si tu n'en a pas.
    Ca devrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Set wshShell = WScript.CreateObject( "WScript.Shell" )
    Set objEmail = CreateObject("CDO.Message") ' On crée un objet message
     
    objEmail.From = "mon_email@mon_domaine.com" 'remplir par l'adresse email associée au compte utilisé pour la connection au serveur SMTP - SINON CA RISQUE DE NE PAS MARCHER
    objEmail.To = "email reception"
    objEmail.Subject = "sujet du mail"
    objEmail.Textbody = "Texte dans le corps du mail"
    objEmail.Fields.Item("urn:schemas:httpmail:importance") = 2 
    objEmail.AddAttachment("Piece jointe")
    objEmail.Fields.Update 'On met a jour les champs
     
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'On choisi la methode d'envoi 
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Serveur Exchange" ' On donne ici le serveur SMTP
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'On donne la le port du serveur smtp
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdo.cdoSMTPAuthenticate 'mode "Authenticate"
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Username" ' Identifiant du compte
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password" ' Mot de passe du compte
    objEmail.Configuration.Fields.Update 'mise a jour des champs
    objEmail.Send ' Envoi du mail
    PS: va voir ici, ils en parlent aussi.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Par défaut
    Citation Envoyé par Anikinisan Voir le message
    En fait, ça permet d'utiliser un compte du serveur smtp pour envoyer des mails.
    Les serveurs n'acceptent presque plus les mails envoyés sans utiliser le mode avec authentification (pour éviter le spam).

    Donc sur ton serveur exchange, tu créées un compte si tu n'en a pas.
    Ca devrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Set wshShell = WScript.CreateObject( "WScript.Shell" )
    Set objEmail = CreateObject("CDO.Message") ' On crée un objet message
     
    objEmail.From = "mon_email@mon_domaine.com" 'remplir par l'adresse email associée au compte utilisé pour la connection au serveur SMTP - SINON CA RISQUE DE NE PAS MARCHER
    objEmail.To = "email reception"
    objEmail.Subject = "sujet du mail"
    objEmail.Textbody = "Texte dans le corps du mail"
    objEmail.Fields.Item("urn:schemas:httpmail:importance") = 2 
    objEmail.AddAttachment("Piece jointe")
    objEmail.Fields.Update 'On met a jour les champs
     
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'On choisi la methode d'envoi 
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Serveur Exchange" ' On donne ici le serveur SMTP
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'On donne la le port du serveur smtp
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdo.cdoSMTPAuthenticate 'mode "Authenticate"
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Username" ' Identifiant du compte
    objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password" ' Mot de passe du compte
    objEmail.Configuration.Fields.Update 'mise a jour des champs
    objEmail.Send ' Envoi du mail
    PS: va voir ici, ils en parlent aussi.

    Merci beaucoup pour ces informations - Grace a l'authentification j'arrive a envoyer sur des emails externes ( avant je ne pouvais pas )


    J'ai quand meme un autre soucis ...... Ca marche tres bien sur de l'exchange 2003 - Par contre j'ai un compte de test sur de l'exchange 2010 et la ca marche pas , ni en interne ni en externe.

    Je met bien mon nom de domaine \ mon user dans sendusername pourtant.

    Problemes connus avec exchange 2010 ????

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Il faut peut être utiliser une connection sécurisée et utiliser SSL/TLS.
    J'ai créé une discution à ce propos ici même (forum vb6).

Discussions similaires

  1. Problème d'envoie de mail par SMTP
    Par yass dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 12/09/2008, 16h45
  2. [SQL]Envoie de mail par une procedure
    Par yoyopi dans le forum DB2
    Réponses: 19
    Dernier message: 22/02/2008, 16h30
  3. Access 97 : Envoi de mail par SMTP sans Outlook
    Par mr_foxy dans le forum Access
    Réponses: 2
    Dernier message: 16/03/2006, 14h45
  4. [Mail] Envoi de mail par SMTP ?
    Par Borami dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2006, 12h26
  5. [Mail] newsletter, envoi de mail par lot
    Par jexl dans le forum Langage
    Réponses: 9
    Dernier message: 08/09/2005, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo