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

VBA Outlook Discussion :

Envoi d'un mail depuis ACCESS


Sujet :

VBA Outlook

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de Données
    Inscrit en
    Janvier 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de Données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2015
    Messages : 79
    Par défaut Envoi d'un mail depuis ACCESS
    Bonjour,

    un modérateur de la section ACCESS m'a conseillé de poster ma demande ici.

    j'ai une application access qui envoi des mail de confirmation de réservation ou d'annulation pour du transport à la demande.

    l'envoi de mail se passe bien mais c'est l'adresse mail de l'opérateur qui est utilisé.

    voici des extraits du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      'Tentative pour récupérer une session Outlook éventuellement déjà ouverte
      On Error Resume Next
      'S'il n'y a pas de session ouverte, l'instruction suivante va provoquer une erreur (N° 429)
      Set objOutlook = GetObject(, "Outlook.Application")
      'Traitement de l'erreur éventuelle : nous devons ouvrir une session Outlook
      If Err.Number = 429 Then
        iRet = Shell("C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE", vbHide)
        Set objOutlook = New Outlook.Application
        bolOutLookOuvert = True 'ceci pour permettre de refermer in fine Outlook que nous avons ouvert
      End If
      On Error GoTo GestionErreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set objMonMessage = objOutlook.CreateItem(0) 'ouvrir une structure de message
            objMonMessage.To = strDestinataire
            objMonMessage.Subject = strObjet
            objMonMessage.Body = strMessage
            objMonMessage.Send
            Sleep 1000 'pause de 1 sec pour l'envoi
    Comment faire pour que l'expéditeur du mail soit une adresse "générique" (tout le temps la même adresse, quelque soit le PC/Opérateur utilisé) ?

    Est ce qu'il faut que je passe par SentOnBehalfOfName ?

    Cela implique que le compte mail "générique" doit être installé sur tous les postes qui utilisent potentiellement l'application ACCESS ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    il y a 2 méthodes en gros , soit tu utilises SentOnBehalfOfName , il faut que les utilisateurs aient les droits sur cette BOITE via EXCHANGE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub envoi_au_nom_de()
        Dim objMail As Outlook.MailItem
        Set objMail = Outlook.Application.CreateItem(olMailItem)
        objMail.subject = "envoi au nom de"
        objMail.SentOnBehalfOfName = "NOM AUTRE BAL"
         objMail.Recipients.ResolveAll  
        objMail.Display
    End Sub

    Soit tu utilises une bibliothèque appelée CDO et qui va te permettre d'envoyer le mail avec le nom que tu veux, cependant ce type d'envoi n'enregistre pas de copie du message envoyé dans OUTLOOK, il faut envoyer mettre en CCI (BCC) l'adresse où tu veux recevoir une copie.

    il faut changer smtp.provider.com par l'adresse du serveur SMTP de ton provider ou de ton serveur exchange.

    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
    Private Sub MailAvecCDO2000()
    '---------------------------------------------------------------------------------------
    ' Procedure : MailAvecCDO2000
    ' Author    : Oliv'
    ' Date      : 26/11/2008
    ' Purpose   : envoi un mail sans message de sécurité en utilisant
    ' Déclaration tardive ("Late Binding")
    ' Microsoft CDO for Windows 2000 Library
    '---------------------------------------------------------------------------------------
    
        Dim Cdo_Message As Object
        Set Cdo_Message = CreateObject("CDO.Message")
        Const CdoTo = 1
        Const CdoCc = 2
        Const CdoBcc = 3
    
        Set Cdo_Message.Configuration = GetSMTPServerConfig()
    
        With Cdo_Message
            .To = "toto@toto.com"
            .From = "me@sender.com"
            .Subject = "My Subject"
            .TextBody = "Body"
            '.AddAttachment ("c:cheminfichier.ext")
            .Bcc = "me@sender.com"
    
            retour = .Send
        End With
        Set Cdo_Message = Nothing
    End Sub
    
    Function GetSMTPServerConfig() As Object
    ' Microsoft CDO for Windows 2000 Library
        Const cdoSendUsingPickup = 1
        Const cdoSendUsingPort = 2
        Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
        Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
        Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
    
        Dim Cdo_Config As Object    'New CDO.Configuration
        Set Cdo_Config = CreateObject("CDO.Configuration")
        Dim Cdo_Fields As Object
        Set Cdo_Fields = Cdo_Config.Fields
    
        With Cdo_Fields
            .Item(cdoSendUsingMethod) = cdoSendUsingPort
            .Item(cdoSMTPServer) = "smtp.provider.com"
            .Item(cdoSMTPServerPort) = 25
            .Update
        End With
    
        Set GetSMTPServerConfig = Cdo_Config
        Set Cdo_Config = Nothing
        Set Cdo_Fields = Nothing
    
    End Function
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

Discussions similaires

  1. Envoi d'alerte par mail depuis access selon une date
    Par ensascience dans le forum IHM
    Réponses: 1
    Dernier message: 10/02/2016, 19h20
  2. [AC-2010] Envoi de mail depuis Access
    Par ThieBEN dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/09/2014, 16h04
  3. Envoi de mail depuis access avec retour sur actions
    Par clickandgo dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/04/2012, 11h03
  4. envoi mail depuis access par outlook, pièce jointe
    Par Lyude dans le forum VBA Access
    Réponses: 6
    Dernier message: 10/05/2010, 10h57
  5. [AC-2003] Outil d'envoi de mail depuis Access
    Par Kloun dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2009, 10h53

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