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

VBA Discussion :

erreur lors d'un envoie de mail via CDO


Sujet :

VBA

  1. #1
    Membre habitué Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Points : 137
    Points
    137
    Par défaut erreur lors d'un envoie de mail via CDO
    Bonjour à toutes et à tous,

    Je suis en train de réaliser un tableau excel dans lequel j'ai mis un bouton qui a pour objectif d'envoyer une copie du tableau par mail. Pour cela j'utilise la référence microsoft CDO for windows 2000 library.
    j'ai implémenté la fonction Send_mail() ci dessous (récupérée sur le net) :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Public Sub send_mail()
    Dim objMessage, objConfig, Fields
    Set objMessage = CreateObject("CDO.Message")
    Set objConfig = CreateObject("CDO.Configuration")
    Set Fields = objConfig.Fields
    With Fields
      .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
      .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
      .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
      .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "usermail@mail.com"
      .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
      .Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = True
      '.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
      .Update
    End With
    Set objMessage.Configuration = objConfig
     
    With objMessage
      .Subject = "Test Message"
      .From = "usermail@mail.com"
      .To = "receivermail@mail.com"
      .HTMLBody = "Test Message"
      .Send
    End With
    Set objMessage = Nothing
    Set objConfig = Nothing
    Set Fields = Nothing
    End Sub
    La config smtpusessl génère une erreur et est donc commenté, le sendtls est obligatoire.

    Lorsque j'envoie le message, j'ai un retour qui est : "le serveur a rejeté l'adresse de l'expéditeur. La réponse du serveur était : 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [...]"
    Pour vérifier que je ne me trompais pas dans les configurations, j'ai testé un envoie de mail via python et la libSMTP avec les mêmes paramètres et dans ce cas, pas de soucis, le mail est envoyé et reçu sans soucis.
    Enfin, ce fichier devra ensuite être fourni à plusieurs personnes pour pouvoir récupérer les données enregistrées et réaliser un traitement statistique ultérieur.

    Le problème semble donc venir d'excel, mais malgré des recherches sur le net, je ne trouve pas de réponse.

    Quelqu'un aurait-il déjà rencontré ce genre de soucis et surtout, comment le corriger ?

    Merci à vous.
    A++

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Salut,
    Et si tu changes le port :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    Toujours la même erreur ?

  3. #3
    Membre habitué Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Points : 137
    Points
    137
    Par défaut
    Bonjour QuestVBA et merci de ta réponse.

    Malheureusement, oui, toujours la même erreur

  4. #4
    Membre habitué Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Points : 137
    Points
    137
    Par défaut
    J'ai continué à chercher de mon coté.
    Je suis sous windows 7 et si je comprends bien le framework .net semble avoir son importance pour géré le TLS en 1.2 minimum.

    Par contre, je ne trouve pas grand chose à ce sujet.
    Est ce que cela apporte un peu plus d'infos ??

    merci

  5. #5
    Membre habitué Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Points : 137
    Points
    137
    Par défaut
    Bonjour à tous,
    Je me réponds à moi même, au cas ou cela pourrait aider d'autres personnes.

    Déjà, QuestVba avait raison de changer le port de 587 à 25. Merci à lui.
    Mais, pour que l'ensemble fonctionne, il faut aussi désactiver la sécurité TLS ET activé le SSL.
    Après de nouvelles recherches, il semble qu'il y ait un bug dans CDO avec TLS.
    le code de la fonction devient donc :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Private Sub Office365_Email(mailReferent As String, usermail As String, pwdSender As String)
        Dim objMessage, objConfig, Fields
        Set objMessage = CreateObject("CDO.Message")
        Set objConfig = CreateObject("CDO.Configuration")
        Set Fields = objConfig.Fields
     
        With Fields
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = usermail
            .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = pwdSender
            '.Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = False
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
            .Item("http://schemas.microsoft.com/cdo/configuration/cdoSMTPConnectionTimeout") = 60
            .Update
        End With
        Set objMessage.Configuration = objConfig
     
        With objMessage
            .Subject = "Test Message vba"
            .From = usermail
            .To = mailReferent
            .HTMLBody = "<h1>Test Message depuis excel</h1>"
            .Send
        End With
        Set objMessage = Nothing
        Set objConfig = Nothing
        Set Fields = Nothing
     
    End Sub
    Merci et bonne journée.
    A++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur '80040213' quand envoi de mail via CDO
    Par valou79 dans le forum ASP
    Réponses: 7
    Dernier message: 16/12/2013, 16h50
  2. Réponses: 3
    Dernier message: 22/10/2007, 10h30
  3. [VB.NET 2005] Erreur lors d'un envois de mail
    Par mimil77210 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2006, 14h00
  4. erreur lors de l'envoie de donné via les socket.
    Par poporiding dans le forum C++
    Réponses: 1
    Dernier message: 23/05/2006, 14h23
  5. [Mail] Erreur lors de l'envoi de mail
    Par PAYASS59 dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2006, 14h34

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