Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/09/2011, 11h41   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 65
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 65
Points : 25
Points : 25
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 :
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 :
1
2
MonMail.Recipients(n).Address
MonMail.Recipients(n).AddressEntry
me renvoient des machins qui me sont inutiles :
Code :
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 :-)
PaulR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 22h29   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

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

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 597
Points : 1 597
Envoyer un message via MSN à carden752
Bonjour,

Peut-être essayer de récupérer l'adresse du contact
Code :
monmail.Recipients.Item(1).AddressEntry.GetContact.Email1Address
Cela peut aussi être email2address ou email3address
Et pour l'envoi l'adresse du contact émetteur
Code :
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
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 08h31   #3
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 65
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 65
Points : 25
Points : 25
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 :
Dim MonMail As Outlook.Selection
Merci en tout cas,

Paul
PaulR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 11h00   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Tiens voilà une petite fonction à tester et peu-être à améliorer :




Code :
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 :
1
2
3
4
5
6
7
 
 
  If MonMail SenderEmailType = "EX" Then
    Debug.Print RetrouveAdress(MonMail.SenderEmailAddress)
  Else
    Debug.Print MonMail.SenderEmailAddress
  End If
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h23.


 
 
 
 
Partenaires

Hébergement Web