Freigeben über


Bereitstellen von x-Headern mithilfe von EWS in Exchange

Erfahren Sie, wie Sie X-Header für ein Postfach mithilfe der verwalteten EWS-API oder EWS in Exchange bereitstellen.

X-headers are non-standard headers that are added to the header collection of an email to communicate information. For example, Exchange stamps messages with the X-MS-Exchange-Organization-SCL header to indicate the spam confidence level (SCL) attributed to the email. Email clients like Outlook can use that information to determine what type of action to take on the email (for example, Outlook can prevent images from displaying unless the user takes an action).

Exchange fügt dem Postfachschema eingehende x-Header als benannte Eigenschaft hinzu, wenn es zum ersten Mal eine E-Mail mit diesem X-Header empfängt. Der x-header-Wert wird in dieser ersten E-Mail nicht gespeichert. es wird jedoch in allen nachfolgenden E-Mails gespeichert, die den x-Header enthalten. Aus diesem Grund sollte Ihre Anwendung X-Header bereitstellen, bevor Sie sie verwenden. Die Zuordnung zwischen einer benannten Eigenschaft und einem x-Header erfolgt bei der Transportübermittlung der E-Mail an das Postfach. Dies bedeutet, dass Sie die E-Mail per Transportzustellung erhalten müssen; Sie können eine E-Mail, die den x-Header enthält, nicht einfach in einem Postfach speichern, um die Zuordnung zu einer benannten Eigenschaft zu erstellen.

Hinweis

[!HINWEIS] Wenn Sie feststellen, dass die X-Header nicht gespeichert werden, müssen Sie ermitteln, ob ein Transport-Agent oder eine Header-Firewall die X-Header herausfiltern, bevor sie das Postfach erreichen. r

Bereitstellen eines X-Headers mithilfe der EWS Managed API

Im folgenden Codebeispiel wird gezeigt, wie die EmailMessage.Send-Methode der EWS Managed API zur Bereitstellung eines X-Headers für ein Postfach verwendet wird. In diesem Beispiel wird vorausgesetzt, dass service ein gültiges ExchangeService-Objekt ist und dass dieses Zielpostfach nicht das Kontingent für benannte Eigenschaftenüberschritten hat.

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

Bereitstellen eines X-Headers mithilfe von EWS

Im folgenden Codebeispiel wird gezeigt, wie der CreateItem-Vorgang von EWS zum Erstellen und Senden eine E-Mail verwendet wird, um einen X-Header für ein Postfach bereitzustellen. Dies ist die XML-Anforderung, die von der EWS Managed API gesendet wird, wenn Sie Bereitstellen eines X-Headers mithilfe der EWS Managed API.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="http://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>

Versionsunterschiede

Wenn Sie das erste Mal einen X-Header in Exchange Online, Exchange Online als Teil von Office 365 oder auf einer lokalen Version von Exchange ab Exchange Server 2010 bereitstellen, wird der Wert eines neuen benutzerdefinierten X-Headers nicht in die gespeicherte Nachricht geschrieben. Dies liegt daran, dass der X-Header zuerst einer benannten Eigenschaft im Postfach des Benutzers zugeordnet werden muss. Die Zuordnung erfolgt bei der ersten Anforderung zum Hinzufügen der benannten Eigenschaften. Wenn eine nachfolgende Anforderung zum Erstellen der benannten Eigenschaft auftritt, werden die Eigenschaft und der Wert für die Nachricht gespeichert. In Exchange 2007 wird eine Zuordnung für den X-Header zu einer benannten Eigenschaft über die Postfachdatenbank hinweg erstellt, wenn ein X-Header das erste Mal in eine Postfachdatenbank geschrieben wird. Wenn eine nachfolgende Anforderung zum Erstellen der benannten Eigenschaft auftritt, wird der X-Header verarbeitet und für jedes Postfach in der Exchange 2007-Datenbank gespeichert.

Nächste Schritte

In diesem Artikel wird gezeigt, wie ein X-Header für ein einzelnes Postfach durch Senden einer E-Mail an einen Benutzer bereitgestellt wird. Sie können einen X-Header auch für viele Benutzer bereitstellen, indem Sie eine Stapel-E-Mail an eine Liste von Empfängern in der Organisation des Anrufers senden.

Siehe auch