2016-02-05 4 views
0

Je suis en train d'ajouter un élément de propriété comme suit:Perspectives Addin - ItemProperties.Add changer le format de courrier

Microsoft.Office.Interop.Outlook.ItemProperty property = currentMail.ItemProperties.Add("isCopy", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olYesNo); 
property.Value = false; 

La question est qu'il est en train de changer le format de courrier électronique.

Avant d'ajouter cette propriété l'e-mail a été envoyé comme suit:

au format enter image description here

Après avoir ajouté cette propriété l'e-mail sont envoyés comme suit:

Pas FORMATTé avec fichier joint enter image description here

En outre, j'ai déjà essayé UserProperties.Add. Le comportement est le même.

+0

Avez-vous besoin que la propriété de l'utilisateur soit attachée au message s'il va à la destination? Ou vous voulez juste qu'il soit stocké dans la copie locale du message? –

+0

Je n'en ai pas besoin pour aller à destination. Mais j'ai besoin d'accéder à ces données au cas où l'utilisateur garderait l'email dans le brouillon pour la future mise à jour. – Gabriel

Répondre

0

En ajoutant une propriété utilisateur, Outlook envoie un message au format TNEF (RTF) (le fameux winmail.dat).

Vous pouvez définir la propriété par le nom DASL utilisant MailItem.PropertyAccessor.SetProperty (jnstead de l'utilisation UserProperties.Add) ou définir une UseTnef spéciale propriété nommée false à l'aide MailItem.PropertyAccessor.SetProperty("MailItem.PropertyAccessor.SetProperty", false) avant intitulant Envoyer.

+0

Merci beaucoup! Je l'ai déjà testé et ça fonctionne. Je devrais juste définir la propriété de cette façon: 'MailItem.PropertyAccessor.SetProperty (" http://schemas.microsoft.com/mapi/string/{FFF40745-D92F-4C11-9E14-92701F001EB3}/myPropertyName ", valeur); '. Il s'agit de l'espace de noms valide. – Gabriel

+0

Le GUID peut être ce que vous voulez - tant que vous utilisez la même valeur. Colonne UserProperties utilise le guid PS_PUBLIC_STRINGS. –

0

J'ai implémenté une solution de contournement pas élégante juste pour ne pas être coincé.

Comme je l'ai déjà dit, j'ai besoin de savoir si le MailItem est une copie ou non. Donc, je sauvegarde l'EntryID dans une liste de copies.

objet X:

thisAddIn.AddEntryIdCopy(mailItem.EntryID); 

objet Y:

thisAddIn.ContainsEntryIdCopy(mailItem.EntryID) 

Ps .: En raison du fait que le ENTRYID est modifié lorsque le MailItem est déplacé dans un autre dossier, de cette façon fonctionnera tant que le MailItem est dans le même dossier.