2017-09-12 8 views
0

Pourquoi le code sur le lien ci-dessous enregistre-t-il l'e-mail en tant que brouillon? Lorsque j'ouvre l'e-mail enregistré, il s'ouvre sous la forme d'un objet prêt à envoyer au lieu d'un objet msg (comme lorsque vous copiez/collez un e-mail sur votre bureau puis l'ouvrez). Je souhaite obtenir un résultat similaire lorsque vous copiez/collez un e-mail afin qu'il ne s'ouvre pas en tant que prêt à envoyer un e-mail; pouvez-vous s'il vous plaît laissez-moi savoir comment faire cela? Merci d'avance pour toute aide fournie!Outlook VBA SaveAs .msg sans l'ouvrir comme brouillon

Outlook VBA macro for saving emails copies in a local folder

de certains tests, il semble que le .SaveAs fonctionne très bien pour les e-mails sélectionnés, mais parce que cet e-mail fait partie de l'événement Applicaiton_ItemSend il est encore sous forme de projet ...

+1

Donc, cette question demande essentiellement des éclaircissements sur une autre question SO? Ce n'est pas comment ce site fonctionne. S'il vous plaît faites votre question claire et autonome. –

Répondre

0

Parce que le temps Application.ItemSend Si l'événement se déclenche, le message est toujours en mode non envoyé (brouillon). Le plus précis dans lequel vous pouvez accéder au message dans l'état envoyé est lorsque l'événement Items.ItemAdd se déclenche dans le dossier Éléments envoyés. En prime, le message contiendra également toutes les informations relatives à l'expéditeur.

Si vous avez toujours besoin d'utiliser l'événement Application.ItemSend, vous pouvez le faire apparaître envoyé en utilisant MAPI étendu (C++ ou Delphi uniquement) ou Redemption (n'importe quelle langue). Normalement, un message peut être marqué comme envoyé seulement avant qu'il ne soit enregistré pour la toute première fois (limitation MAPI), mais cette restriction ne s'applique pas aux fichiers MSG autonomes. Dans Redemption (du haut de ma tête):

set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set Item = Session.GetMessageFromMsgFile("c:\temp\test.msg") 
Item.Sent = true 
Item.Save 
+0

Merci d'avoir clarifié cela et en soulignant que l'utilisation d'Items.ItemAdd pour le dossier envoyé fera ce dont j'ai besoin. L'autre moyen est intéressant mais plus compliqué que nécessaire – Nick