Envoi mail auto via VBA sur Gmail [Résolu/Fermé]

Signaler
Messages postés
52
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
12 juin 2019
-
 jh -
Bonjour à tous!

Je souhaiterais envoyé un mail automatiquement via un classeur excel,

Petites précisions : Application de l'expéditeur et du receveur => Gmail
Le corps du mail sera composé d'une seul phrase

J'ai déjà commencé à récupérer un code d'une autre discussion, mais étant débutant je ne comprends pas toutes les lignes,

Sub test2()
Dim Mail As New Message
 
Dim Config As Configuration: Set Config = Mail.Configuration
 
Config(cdoSendUsingMethod) = cdoSendUsingPort
Config(cdoSMTPServer) = "smtp.gmail.com"
Config(cdoSMTPServerPort) = 25
Config(cdoSMTPAuthenticate) = cdoBasic
Config(cdoSMTPUseSSL) = True
Config(cdoSendUserName) = "**@gmail.com"
Config.Fields.Update
 
Mail.To = "**@gmail.com"
Mail.from = Config(cdoSendUserName)
Mail.Subject = "Subject from VBA"
Mail.HTMLBody = "Body from VBA"
 
Mail.Send
MsgBox "Message bien envoyé"
 
End Sub


J'ai aussi quelques questions :
- Faut-il obligatoirement avoir installé l'application GMAIL pour que le code fonctionne ? Ou peut-on aussi passer par internet (Chrome, Expolrer ou autre) ?

- Quelle sont les significations des lignes 3 à 9 (Config....) ?

Je vous remercie par avance de vos réponses :)
Au plaisir de vous lire!

EDIT : Pour poster du code, merci d'utiliser correctement les balises de code.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

3 réponses

Messages postés
29536
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 septembre 2020
2 776
Bonjour,

Je ne sais pas où tu as récupéré ce code mais je pense qu'il manque des choses...(et que ce n'est pas du VBA au passage)

Essaye ça :
Public Sub MailEnvoi(Serveur, Identify, User, PassWord, Port, Delay, Expediteur, Dest, DestEnCopy, Objet, Body, Pj)
' sub pour envoyer les mails
Dim msg
Dim Conf
Dim Config
Dim ess
Dim splitPj
Dim IsplitPj
Set msg = CreateObject("CDO.Message") 'pour la configuration du message
Set Conf = CreateObject("CDO.Configuration") 'pour la configuration de l'envoi
Dim strHTML
 
Set Config = Conf.Fields
 
' Configuration des parametres d'envoi
'(SMTP - Identification - SSL - Password - Nom Utilisateur - Adresse messagerie)
With Config
If Identify = True Then
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = User
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = PassWord
End If
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Serveur
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = Delay
    .Update
 
End With
 
 
'Configuration du message
'If E_mail.Sign.Value = Checked Then Convert ServeurFrm.SignTXT, ServeurFrm.Text1
 
With msg
    Set .Configuration = Conf
    .To = Dest
  .cc = DestEnCopy
    .from = Expediteur
    .Subject = Objet
'
 
    .HTMLBody = Body '"<p align=""center""><font face=""Verdana"" size=""1"" color=""#9224FF""><b><br><font face=""Comic Sans MS"" size=""5"" color=""#FF0000""></b><i>" & body & "</i></font> " 'E_mail.ZThtml.Text
            If Pj <> "" Then
        splitPj = Split(Pj & ";", ";")
 
        For IsplitPj = 0 To UBound(splitPj)
            If Trim("" & splitPj(IsplitPj)) <> "" Then
                .AddAttachment Trim("" & splitPj(IsplitPj))
            End If
        Next
 
    End If
    .Send 'envoi du message
 
End With
' reinitialisation des variables
Set msg = Nothing
Set Conf = Nothing
Set Config = Nothing
 
End Sub



et pour t'en servir
Sub test()
 MailEnvoi "smtp.googlemail.com", True, "My.Mail@gmail.com", "Pasw", 465, 10, "My.Mail@gmail.com", "Vous.Mail@gmail.com", "Copy@gmail.com", "Suivi des modifications.", "tel truc a été modifile", ""
End Sub




Cordialement, 
Jordane                                                                 
Messages postés
52
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
12 juin 2019

Salut Jordane merci pour ta réponse,

Le code à été récupéré sur un site avec pourtant assez bonnes réputation,

J'essais ce code au plus vite et vous fait un petit retour sur ce que ça à donné :)

Merci encore pour ce code bien détaillé et tes précisions,

Cordialement
Nicolas
Messages postés
1769
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
15 juin 2020
524
Bonjour,

Pour envoyer un mail à partir d'une adresse Gmail sans utiliser Outlook, il faut utiliser l'objet CDO.

La première étape, c'est d'ajouter dans l'éditeur VBA la bibliothèque CDO :
Outils --> Références --> Microsoft CDO WINDOWS FOR 2000

La deuxième étape, c'est d'utiliser ce code
Sub EnvoiMail()
    'Add the Project Reference Microsoft CDO WINDOWS FOR 2000
    Dim cdo_msg As New CDO.Message
    
    'configuration message
    cdo_msg.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
    cdo_msg.Configuration.Fields(cdoSMTPConnectionTimeout) = 60
    cdo_msg.Configuration.Fields(cdoSendUsingMethod) = cdoSendUsingPort
    cdo_msg.Configuration.Fields(cdoSMTPServerPort) = 465
    cdo_msg.Configuration.Fields(cdoSMTPAuthenticate) = cdoBasic
    cdo_msg.Configuration.Fields(cdoSMTPUseSSL) = True
    cdo_msg.Configuration.Fields(cdoSendUserName) = "xxxxxxxxxx@gmail.com"
    cdo_msg.Configuration.Fields(cdoSendPassword) = "ppppppppp"
    cdo_msg.Configuration.Fields.Update
    
    'remplissage et envoi message
    cdo_msg.To = "adresse1"
    cdo_msg.From = "adresse2"
    cdo_msg.Subject = "filename Sent to www.???.com "
    cdo_msg.TextBody = "File FTP LOG ATTACHED."
    cdo_msg.AddAttachment ("C:\Users\nnnnnn\Documents\classeur1.xls")
    cdo_msg.Send
    
    'libération objet message
    Set cdo_msg = Nothing
End Sub


Le serveur d'envoi du mail est : smtp.gmail.com (ligne 6)
Le port d'envoi du mail est : 465 et non 25 (ligne 9)
Le cryptage SSL doit être activé (ligne 11)
Le user et mot de passe du compte GMail sont à fournir. (lignes 12 et 13)
Messages postés
52
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
12 juin 2019

Bonjour Thev,

Merci pour toutes tes réponses ainsi que ce code lui aussi bien détaillé,

Je comprends mieux les lignes de configuration, même si les chiffres comme 465 ou 25 ou 60 reste un mystère.. :)

J'essais aussi le code et te fait un retour rapide,

Merci bonne journée
Cordialement,
Nicolas
Bonjour Thev,

je tente d'utiliser votre code. Cela échoue à cdo_msg.send. J'ai un message d'erreur "Le transport a échoué dans sa connexion au serveur.". Y a-t-il une solution ?

Y a-t-il une commande pour afficher le msg? Dans VBA on a msg.display? Avec CDO, je n'ai pas trouvé la méthode