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

Contribuez Discussion :

Envoi mail via smtp avec pièce jointe


Sujet :

Contribuez

  1. #1
    Membre régulier Avatar de zibi7
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 72
    Points : 75
    Points
    75
    Par défaut Envoi mail via smtp avec pièce jointe
    Suite aux divers blocage que pose outlook/thunderbird pour l'envoi automatisé par mail, j'ai développé une fonction simple qui permet d'envoyer via un service smtp : offert par google dans l'exemple suivant mais peut tout à fait être fourni par le service informatique de votre entreprise ou votre propre serveur smtp (pourquoi pas?)

    voici le code en éspèrant rendre service à des gens qui ont rencontrés les mêmes limites microsoft que moi :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    Option Compare Database
    '======cette fonction envoie un mail personalisé (nom et prénom) d'access à un destinataire a
    '======extérieure via le serveur smtp
     
    Public Function SendMail(Nomdest As String, Prenomdest As String, AdresseMail As String, Objet As String, Corps As String, Optional NomPj As String, Optional Cc As String, Optional Bcc As String) As Boolean
    '========Déclarations===================================================================================
    '=======Les objets de configuration du l'objet mail (référence: bibliothèque cdo)=======================
    '=====On utilise un boolean pour savoir si l'opération d'envoi est bien parti===========================
    '=======le corps reçu en paramètre est modifié, on lui rajoute une entete personalisé avec le nom/prénom
    '=======un pied de page pour dire que c'est un mail automatique et les coordonées=======================
    '=======Pour que l'application soit facilement portable, pour les pieces jointes en parametre===========
    '=======seul le nom du fichier est passé "xxxxx.pdf" et le chemin est reconstruit avec le répertoire====
    '========courant de l'application! attention à ne pas utiliser curdir, renvoie pas la valeur exacte=====
    Dim objCDO As Object
    Dim objMailConfig  As Object
    Dim mailparti As Boolean
    Dim Entetenoreply As String
    Dim Piedsnoreply As String
    Dim Coordonnees As String
    Dim repcourant As String
     
    Set objCDO = CreateObject("CDO.Message")
    Set objMailConfig = objCDO.Configuration
    On Error GoTo EnvoiMail_Err
     
    '===================Configuration du smtp à utiliser, ici c'est google===================================
     
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@gmail.com"
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pwd"
    objMailConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
    objMailConfig.Fields.Update
    Set objCDO.Configuration = objMailConfig
    '==================Construction du corps du message et du chemin piece jointe============================
     
    Entetenoreply = "Bonjour " & Prenomdest & " " & Nomdest & "," & vbNewLine
    Piedsnoreply = "Avertissement : Cet e-mail est généré de façon automatique, nous vous remercions de ne pas utiliser l’adresse d’origine pour nous contacter, votre message ne pouvant être traité en retour."
    coordonees = vbNewLine + "compagnies" + vbNewLine + "Tél " + vbNewLine + "Infomations"
    Corps = Entetenoreply + vbNewLine + Corps + vbNewLine + coordonees + vbNewLine + vbNewLine + Piedsnoreply
    repcourant = CurrentProject.Path
    NomPj = repcourant & "\" & NomPj
     
    '=========================Ajout des paramètres de la fonction, test pour les optionnels===================
    '========================avant de les ajouter, gestion des erreurs plus bas===============================
     
    With objCDO
    .To = AdresseMail
    If Not IsNull(Cc) Then .Cc = Cc
    If Not IsNull(Bcc) Then .Bcc = Bcc
    .From = "<sender@gmail.com>"
    .Subject = Objet
    .TextBody = Corps
    If NomPj <> "" Then .AddAttachment NomPj
    .send
    End With
    mailparti = True
    SendMail = mailparti
     
    '=============================Vidange des objets=======================================================
    Set objCDO = Nothing
    Set objMailConfig = Nothing
     
    EnvoiMail_End:
        Exit Function
    EnvoiMail_Err:
        mailparti = False
        SendMail = mailparti
        MsgBox ("Echec de la connexion smtp")
        Resume EnvoiMail_End
    End Function
    Et pour le tester (à adapter bien sur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    '=========================Petite procédure de test occasionnel sur la fonction sendmail via smtp
    Sub test4()
    Dim test As Boolean
    test = SendMail("nom", "prénom", "dest", "Test call function", "blabla encaplsulé", "xxx.pdf", "", "")
    End Sub

    Zibi

  2. #2
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut Les CDO
    Bonjour,

    Ta contribution est basée sur les CDO, faut référencer un biblio de plus dans access.

    Pour ma part j'ai depuis un moment abandonné l'automation en inscrivant une biblio outlook ver X. à cause des pc qui n'ont jamais la même version d'outlook et parfois même pas d'outlook.

    As-tu essayé ce que préconise cette page. Il parait que l'alerte ne s'affiche pas dans certaines conditions

    http://msdn.microsoft.com/en-us/library/bb226709.aspx

    et même si un autre foromeur a fait le test


    a+

  3. #3
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut Le test
    Bonjour,

    Je viens de faire le test création d'une tâche et d'un Rendez-vous.

    Avec l'automation sur Outlook 2007 dans les conditions déterminées dans le post de Microsoft.

    Je n'ai aucune alerte ...

    Suis-je en retard d'un train ?
    a+

  4. #4
    Membre régulier Avatar de zibi7
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Salut!

    Ca fait un moment que j'ai switché cette partie, mais de mes souvenirs pendant une semaine j'ai bien cherché sur le net et fait plusieurs test de plusieurs sources (msdn, forums...) aucune ne fonctionnait (même le changement de regsitre). je suis sous XP/ACCESS 2007
    est- tu sous le même environnement?

    @++

  5. #5
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut Les CDO
    Bonjour,

    Désolé d'avoir peut-être coupé ton enthousiasme mais c'est sans intention de la faire.

    Les CDO sont, pour moi, un complément indispensable au fait qu'access avec la version 2007 puisse envoyer des messages avec des PDF attachés et surtout de pouvoir voir le message avant son envoi. Car ceci était possible qu'avec l'automation ou MAPI32, ces solutions étaient relativement fastidieuses et contraignantes à mettre en place.

    Le problème avec l'automation c'est la placard qui apparait avec un timer pour dire qu'une application tente d'utiliser Outlook à l'insu de l'utilisateur.

    Aujourd'hui en respectant ce qui est dit dans le bulletin Microsoft et je l'ai testé, on a plus ce message.
    En dehors de cela l'automation inter applications Office fonctionne parfaitement bien et des milliers d'exemples existent sur le net.

    Il ne faut pas oublier d'ajouter le fichier OLB dans les références, c'est tout.
    Sinon ont a une erreur qui de mémoire commence par 42X.

    J'utilise le code qui figure dans ta contribution pour les notifications automatisées avec ou sans pièce attachée où l'on pas besoin d'un expéditeur connu.

    A+

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/06/2013, 23h19
  2. Envoi de mail sous Unix avec pièce jointe et texte
    Par guicecal dans le forum Unix
    Réponses: 0
    Dernier message: 23/02/2010, 14h25
  3. Mail de notification avec pièce jointe
    Par TAMBOOH dans le forum Administration
    Réponses: 0
    Dernier message: 29/12/2008, 14h44
  4. Préparation d'envoi de mail sous Outlook avec pièce jointe
    Par Ivynox dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/04/2008, 11h08

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