Share via


Aprovisionamiento de encabezados X mediante EWS en Exchange

Obtenga información sobre cómo aprovisionar encabezados x para un buzón mediante la API administrada de EWS o EWS en Exchange.

Los encabezados X son encabezados no estándar que se agregan a la colección de encabezados de un correo electrónico para comunicar información. Por ejemplo, Exchange marca los mensajes con el encabezado X-MS-Exchange-Organization-SCL para indicar el nivel de confianza de correo no deseado (SCL) que se atribuye al correo electrónico. Email clientes como Outlook pueden usar esa información para determinar qué tipo de acción realizar en el correo electrónico (por ejemplo, Outlook puede impedir que se muestren imágenes a menos que el usuario realice una acción).

Exchange agrega encabezados X entrantes al esquema de buzón de correo como una propiedad con nombre la primera vez que recibe un correo electrónico con ese encabezado x. El valor del encabezado x no se guarda en ese primer correo electrónico; sin embargo, se guarda en todos los correos electrónicos posteriores que incluyen el encabezado x. Por este motivo, la aplicación debe aprovisionar encabezados X antes de esperar usarlos. La asignación entre una propiedad con nombre y un encabezado x se produce en la entrega de transporte del correo electrónico al buzón. Esto significa que debe recibir el correo electrónico a través de la entrega de transporte; no puede guardar simplemente un correo electrónico que incluya el encabezado x en un buzón para crear la asignación a una propiedad con nombre.

Nota:

Si detecta que los encabezados X no se guardan, determine si un agente de transporte o un firewall de encabezados filtra los encabezados x antes de que lleguen al buzón. r

Aprovisionamiento de un encabezado x mediante la API administrada de EWS

En el ejemplo de código siguiente se muestra cómo usar el método EmailMessage.Send de la API administrada de EWS para aprovisionar un encabezado x para un buzón. En este ejemplo se supone que el servicio es un objeto ExchangeService válido y que el buzón de correo de destino no ha superado la cuota de propiedades con nombre.

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);
    }
}

Aprovisionamiento de un encabezado x mediante EWS

En el ejemplo de código siguiente se muestra cómo usar la operación CreateItem de EWS para crear y enviar un correo electrónico para aprovisionar un buzón con un encabezado x. Esta es la solicitud XML que envía la API administrada de EWS al aprovisionar un encabezado x mediante la API administrada de 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>

Diferencias de versión

La primera vez que aprovisione un encabezado x en Exchange Online, Exchange Online como parte de Office 365 o una versión local de Exchange a partir de Exchange Server 2010, el valor de un nuevo encabezado X personalizado no se escribirá en el mensaje almacenado. Esto se debe a que el encabezado x debe asignarse primero a una propiedad con nombre en el buzón del usuario. La asignación se produce en la primera solicitud para agregar las propiedades con nombre. Cuando se produce una solicitud posterior para crear la propiedad con nombre, la propiedad y el valor se almacenan en el mensaje. En Exchange 2007, la primera vez que se escribe un encabezado X en una base de datos de buzón, se crea una asignación para el encabezado x a una propiedad con nombre en la base de datos de buzón. Cuando se produce una solicitud posterior para crear la propiedad con nombre, el encabezado x se procesa y almacena para cualquier buzón de correo de la base de datos de Exchange 2007.

Pasos siguientes

En este artículo se muestra cómo aprovisionar un encabezado x para un único buzón enviando un correo electrónico a un usuario. También puede aprovisionar un encabezado X para muchos usuarios enviando un correo electrónico por lotes a una lista de destinatarios de la organización del autor de la llamada.

Vea también