Programmer envoi de mails grâce à Excel VBA

Anonyme
2020-08-05T00:30:04+00:00

Bonjour,

Je crée parfois pour mon usage personnel de petits programmes avec Excel VBA. Je voudrais savoir s'il est possible de créer un programme sur VBA pour envoyer des mails avec l'application Courrier de Windows 10. Si oui, comment cela se fait (syntaxe, références, etc.).

J'ai cherché sur le net, mais je n'ai rien trouvé. S'il y a une autre façon de procéder, ça pourrait également m'intéresser.

Merci d'avance

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

5 réponses

  1. DanielCo 107.7K Points de réputation
    2020-08-06T07:52:10+00:00

    Là, ça devient chaud car je ne peux pas tester. Regarde cette discussion et vois si ça peut t'aider :

    https://www.developpez.net/forums/d2007925/logiciels/microsoft-office/general-vba/erreur-lors-d-envoie-mail-via-cdo/

    Sinon, non, ça n'utilise pas le logiciel de messagerie. Il n'y a donc pas moyen de conserver trace des messages envoyés.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2020-08-05T21:22:19+00:00

    Ca, s'il y a une ligne "Option Explicit" dans ton module, ne t'en prends qu'à toi ;-)

    Vrai! :-)

    Malheureusement, le même message d'erreur s'affiche... Apparemment, je ne suis pas autorisé à envoyer de mail de façon "anonyme" et j'ai une erreur à l'avant avant dernière ligne: .Send

    D'un autre côté, en regardant le code, je n'ai pas l'impression d'utiliser l'application Courrier de Windows 10. Je pense qu'en "prenant le contrôle" de l'application Courrier, on ne devrait pas avoir ce genre d'erreur, non?!

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2020-08-05T13:05:43+00:00
    1. J'ai remarqué que la variable flds n'avait pas été déclaré, j'ai donc ajouté une ligne de code pour ça.

    Ca, s'il y a une ligne "Option Explicit" dans ton module, ne t'en prends qu'à toi ;-)

    1. En clair, ça veut dire que le serveur ne me connait pas... J'ai effectivement remarqué dans le code qu'il n'y avait pas de ligne pour l'authentification...

    Ajoute ces lignes en les modifiant :

      .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "******@mail.com"

      .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"

      .Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = True

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2020-08-05T09:35:55+00:00

    Bonjour,

    Merci beaucoup. C'est déjà très utile!

    J'ai remarqué que la variable flds n'avait pas été déclaré, j'ai donc ajouté une ligne de code pour ça.

    Par contre, en exécutant le code. Voici ce que j'obtiens comme message d'erreur:

    En clair, ça veut dire que le serveur ne me connait pas... J'ai effectivement remarqué dans le code qu'il n'y avait pas de ligne pour l'authentification...

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2020-08-05T07:43:28+00:00

    Bonjour,

    Le code ci-dessous provient du site web de Ron De Bruin. Il fonctionne avec tous les logiciels de courrier. Les lignes précédées d'un commentaire commençant par '*** sont éventuellement à modifier.

    Sub Envoi_Courrier()

        Dim iMsg As Object

        Dim iConf As Object

        Dim strbody As String

        Set iMsg = CreateObject("CDO.Message")

        Set iConf = CreateObject("CDO.Configuration")

            iConf.Load -1    ' CDO Source Defaults

            Set Flds = iConf.Fields

            With Flds

                .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

                ''*** nom du serveur SMTP

                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _

                               = "smtp.free.fr"

                '*** port utilisé par le serveur SMTP

                .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

                .Update

            End With

        '*** texte du message

        strbody = "Hi there" & vbNewLine & vbNewLine & _

                  "This is line 1" & vbNewLine & _

                  "This is line 2" & vbNewLine & _

                  "This is line 3" & vbNewLine & _

                  "This is line 4"

        With iMsg

            Set .Configuration = iConf

            '*** adresse destinataire

            .To = "test.test.fr"

            '*** adresse des destinataires de copies

            .CC = ""

            '*** adresse des destinataires de copies cachées

            .BCC = ""

            '*** expéditeur

            .From = """Ron"" <test.test.fr>"

            '*** objet du message

            .Subject = "New figures"

            '*** corps du message

            .TextBody = strbody

            '*** si pièce jointe, ajouter la ligne suivante

            .AddAttachment "c:\temp\piece_jointe"

            .Send

        End With

    End Sub

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire