Menu

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

Messages postés
50
Date d'inscription
jeudi 15 janvier 2015
Dernière intervention
17 janvier 2019
-
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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
24625
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2019
1857
0
Merci
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                                                                 
texastina
Messages postés
50
Date d'inscription
jeudi 15 janvier 2015
Dernière intervention
17 janvier 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
Commenter la réponse de jordane45
Messages postés
1755
Date d'inscription
lundi 7 avril 2008
Dernière intervention
19 février 2019
353
0
Merci
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)
texastina
Messages postés
50
Date d'inscription
jeudi 15 janvier 2015
Dernière intervention
17 janvier 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
Commenter la réponse de thev