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 :

Récupérer l'adresse mail des destinataires d'un message


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 73
    Points : 61
    Points
    61
    Par défaut Récupérer l'adresse mail des destinataires d'un message
    Bon, ça m'avait l'air tout con (mais c'est quand même au delà de mes compétences, en tout cas :-)

    Sous Outlook/Exchange 2003 SP3, j'ai une macro qui permet, depuis la fenêtre d'affichage d'un mail, d'enregistrer dans un répertoire temporaire des informations de ce mail qui sont nécessaires à une autre application; puis la macro fait un ShellExecute d'un exécutable maison (écrit en Delphi) qui se charge d'aller alimenter la base de données centrale sur base de ce qu'il lit dans le fichier temporaire.

    J'ai donc en VBA une variable MonMail (de type MailItem) dans laquelle je vais rechercher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonMail..SenderEmailAddress pour avoir l'adresse de l'expéditeur
    MonMail.To me renvoie le ou les noms des destinataires.
    MonMail.Body
    - etc.

    Mais ce qui me manque, c'est l'adresse des expéditeurs et destinataires qui font partie de mon domaine.
    En effet,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonMail.Recipients(n).Address
    MonMail.Recipients(n).AddressEntry
    me renvoient des machins qui me sont inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Recipient.Name = Paul Rambeaux
    Recipient.AddressEntry = Paul Rambeaux
    Lorsque les adresses viennent hors de mon domaine, alors les valeurs renvoyées forment bel et bien une zolie adresse parfaitement utilisable... Par contre, pour toutes les adresses internes, Outlook juge utile de me renvoyer des références que je ne sais pas utiliser...

    Faut-il dès lors aller chercher l'adresse sur le serveur Exchange ? Y a pas plus simple, genre un paramètre magique à basculer avant d'appeler la fonction ?

    (le problème se pose évidemment aussi avec MonMail.SenderEmailAddress : aucun problème lorsque l'expéditeur est extérieur à mon domaine. Mais si c'est un collègue, alors la propriété me renvoie ce genre de truc :
    O=MONDOMAINE/OU=EXCHANGE ADMINISTRATIVE GROUP (FYD999999999999)/CN=RECIPIENTS/CN=USER9999999D)

    Merci déjà de m'avoir lu jusqu'ici :-)

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Peut-être essayer de récupérer l'adresse du contact
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monmail.Recipients.Item(1).AddressEntry.GetContact.Email1Address
    Cela peut aussi être email2address ou email3address
    Et pour l'envoi l'adresse du contact émetteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monmail.SendUsingAccount.SmtpAddress
    Merci de nous tenir au courant
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Membre du Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 73
    Points : 61
    Points
    61
    Par défaut
    Les deux instructions provoquent une erreur, cf PJ, qui dit
    "propriété ou méthode non gérée par cet objet"; l'objet en question est donc MonMail,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MonMail As Outlook.Selection
    Merci en tout cas,

    Paul

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Tiens voilà une petite fonction à tester et peu-être à améliorer :




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Function RetrouveAdress(stAddress As String) As String
        Dim oNSP As Outlook.NameSpace
        Dim oRec As Outlook.Recipient
        Dim oExUser As Outlook.ExchangeUser
        Set oNSP = Application.GetNamespace("MAPI")
        Set oRec = oNSP.CreateRecipient(stAddress)
        Set oExUser = oRec.AddressEntry.GetExchangeUser()
        RetrouveAdress = oExUser.PrimarySmtpAddress
        Set oNSP = Nothing
        Set oRec = Nothing
        Set oExUser = Nothing
    End Function
    pour l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
      If MonMail SenderEmailType = "EX" Then
        Debug.Print RetrouveAdress(MonMail.SenderEmailAddress)
      Else
        Debug.Print MonMail.SenderEmailAddress
      End If

Discussions similaires

  1. Récupérer une adresse mail dans un corps de message
    Par wannie7777 dans le forum VBA Outlook
    Réponses: 11
    Dernier message: 25/09/2008, 12h36
  2. Réponses: 6
    Dernier message: 30/04/2008, 09h07
  3. [Réseau] Récupérer les adresses IP des postes
    Par jaz.faki3 dans le forum Administration
    Réponses: 5
    Dernier message: 01/06/2007, 15h14

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