Jeudi 18 Juillet 2019  
Navigation
FAQ Outlook
» Foire Aux Questions «
Recherche
Téléchargements
Forums Outlook
Plan du site
Liens
Login

Les inscriptions sont fermées

Pseudo

Mot de passe

Se souvenir de moi



Mot de passe oublié ? Mot de passe oublié ?
Connexions
Bienvenue à [FAMACLUB]
le 1,414ème membre
Visiteurs en ligne : 2
Membres en ligne : 0

 pirobert 9 semaines
 jcgdisle 34 semaines
 EMERGENCY 55 semaines
 beaulieu 66 semaines
 callaghi 70 semaines
 Charlie76 76 semaines
 joscopp 86 semaines
 JièL 86 semaines
 julbast 87 semaines
 zorro71 111 semaines

Non activés :0

Nombre de visiteurs
depuis le : 12/11/2008

Aujourd'hui:3 817
En ligne :2
Max. en ligne:312
Max. / jour:66 529
Total hier:7 892
Total ce mois:94 239
Total visites:22 170 983
Moyenne/jour:5 686

Dernières 24h

























Publicité ; elle permet de financer le site
Voir le sujet
Poster sans créer un compte : Cliquez ici

FAQ Outlook » Outlook » VBA Outlook (fermé)
Enregistrer dans la boite de réception un email reçu en PJ
Pseudo
Mot de passe
S'enregistrer FAQ Membres Aujourd'hui Recherche

Imprimer le sujet

Il y a 441 semaines à 11:26
Avatar du membre

Membre

Messages : 1165
Inscription : 06/01/09
Localisation: sur le net
Âge : 10 ans
Invite
Membre
  Enregistrer dans la boite de réception un email reçu en PJ
 
Bonjour à tous,

je cherche à enregistrer dans ma boite de réception une pièce jointe. Cette pièce jointe est elle-même un message.

Manuellement, le drag-and-drop de cette pièce jointe vers la boite de réception crée bien le message, comme s'il avait été reçu directement.

Mon problème est de le faire automatiquement. Je parviens avec VBA à agir sur le/les pièces jointes du message reçu, mais impossible de lui faire accepter que la pièce jointe est elle-même un message ! Je peux faire un SaveAs sur disque, mais pas Save dans la boite de réception ...

Auriez-vous une idée ?

Merci par avance,
Florian.
 

Il y a 440 semaines à 14:06
Avatar du membre

Membre

Messages : 1165
Inscription : 06/01/09
Localisation: sur le net
Âge : 10 ans
Invite
Membre
RE: Enregistrer dans la boite de réception un email reçu en PJ
 
Je réponds à ma propre question, après quelques heures de recherche. Peut-être existe-t-il d'autres méthodes. Je n'ai trouvé que celle-ci.

Rappel du besoin: je transfère des messages d'un Exchange à l'autre via une règle serveur. Les messages transférés arrivent sous forme d'une pièce jointe dans un message "conteneur". Je souhaite voir dans Outlook non pas le message "conteneur" (venant de mon adresse de transfert, qu'il me faut ouvrir pour trouver la pièce jointe) mais le message d'origine venant de l'expéditeur réel.

Problème : comment extraire le mail d'origine, pièce jointe dans le message "conteneur", et l'enregistrer dans Inbox ?

Solution trouvée : Il m'a fallu passer par un enregistrement sur disque de la pièce jointe (.SaveAsFile) pour pouvoir la relire (.OpenSharedItem) en tant que e-mail.

Comportement : Lorque le message "conteneur" arrive, il apparaît brièvement dans Inbox. Il disparait et le message d'origine apparaît à la place.

Voici ce que donne le code, à placer dans ThisOutlookSession :
Télécharger la source  GeSHi: Visual Basic
  1. Dim WithEvents colReceivedItems As Items
  2.  
  3. Private Sub Application_Startup()
  4. Dim NS As Outlook.NameSpace
  5. Set NS = Application.GetNamespace("MAPI")
  6. Set colReceivedItems = NS.GetDefaultFolder(olFolderInbox).Items
  7. Set NS = Nothing
  8. End Sub
  9.  
  10. Private Sub colReceivedItems_ItemAdd(ByVal Item As Object)
  11. Dim myOlApp As New Outlook.Application
  12. Dim myMailAttach, myNewMail As Outlook.MailItem
  13. Set myNamespace = myOlApp.GetNamespace("MAPI")
  14.  
  15. If (Item.SenderEmailAddress = "mon_adresse_de_transfert_ici") Then
  16. Dim oAttachment As Outlook.Attachment
  17. For Each oAttachment In Item.Attachments
  18.  
  19. oAttachment.SaveAsFile ("c:\MessageAuto.msg")
  20. Set myMailAttach = myNamespace.OpenSharedItem("c:\MessageAuto.msg")
  21. Set myNewMail = myMailAttach.Copy
  22. myNewMail.Subject = "2222"
  23. myNewMail.Save
  24. myNewMail.Delete
  25.  
  26. Next
  27.  
  28. Item.Delete
  29. Set oAttachment = Nothing
  30.  
  31. End If
  32.  
  33. Set myNamespace = Nothing
  34. Set myMailAttach = Nothing
  35. Set myNewMail = Nothing
  36. Set Item = Nothing
  37. Set myOlApp = Nothing
  38.  
  39. End Sub
Analysé en 0.013 secondes, avec GeSHi 1.0.7.20


  • Pourquoi une copie en double avec un Delete juste derrière ?
La question est bonne. Je pensais mettre uniquement un myMailAttach.Save mais rien à faire, le message n'apparaîssait pas dans Inbox. Si quelqu'un voit pourquoi ...

Florian.
 

Il y a 440 semaines à 19:59
Membre

Messages : 218
Inscription : 08/06/10
Geo
Membre
RE: Enregistrer dans la boite de réception un email reçu en PJ
 
Bonsoir

Ce qui aurait été intéressant c'est de savoir si la procédure appliquée telle quelle donne le bon résultat.
si oui, quel est le type de myMAil Attach après la ligne 20 ?
 

Il y a 440 semaines à 11:23
Avatar du membre

Membre

Messages : 1165
Inscription : 06/01/09
Localisation: sur le net
Âge : 10 ans
Invite
Membre
RE: Enregistrer dans la boite de réception un email reçu en PJ
 
Geo, je ne suis pas sûr de comprendre ton message, je suis peut-être à coté de la plaque ...
Ce qui aurait été intéressant c'est de savoir si la procédure appliquée telle quelle donne le bon résultat.
Sur mon Outlook 2007, la procédure que j'ai indiqué fait ce que j'en attendait, c'est à dire "sortir" la pièce jointe du message "conteneur" et supprimer ce conteneur. Je me retrouve bien avec le message d'origine (celui qui m'a été renvoyé par "Faire suivre" sur un autre Exchange) dans la Inbox.
si oui, quel est le type de myMAil Attach après la ligne 20 ?
La variable myMailAttach est créée de type MailItem. Pourrait-elle changer de type en cours de route ?

Entre-temps, j'ai ajouté ce test en début de traitement, afin d'exclure les messages administratifs qui ne portent pas de SenderEmailAddess :
Télécharger la source  GeSHi: Visual Basic
  1. If Not (Item.MessageClass Like "*REPORT.IPM*") Then
Analysé en 0.002 secondes, avec GeSHi 1.0.7.20

Florian.
 

Il y a 440 semaines à 21:03
Membre

Messages : 218
Inscription : 08/06/10
Geo
Membre
RE: Enregistrer dans la boite de réception un email reçu en PJ
 
Bonsoir

J'avoue ne pas comprendre non plus ce code, mais c'est complètement différent de chercher pourquoi une procédure ne marche pas, ou comment elle marche.
C'est pourquoi il est important de savoir que cette procédure donne le résultat escompté.

Non la variable myMailAttach n'est pas de type MailItem, elle est de type Variant.
C'est un piège du vba :
Dim myMailAttach, myNewMail As Outlook.MailItem
déclare simplement myMailAttach, sans type et myNewMail de type mailitem.

L'aide dit que OpenShare retourne un objet dont "Le type correspond au type de l’élément qui a été enregistré en tant que fichier .msg".
J'aurais été curieux de savoir.

Ce code, vous l'avez trouvé, je suppose, ça fait penser à quelqu'un qui a cherché un peu dans tous les sens, a travaillé en pas à aps, mais n'a pas nettoyé son code après coup.

Le Copy est utilisé pour récupérer le contenu de l'objet au lieu d'avoir un simple lien.
Dans l'aide de Set il est dit :
"En règle générale, lorsque vous utilisez l'instruction Set pour associer une référence d'objet à une variable, aucune copie de l'objet n'est créée pour cette variable. En revanche, c'est une référence à l'objet qui est créée. Plusieurs variables objets peuvent faire référence au même objet. Ces variables constituant des références à l'objet et non des copies de ce dernier, toute modification apportée à l'objet est répercutée sur toutes les variables associées. Toutefois, lorsque vous utilisez le mot clé New dans l'instruction Set, vous créez en réalité une instance de l'objet."

Donc vous faites un
Set v = MonObjet
MonObjet.Delete

v est devenu "nothing"

Donc on fait
Set v = MonObjet
Set c = MonObjet.Copy
MonObjet.Delete

c a conservé la copie de l'objet.
Dans le cas cité j'aurais mis un
mynewmail.Move dossier
Plutôt que les trois lignes citées.

Mais il faut que je relise tout le sujet, pour bien comprendre ce qui vous manque.
 

Aller vers le forum :
Forum powered by fusionBoard
Partager ce sujet
Ajouter aux favoris : 
URL :
BBcode :
HTML :
Cliquez ci dessus sur le lien que vous voulez copier et [Ctrl] + [C] ou cliquez sur le bouton [ C ]
Sujets similaires
Sujet Forum Réponses Dernier Post
Activer le suivi (tache) d'un message dans outlook 2007 Outlook 2010 (fermé) 0 18/08/11 08:27
Mauvais format des messages dans Brouillons Outlook 2007 (fermé) 1 25/07/11 10:50
compte exchange et pop3 dans le même fichier de donnée Outlook 2010 (fermé) 9 05/07/11 11:27
1 contact dans 2 dossiers Outlook 2010 (fermé) 3 27/06/11 00:00
annexé une nouvelle boîte aux lettre Outlook 2007 (fermé) 1 20/06/11 14:03

aucun Crack, CrackZ, no-CD, DownloadZ, TelechargementZ, Serial, Numéro de série, N0 de série, Serialz ni Keygen pour Outlook sur ce site.

[/\] Copyright JièL / Jean-Louis Goubert © 2003-2009 [/\]