Étiquetez Outlook MailItem avec le numéro d’identification avant l’envoi sans provoquer l’envoi de TNEF (RTF)

J’ai un complément Outlook qui assigne un UserProperty à un MailItem avant qu’il ne soit envoyé:

Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText); prop.Value = "YYYY"; 

Il est connu (voir Empêcher Outlook de convertir HTML en RTF, par exemple), ce qui entraîne l’envoi du courrier électronique à l’aide de TNEF (le format RTF, le redoutable winmail.dat).

Ma question est la suivante: est-il prudent de simplement annuler la définition de la propriété TNEF? Le code suivant fera cela:

 mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8582000B", false); 

Le problème ici est que je dois le faire sur ItemSend – je ne peux pas le faire immédiatement après avoir défini la propriété, car il est toujours false à ce stade. Cela ne devient true lorsque je clique sur Envoyer.

Le fait de désélectionner la propriété TNEF signifiera que la propriété ne sera pas envoyée avec le courrier électronique. Je crains davantage qu’il y ait peut-être d’autres situations dans lesquelles TNEF est réellement nécessaire et que ce code les violerait.

Ou encore, existe-t-il un meilleur moyen de “baliser” un courrier électronique avec un numéro d’identification personnalisé avant son envoi?

N’utilisez pas la collection UserProperties pour baliser un message – il met à jour le blob avec la définition des propriétés de l’utilisateur et la propriété nommée dans laquelle la valeur de prop de l’utilisateur est stockée. Si vous utilisez MailItem.PropertyAccessor.SetProperty pour définir ce dernier sans définir le premier, Outlook ne forcera pas le format TNEF.

Il est prudent de définir la propriété UseTnef sur false, à moins que vous n’envoyiez au format RTF. Vérifiez si cette propriété est définie sur true avant de la réinitialiser.

Il n’ya rien d’étrange à empêcher l’envoi de winmail.dat. Vous pouvez continuer à désélectionner la propriété TNEF dans l’événement ItemSend.

Attention, Outlook suit les messages associés à l’aide de Conversations. Vous pouvez utiliser les propriétés associées à Conversation * (* ID + * Index) pour identifier les courriels dans votre boîte de réception.

Voir Outlook incorpore-t – il un MessageID ou un équivalent dans ses éléments de courrier électronique? pour plus d’informations.