Provisionner des x-headers à l’aide d’EWS dans Exchange

Découvrez comment provisionner des en-têtes x pour une boîte aux lettres à l’aide de l’API managée EWS ou EWS dans Exchange.

Les en-têtes X sont des en-têtes non standard qui sont ajoutés à la collection d’en-têtes d’un e-mail pour communiquer des informations. Par exemple, Exchange marque les messages avec l’en-tête X-MS-Exchange-Organization-SCL pour indiquer le niveau de confiance du courrier indésirable (SCL) attribué à l’e-mail. Email clients comme Outlook peuvent utiliser ces informations pour déterminer le type d’action à effectuer sur l’e-mail (par exemple, Outlook peut empêcher l’affichage d’images, sauf si l’utilisateur effectue une action).

Exchange ajoute des x-headers entrants au schéma de boîte aux lettres en tant que propriété nommée la première fois qu’il reçoit un e-mail avec cet en-tête x. La valeur x-header n’est pas enregistrée sur ce premier e-mail ; Toutefois, il est enregistré sur tous les e-mails suivants qui incluent l’en-tête x. Pour cette raison, votre application doit provisionner des en-têtes x avant de vous attendre à les utiliser. Le mappage entre une propriété nommée et un x-header se produit dans le transport de l’e-mail vers la boîte aux lettres. Cela signifie que vous devez recevoir l’e-mail via la livraison de transport ; Vous ne pouvez pas simplement enregistrer un e-mail qui inclut l’en-tête x dans une boîte aux lettres pour créer le mappage à une propriété nommée.

Remarque

Si vous constatez que les en-têtes x ne sont pas enregistrés, déterminez si un agent de transport ou un pare-feu d’en-têtes filtre vos en-têtes x avant qu’ils n’accèdent à la boîte aux lettres. r

Provisionner un x-header à l’aide de l’API managée EWS

L’exemple de code suivant montre comment utiliser la méthode EmailMessage.Send de l’API managée EWS pour provisionner un en-tête x pour une boîte aux lettres. Cet exemple suppose que le service est un objet ExchangeService valide et que la boîte aux lettres cible n’a pas dépassé le quota des propriétés nommées.

private static void ProvisionCustomXHeaderByEmail(ExchangeService service)
{
    // Create a definition for an extended property that will represent a custom x-header. X-headers must be created in the
    // InternetHeaders property set. The x-header name must match the name of the x-header sent in the subsequent emails so
    // the x-header and value are saved on the email.
    ExtendedPropertyDefinition xExperimentalHeader = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.InternetHeaders,
                                                                                            "X-Experimental",
                                                                                            MapiPropertyType.String);
    // Create an item that is used to provision the custom x-header.
    EmailMessage email = new EmailMessage(service);
    email.ToRecipients.Add("user@contoso.com");
    email.SetExtendedProperty(xExperimentalHeader, "Provision X-Experimental Internet message header");
    try
    {
        // The mapping of the named property happens in transport delivery.
        email.Send();
        if (service.ServerInfo.MajorVersion == 12)
        {
            Console.WriteLine("Provisioned the X-Experimental across the mailbox database that hosts the user's mailbox.");
        }
        else // For versions of Exchange starting with Exchange 2010
        {
            Console.WriteLine("Provisioned the X-Experimental for the user's mailbox. You will need to run this " +
                                "for each mailbox that needs to process this x-header.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error: {0}", ex.Message);
    }
}

Provisionner un x-header à l’aide d’EWS

L’exemple de code suivant montre comment utiliser l’opération CreateItem EWS pour créer et envoyer un e-mail afin de provisionner une boîte aux lettres avec un x-header. Il s’agit de la requête XML envoyée par l’API managée EWS lorsque vous approvisionnez un x-header à l’aide de l’API managée EWS.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013" />
  </soap:Header>
  <soap:Body>
    <m:CreateItem MessageDisposition="SendOnly">
      <m:Items>
        <t:Message>
          <t:ExtendedProperty>
            <t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders"
                                PropertyName="X-Experimental"
                                PropertyType="String" />
            <t:Value>Provision X-Experimental Internet message header</t:Value>
          </t:ExtendedProperty>
          <t:ToRecipients>
            <t:Mailbox>
              <t:EmailAddress>user@contoso.com</t:EmailAddress>
            </t:Mailbox>
          </t:ToRecipients>
        </t:Message>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

Différences entre les versions

La première fois que vous approvisionnez un en-tête x dans Exchange Online, Exchange Online dans le cadre de Office 365 ou une version locale d’Exchange à compter de Exchange Server 2010, la valeur d’un nouvel en-tête x personnalisé n’est pas écrite dans le message stocké. Cela est dû au fait que l’en-tête x doit d’abord être mappé à une propriété nommée dans la boîte aux lettres de l’utilisateur. Le mappage se produit lors de la première demande d’ajout des propriétés nommées. Lorsqu’une demande suivante de création de la propriété nommée se produit, la propriété et la valeur sont stockées sur le message. Dans Exchange 2007, la première fois qu’un en-tête x est écrit dans une base de données de boîtes aux lettres, un mappage est créé pour l’en-tête x à une propriété nommée dans la base de données de boîtes aux lettres. Lorsqu’une demande suivante de création de la propriété nommée se produit, l’en-tête x est traité et stocké pour toute boîte aux lettres dans la base de données Exchange 2007.

Étapes suivantes

Cet article explique comment provisionner un en-tête x pour une boîte aux lettres unique en envoyant un e-mail à un utilisateur. Vous pouvez également provisionner un en-tête x pour de nombreux utilisateurs en envoyant un e-mail par lot à une liste de destinataires dans l’organisation de l’appelant.

Voir aussi