Envoi mail avec CDO (sans outlook)

Auteur lermite

18/04/2013

Si le PC hôte ne dispose pas de l'application Outlook vous pouvez vous servir de l'objet CDO pour envoyer vos mails.

Le désavantage avec CDO c'est qu'il faut le configurer avec les paramètres de votre serveur, certain hébergeur comme Gmail nécessite une authentification (votre mot de passe) et une connexion sécurisée (SSL)

Cette démo implémente tout les paramètres nécessaires.

Sub DEMO_EnvoiMailCDO()
Dim mMessage As Object
Dim mConfig As Object
Dim mChps

    Set mConfig = CreateObject("CDO.Configuration")

    mConfig.Load -1
    Set mChps = mConfig.Fields
    With mChps
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'Adapter suivant votre serveur de mail. (exemple pour Gmail.)=> Hormail "smtp.live.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
        'En principe, 25 fonctionne avec tout les serveurs.
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

        'Vous pouvez essayer sans ces trois lignes
        'Mais si votre serveur demande une authentification,
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "MyMail@gmail.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MyCodePass"
        'Si votre serveur demande une connexion sûre (SSL)
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "true"
        .Update
    End With

    Set mMessage = CreateObject("CDO.Message")
    With mMessage
    Set .Configuration = mConfig
        .To = "LeClient@hotmail.com"
        .From = "MyMail@gmail.com"
        .Subject = "Le sujet du mail"
        .TextBody = "Ce mail vous est envoyer pour tester la macros de lermite"
        'Pour ajouter une pièce jointe, un fichier, classeur, image etc.
        '.AddAttachment 'Chemin et nom complet du fichier à joindre
        .Send
    End With
    Set mMessage = Nothing

    'Pour un autre message, pas besoin de tout reconfigurer, il faut toutefois recréer un nouveau
    'message à chaque fois.
    Set mMessage = CreateObject("CDO.Message")
    With mMessage
    Set .Configuration = mConfig
        .To = "AutreClient@gmail.com"
        .From = "MyMail@gmail.com"
        .Subject = "C'est pour le deuxième test d'envoi mail"
        .TextBody = "Ce mail vous est envoyer pour tester la macros de lermite" & Chr(13) _
            & "et voir si le deuxième message est bien passer."
        'Pour ajouter une pièce jointe, un fichier, classeur, image etc.
        '.AddAttachment 'Chemin et nom complet du fichier à joindre
        .Send
    End With
    Set mMessage = Nothing

    'Libère les ressources
    Set mConfig = Nothing
    Set mChps = Nothing
End Sub

Vous pouvez télécharger un classeur démo (Excel)

merci, ton exemple m'a bien aider

Bonsoir,

je trouver une erreur photo ci-joint

salutation

send

Salut roross,

Voici un code que j’utilise tout les jours. et qui fonctionne.

Ce Code Crée un Pdf de la zonbe d'impression de la feuille et l'envoi par mail a l'adresse renseigner dans la cellule M2 et en Copie la cellule M3.

J'epere que ça t'aidera.

Sub Mail_confirmation_SAV()
    Sheets("Confirmation de prise en charge").Range("M2").Replace What:=",", Replacement:="."
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:="C:\VBA\Confirmation de prise en charge.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    Dim Sh, nSh As Worksheet
    Dim mMessage As Object
    Dim mConfig As Object
    Dim mChps
    Dim FilePath$
    Dim Formulaire$
    Dim nWb As Workbook
    Dim WshShell, utilisateur

    Set Sh = ThisWorkbook.Sheets("Confirmation de prise en charge") 'choisir la bonne feuille
    Set mConfig = CreateObject("CDO.Configuration")
    mConfig.Load -1
    Set mChps = mConfig.Fields
    With mChps
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'Adapter suivant votre serveur de mail. (exemple pour Gmail.)=> Hormail "smtp.live.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
        'En principe, 25 fonctionne avec tout les serveurs.
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465

        'Vous pouvez essayer sans ces trois lignes
        'Mais si votre serveur demande une authentification,
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "adresse@domaine.fr"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mot-de-passe"
        'Si votre serveur demande une connexion sûre (SSL)
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "true"
        .Update
    End With
    Application.ScreenUpdating = False
    FilePath = "C:\VBA\Confirmation de prise en charge.pdf" 'Choisir un path (peu importe lequel puisqu'on écrase le fichier à la fin)..
    Formulaire = "\\xxx\xxx\TABLEAU DE SUIVI DES LITIGES COMMERCIAUX\Formulaire SAV.pdf"
    Set mMessage = CreateObject("CDO.Message")
    With mMessage
    Set .Configuration = mConfig
        .To = [M2].value
        .BCC = [M3].value
        .FROM = "adresse@domaine.fr"
        .Subject = "Confirmation de prise en charge suite non-conformité N°" & Range("I11").value
        .TextBody = ActiveSheet.Shapes("TextBox 2").TextFrame.Characters.Text
        .AddAttachment FilePath 'On rajoute le fichier créé.
        .AddAttachment Formulaire 'On rajoute le fichier créé.
       .Send 'ou .Display pour afficher le mail.
    End With
        'nWb.Close False 'On ferme le fichier...
        Kill FilePath 'et on le détruit.
    Set mMessage = Nothing

    'Libère les ressources
    Set mConfig = Nothing
    Set mChps = Nothing
    MsgBox "Votre Message a bien été envoyé à :" & Chr(10) & _
    [M2].value & "  et  " & [M3].value
End Sub

Bonjour,

votre macro fonctionne très bien. Je rencontre un petit souci avec: "AddAttachment", il m'est impossible d'envoyer un fichier joint sauf si celui-ci est placé à la racine de C. Est-ce un problème connu ? Comment y remédier ?

Il faut changer toutes les occurence de :

"C:\VBA\Confirmation de prise en charge.pdf"

Par le chemin que tu veux.

Merci, mais j'avais changé le chemin.

Reprenons: j'ai le même fichier FFF dans un répertoire RRR et à la racine de C.

Une variable pour définir le chemin,

une variable pour le nom du fichier.

Si je mets le chemin vers RRR, le mail part, mais sans le fichier joint.

Si je mets le chemin "C:\", le fichier part avec le fichier joint.

J'ai vérifié le chemin avec une commande ouvrir.


A priori, dans le chemin, j'avais placé C:\Utilisateurs\.. et cela ne fonctionne pas, en plaçant C:\Users\.. et cela fonctionne !!!

Problème de traduction ?

Hello,

Il faut ecrire ton code comme ceci :

.AddAttachment RRR & FFF 'On rajoute le fichier créé.

Exemple :

RRR = "C:\toto\tata\"

FFF = "tralala.pdf"

si tu ne met que RRR dans .AddAttachment, il ne va pas trouver ton fichier. Mais ton répertoire. et vu que l'ont ne peu pas envoyer un répertoire dans un mail. ton mail part sans !

Ducoup il faut utilise le "&" pour concaténé tes deux variable.

RRR & FFF = "C:\toto\tata\tralala.pdf"

a+.

Merci, j'avais bien compris. Le problème est résolu, cf fin de mon précédent message(2ème partie).

bonjour

comment trouver le SMTP d'une adresse mail

j'arrive a envoyer un e mail, mais que depuis G MAIL

mon adresse professionnel est autre!!!

avez vous une idée

merci

Regarde comment est paramétré ton compte mail professionnel sur ton client de messagerie ( Outlook, Thunderbird ).

Tu y trouvera tout ce que tu a besoin. A part le mot de passe qui est caché.

Bonjour,

Est-il possible d'ajouter une image ou une signature à la fin du mail sur le code?

Merci pour vos réponses.

Cordialement.

Bonjour,

Avec ce code ,comment ajouté une priorité haute ?

en vous remerciant,

Cordialement,

Rechercher des sujets similaires à "envoi mail cdo outlook"