2016-10-06 3 views
0

J'ai un addin Outlook 2013 avec un Eventhandler ItemSend que je n'arrive pas à utiliser correctement.Pourquoi MailItems est-il créé dans le dossier Éléments envoyés affiché en mode composition dans Outlook 2013

Ce qu'il fait est:

  1. boucles tous les destinataires (à, cc, bcc) et crée une copie distincte pour chaque seulement que le courrier électronique comme destinataire et les envoie. Puis les supprime du dossier de courrier envoyé. Cela fonctionne bien.

  2. Crée une copie supplémentaire, contenant les informations d'origine, cc et bcc. Utilise la méthode move pour le déplacer vers le dossier Éléments envoyés, car Enregistrer le mettrait dans la boîte d'envoi. Il ne doit pas être réellement envoyé, il devrait être juste votre copie personnelle comme si elle aurait été envoyée normalement.

  3. Définit cancel = true et ferme la fenêtre de l'inspecteur avec rejeter, de sorte que l'original n'est jamais envoyé non plus. Cela fonctionne aussi.

Le problème est la copie enregistrée. Quand je l'ouvre, c'est en mode composition. Fondamentalement, c'est la même chose que ce serait un projet. Je veux le voir tel qu'il aurait été envoyé, en mode lecture. J'ai lu que la propriété Sent-détermine le mode dans lequel l'afficher, mais cette propriété est en lecture seule, tout comme SentOn qui est null et ce serait aussi un problème même si le mode est correct. Y at-il un moyen de contourner cela?

J'ai même essayé de prendre l'un des autres mails qui ont été réellement envoyés, du dossier Éléments envoyés, éditer le contenu et l'enregistrer. Mais cela entraîne le même comportement. Aussi que MailItem a Sent = False et SentOn = null. Cela peut-il être dû au fait qu'il n'a pas encore été envoyé, même si Send-a été appelé, car nous sommes toujours en train d'exécuter EventHandler et je ne pense pas qu'Outlook l'envoie réellement dans un autre thread?

De toute façon, cela ne semble pas être une solution de contournement.

Des idées pour implémenter ce type de fonctionnalité? Sur le niveau bas (MAPI étendu), le bit MSGFLAG_UNSENT peut être supprimé de la propriété PR_MESSAGE_FLAGS uniquement avant la première sauvegarde de l'élément (limitation MAPI).

Répondre

0

Le seul élément de MOO créé dans l'état envoyé est l'élément de publication. Créez un article de publication, remplacez sa propriété MessageClass par IPM.Note, enregistrez-la, rappelez-vous l'ID de l'article, publiez l'article en utilisant Marshal.ReleaseComObject (dans le cas de .Net), puis rouvrez-le en utilisant Namespace.GetItemfromId - vous aurez MailItem objet dans l'envoi Etat. Vous devrez toujours mettre à jour/supprimer la propriété PR_ICON_INDEX pour vous assurer que l'icône est correcte.

Si vous utilisez Redemption est une option, il permet de définir la propriété Sent (avant l'enregistrement), ainsi que SentOn/ReceivedTime/Sender/SentOnBehalfOf propriétés.

Du haut de ma tête:

RDOSession rdoSession = new RDOSession(); 
rdoSession.MAPIOBJECT = Globals.ThisAddIn.Application.Session.MAPIOBJECT; 
RDOFolder rdoFolder = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderSentMail); 
RDOMail rdoItem = rdoInbox.Items.Add("IPM.Note"); 
rdoItem.Sent = true; 
rdoItem.Recipients.AddEx("Joe The User", "[email protected]", "SMTP"); 
rdoItem.Subject = "test"; 
rdoItem.Body = "test body"; 
rdoItem.UnRead = false; 
rdoItem.SentOn = rdoItem.ReceivedTime = new DateTime(2016, 10, 6, 8, 44, 0); 
rdoItem.Sender = rdoItem.SentOnBehalfOf = rdoSession.CurrentUser; 
rdoItem.Save(); 
+0

Merci, j'ai utilisé ce truc PostItem et cela a fonctionné. – SamiR

+0

Encore une question à ce sujet. Je fais le postitem et enregistrer etc. pour faire un mailitem. Ensuite, je mets à jour tous les champs, sujet, corps, à, cc etc. Mais comment puis-je reconstruire la collection Recipients. Il n'a aucune méthode .Add (destinataire destinataire), seulement .Add (nom de la chaîne) Je veux ajouter le même type d'objet – SamiR

+0

. Je peux ajouter avec le nom, ou les ajouter aux champs "À" et "CC", mais cela fait différents types d'objets de destinataire et cause des problèmes plus tard avec des adresses d'échange, qui ne deviennent pas claires mais , ou = Etc .... "type d'adresses. – SamiR