Hinzufügen von Anlagen mithilfe von EWS in Exchange

Erfahren Sie, wie Sie mithilfe der verwalteten EWS-API oder EWS in Exchange neue Elemente mit Anlagen erstellen oder vorhandenen Elementen Anlagen hinzufügen.

Sie können neuen oder vorhandenen Elementen mithilfe der verwalteten EWS-API oder EWS Dateianlagen oder Elementanlagen hinzufügen. Wenn Sie die verwaltete EWS-API verwenden, verwenden Sie dieselbe Methode, um neuen oder vorhandenen Elementen Anlagen hinzuzufügen. Die Methode ändert sich jedoch, wenn Sie eine Datei- oder Elementanlage verwenden. Umgekehrt verwenden Sie bei Verwendung von EWS denselben Vorgang, um einem Element entweder eine Datei- oder Elementanlage hinzuzufügen, aber der Vorgang ändert sich, wenn Sie die Anlage einem neuen oder vorhandenen Element hinzufügen.

Tabelle 1. Verwaltete EWS-API-Methoden und EWS-Operationen für das Hinzufügen von Anlagen

Aufgabe EWS Managed API-Methode EWS-Vorgang
Hinzufügen einer Dateianlage zu einer neuen oder vorhandenen E-Mail
AttachmentCollection.AddFileAttachment
CreateItem für eine neue E-Mail
CreateAttachment zum Hinzufügen zu einer vorhandenen E-Mail
Hinzufügen einer Elementanlage zu einer neuen oder vorhandenen E-Mail
AttachmentCollection.AddItemAttachment
CreateItem für eine neue E-Mail
CreateAttachment zum Hinzufügen zu einer vorhandenen E-Mail

Erstellen einer E-Mail mit Datei- und Elementanlagen mithilfe der verwalteten EWS-API

Im folgenden Codebeispiel wird gezeigt, wie Sie eine E-Mail mit mehreren Dateianlagen und einer Elementanlage erstellen:

  1. Verwenden des EmailMessage-Objekts zum Erstellen einer E-Mail-Nachricht.

  2. Verwenden der Methoden AttachmentCollection.AddFileAttachment und AttachmentCollection.AddItemAttachment zum Hinzufügen von Anlagen zur Nachricht.

  3. Verwenden sie die EmailMessage.SendAndSaveCopy-Methode , um die Nachricht an die Empfänger zu senden und die Nachricht im Ordner Gesendete Elemente zu speichern.

In diesem Codebeispiel werden die vier Möglichkeiten veranschaulicht, wie eine Dateianlage mithilfe der verwalteten EWS-API zu einem Element hinzugefügt werden kann:

  • Mithilfe eines vollqualifizierten Dateispeicherorts.

  • Mithilfe eines vollqualifizierten Dateispeicherorts und eines neuen Anlagennamens.

  • Mithilfe eines Bytearrays.

  • Mithilfe eines Datenstroms.

Beachten Sie, dass die Elementanlage in diesem Beispiel gleichzeitig mit der E-Mail-Nachricht erstellt wird. Informationen zum Hinzufügen einer vorhandenen E-Mail-Nachricht als Elementanlage finden Sie unter Hinzufügen eines vorhandenen Elements zu einer neuen E-Mail mithilfe von MimeContent und der verwalteten EWS-API.

In diesem Beispiel wird davon ausgegangen, dass service ein gültiges ExchangeService-Objekt ist und der Benutzer bei einem Exchange-Server authentifiziert wurde.

public static void CreateEmailWithAttachments(ExchangeService service)
{
    // Create an email message and set properties on the message.
    EmailMessage message = new EmailMessage(service);
    // Set properties on the email message.
    message.Subject = "Message with Attachments";
    message.Body = "This message contains four file attachments 
        and one message item attachment.";
    message.ToRecipients.Add("sadie@contoso.com");
    message.ToRecipients.Add("ronnie@contoso.com");
    // Add a file attachment by using the fully qualified location of the file. 
    message.Attachments.AddFileAttachment("C:\\temp\\FileAttachment.txt");
    // Add a file attachment by using the fully qualified string name, 
    // and specify the name of the attachment as it will appear in the email.
    // The new name of the file attachment is SecondAttachment.txt.
    message.Attachments.AddFileAttachment("SecondAttachment.txt", "C:\\temp\\FileAttachment2.txt");
    // Add a file attachment by using a byte array.
    // In this example, theBytes is the byte array that represents the content of the image file to attach.
    byte[] theBytes = File.ReadAllBytes("C:\\Temp\\Tulips.jpg");
    // The byte array file attachment is named ThirdAttachment.jpg.
    message.Attachments.AddFileAttachment("ThirdAttachment.jpg", theBytes);
    // Add a file attachment by using a stream.
    FileStream theStream = new FileStream("C:\\temp\\FileAttachment4.txt", FileMode.OpenOrCreate);
    // The streamed file attachment is named FourthAttachment.txt.
    message.Attachments.AddFileAttachment("FourthAttachment.txt", theStream);
    // Add an email message as an item attachment and set properties on the item.
    ItemAttachment<EmailMessage> itemAttachment = message.Attachments.AddItemAttachment<EmailMessage>();
    itemAttachment.Name = "Attached Message Item";
    itemAttachment.Item.Subject = "Message Item Subject";
    itemAttachment.Item.Body = "Message Item Body";
    itemAttachment.Item.ToRecipients.Add("sadie@contoso.com");
    itemAttachment.Item.ToRecipients.Add("ronnie@contoso.com");
    // Send the mail and save a copy in the Sent Items folder.
    // This method results in a CreateItem and SendItem call to EWS.
    message.SendAndSaveCopy();
}

Erstellen einer E-Mail mit Datei- und Elementanlagen mithilfe von EWS

Im folgenden Codebeispiel wird gezeigt, wie Sie mit dem CreateItem-Vorgang eine E-Mail-Nachricht mit vier Dateianlagen und einer Elementanlage erstellen. Dies ist auch eine der XML-Anforderungen, die die verwaltete EWS-API sendet, wenn Sie eine E-Mail mit Datei- und Elementanlagen erstellen.

Beachten Sie, dass die Elementanlage in diesem Beispiel gleichzeitig mit der E-Mail-Nachricht erstellt wird. Informationen zum Hinzufügen einer vorhandenen E-Mail-Nachricht als Elementanlage finden Sie unter Hinzufügen eines vorhandenen Elements zu einer neuen E-Mail mithilfe von MimeContent und der verwalteten EWS-API.

<?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="Exchange2007_SP1" />
  </soap:Header>
  <soap:Body>
    <m:CreateItem MessageDisposition="SaveOnly">
      <m:Items>
        <t:Message>
          <t:Subject>Message with Attachments</t:Subject>
          <t:Body BodyType="HTML">This message contains four file attachments 
              and one message item attachment.</t:Body>
          <t:Attachments>
            <t:FileAttachment>
              <t:Name>FileAttachment.txt</t:Name>
              <t:IsInline>false</t:IsInline>
              <t:IsContactPhoto>false</t:IsContactPhoto>
              <t:Content>VGhpcyBpcyBhIGZpbGUgYXR0YWNobWVudC4=</t:Content>
            </t:FileAttachment>
            <t:FileAttachment>
              <t:Name>SecondAttachment.txt</t:Name>
              <t:IsInline>false</t:IsInline>
              <t:IsContactPhoto>false</t:IsContactPhoto>
              <t:Content>VGhpcyBpcyB0aGUgc2Vjb25kIGZpbGUgYXR0YWNobWVudC4=</t:Content>
            </t:FileAttachment>
            <t:FileAttachment>
              <t:Name>ThirdAttachment.jpg</t:Name>
              <t:IsInline>false</t:IsInline>
              <t:IsContactPhoto>false</t:IsContactPhoto>
              <t:Content>nAoAXNIZMVEZs5GKhdzRcLH/9k=</t:Content>
            </t:FileAttachment>
            <t:FileAttachment>
              <t:Name>FourthAttachment.txt</t:Name>
              <t:IsInline>false</t:IsInline>
              <t:IsContactPhoto>false</t:IsContactPhoto>
              <t:Content>obWVudC4=…</t:Content>
            </t:FileAttachment>
            <t:ItemAttachment>
              <t:Name>Attached Message Item</t:Name>
              <t:IsInline>false</t:IsInline>
              <t:Message>
                <t:Subject>Message Item Subject</t:Subject>
                <t:Body BodyType="HTML">Message Item Body</t:Body>
                <t:ToRecipients>
                  <t:Mailbox>
                    <t:EmailAddress>sadie@contoso.com</t:EmailAddress>
                  </t:Mailbox>
                  <t:Mailbox>
                    <t:EmailAddress>mack@contoso.com</t:EmailAddress>
                  </t:Mailbox>
                </t:ToRecipients>
              </t:Message>
            </t:ItemAttachment>
          </t:Attachments>
          <t:ToRecipients>
            <t:Mailbox>
              <t:EmailAddress>sadie@contoso.com</t:EmailAddress>
            </t:Mailbox>
            <t:Mailbox>
              <t:EmailAddress>ronnie@contoso.com</t:EmailAddress>
            </t:Mailbox>
          </t:ToRecipients>
        </t:Message>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die CreateItem-Anforderung mit einer CreateItemResponse-Nachricht , die den ResponseCode-WertNoError enthält, der angibt, dass die E-Mail und die Anlagen erfolgreich erstellt wurden. Die ItemId der neu erstellten Nachricht und die AttachmentId-Werte für jede anlage sind ebenfalls in der Antwort enthalten. Die Werte einiger Attribute wurden aus Gründen der Lesbarkeit gekürzt.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="939"
                         MinorBuildNumber="12"
                         Version="V2_11"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:CreateItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
                          xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:CreateItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:Message>
              <t:ItemId Id="upV4AAA="
                        ChangeKey="CQAAABYAAAAFI5DJmZv+TLtyLOLIF1S5AAAXuktU" />
              <t:Attachments>
                <t:FileAttachment>
                  <t:AttachmentId Id="6ts3NuI=" />
                </t:FileAttachment>
                <t:FileAttachment>
                  <t:AttachmentId Id="gOIZx1I=" />
                </t:FileAttachment>
                <t:FileAttachment>
                  <t:AttachmentId Id="esRan5I=" />
                </t:FileAttachment>
                <t:FileAttachment>
                  <t:AttachmentId Id="t7sU6s=" />
                </t:FileAttachment>
                <t:ItemAttachment>
                  <t:AttachmentId Id="XgDCggM=" />
                </t:ItemAttachment>
              </t:Attachments>
            </t:Message>
          </m:Items>
        </m:CreateItemResponseMessage>
      </m:ResponseMessages>
    </m:CreateItemResponse>
  </s:Body>
</s:Envelope>

Um diese neu erstellte Nachricht zu senden, rufen Sie den SendItem-Vorgang auf.

Hinzufügen eines vorhandenen Elements zu einer neuen E-Mail mithilfe von MimeContent und der verwalteten EWS-API

Um ein vorhandenes Element als Elementanlage zu einem anderen Element hinzuzufügen, müssen Sie eine neue Elementanlage erstellen und den Inhalt des vorhandenen Elements in das neue Element kopieren. Sie können auf zwei Arten vorgehen:

  1. Wenn Sie speziell mit E-Mail-Nachrichten arbeiten, können Sie den Wert der MimeContent-Eigenschaft aus der E-Mail in die neu erstellte Elementanlage kopieren. Während dieses Vorgangs gehen einige Eigenschaften verloren, z. B. Nachverfolgungsflags und Kategorien, aber dies eignet sich hervorragend für Standard-E-Mail-Nachrichten.

  2. Wenn Sie vollständige Genauigkeit für alle Elementtypen benötigen, können Sie eine Bindung an ein vorhandenes Element herstellen und alle Eigenschaften und erweiterten Eigenschaften in die neue Anlage kopieren.

Das folgende Codebeispiel zeigt den ersten Ansatz, das Kopieren von MimeContent in die neue Elementanlage. In diesem Beispiel wird eine Prozedur gezeigt, wie Sie den Code so ändern können, dass er den zweiten Ansatz verwendet.

In diesem Beispiel wird davon ausgegangen, dass der Dienst ein gültiges ExchangeService-Objekt ist und dass der Benutzer bei einem Exchange-Server authentifiziert wurde, und dass die itemId die ItemId des anzufügenden Elements ist.

public static void CreateEmailExistingItem(ExchangeService service, ItemId itemId)
{        
    // This method results in a GetItem call to EWS.
    EmailMessage msgToAttach = EmailMessage.Bind(service,itemId, 
        new PropertySet(ItemSchema.MimeContent, ItemSchema.Subject));
    // Create an email message and set properties on the message.
    EmailMessage message = new EmailMessage(service);
    message.Subject = "Message with Item Attachment (MimeContent)";
    message.Body = "The attachment to this message was created by copying
        the MimeContent from the original message and adding it to a new item attachment.";
    message.ToRecipients.Add("sadie@contoso.com");
    // Add an email message item attachment and set properties on the item.
    ItemAttachment<EmailMessage> itemAttachment = message.Attachments.AddItemAttachment<EmailMessage>();
    itemAttachment.Item.MimeContent = msgToAttach.MimeContent;
    itemAttachment.Name = msgToAttach.Subject;
    // Send the mail and save a copy in the Sent Items folder.
    // This method results in a CreateItem and SendItem call to EWS.
    message.SendAndSaveCopy();
}

Gehen Sie wie folgt vor, um dieses Beispiel so zu ändern, dass jede der Eigenschaften des vorhandenen Elements in die neue Elementanlage kopiert wird:

  1. Ändern Sie den Eigenschaftensatz, um PropertySet.FirstClassProperties und alle zusätzlichen oder erweiterten Eigenschaften einzuschließen, die Sie benötigen.
// Add additional properties to the PropertySet.
EmailMessage msgToAttach = EmailMessage.Bind(service, itemId, new PropertySet(PropertySet.FirstClassProperties));
  1. Entfernen Sie die folgende Zeile, da Sie die MimeContent-Eigenschaft nicht benötigen.
itemAttachment.Item.MimeContent = msgToAttach.MimeContent;
  1. Wiederholen Sie diese Zeile für jede Eigenschaft, um aus dem vorhandenen Element in die neue Anlage zu kopieren. Kopieren Sie die ItemId nicht in die neue Elementanlage, da dies eine schreibgeschützte Eigenschaft ist.
itemAttachment.Item.Subject = msgToAttach.Subject;
  1. Legen Sie die Eigenschaft PidTagMessageFlags (0x0E070003) für die Anlage auf Gesendet fest.
ExtendedPropertyDefinition sent = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
msgToAttach.Item.SetExtendedProperty(sent, "1");

Hinzufügen eines vorhandenen Elements zu einer neuen E-Mail mithilfe von MimeContent und EWS

Es gibt zwei Möglichkeiten, einem neuen Element ein vorhandenes Element hinzuzufügen:

  1. Wenn Sie speziell mit E-Mail-Nachrichten arbeiten, können Sie den Wert des MimeContent-Elements aus der E-Mail in die neu erstellte Elementanlage kopieren. Während dieses Vorgangs gehen einige Eigenschaften verloren, z. B. Nachverfolgungsflags und Kategorien, aber dies eignet sich hervorragend für Standard-E-Mail-Nachrichten.

  2. Wenn Sie vollständige Genauigkeit für alle Elementtypen benötigen, können Sie eine Bindung an ein vorhandenes Element herstellen und alle Eigenschaften und erweiterten Eigenschaften in die neue Anlage kopieren.

Im folgenden Codebeispiel wird gezeigt, wie sie das MimeContent-Element verwenden, um den Inhalt des ursprünglichen Elements in den MimeContent-Wert der neuen Elementanlage zu kopieren. Im Beispiel werden die folgenden Vorgänge verwendet:

  1. GetItem – Dient zum Abrufen von MimeContent und Subject der Nachricht, die zur Elementanlage der neuen Nachricht wird.

  2. CreateItem – So erstellen Sie die neue E-Mail-Nachricht.

  3. CreateAttachment: Zum Erstellen der neuen Anlage verwenden Sie mimeContent und Subject , die vom GetItem-Vorgang abgerufen werden.

  4. SendItem – Zum Senden und Speichern der Nachricht.

Das Beispiel ruft zunächst mimeContent und subject des vorhandenen Elements ab.

<?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:Body>
    <m:GetItem>
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:MimeContent" />
          <t:FieldURI FieldURI="item:Subject" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:ItemIds>
        <t:ItemId Id="jCrTAAA=" />
      </m:ItemIds>
    </m:GetItem>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die GetItem-Anforderung mit einer GetItemResponse-Nachricht , die den ResponseCode-WertNoError enthält, der angibt, dass die E-Mail erfolgreich abgerufen wurde, sowie mimeContent und Subject der E-Mail.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="944"
                         MinorBuildNumber="11"
                         Version="V2_12"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:GetItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
                       xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:Message>
              <t:MimeContent CharacterSet="UTF-8">tDQe/Eo=…</t:MimeContent>
              <t:ItemId Id="jCrTAAA="
                        ChangeKey="CQAAABYAAAAFI5DJmZv+TLtyLOLIF1S5AAAZi+7u" />
              <t:Subject>Play tennis?</t:Subject>
            </t:Message>
          </m:Items>
        </m:GetItemResponseMessage>
      </m:ResponseMessages>
    </m:GetItemResponse>
  </s:Body>
</s:Envelope>

Rufen Sie als Nächstes den CreateItem-Vorgang auf, um die neue E-Mail zu erstellen.

<?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="Exchange2010" />
  </soap:Header>
  <soap:Body>
    <m:CreateItem MessageDisposition="SaveOnly">
      <m:Items>
        <t:Message>
          <t:Subject>Message with Item Attachment (MimeContent)</t:Subject>
          <t:Body BodyType="HTML">The attachment to this message was created by copying the MimeContent from the original message and adding it to a new item attachment.</t:Body>
          <t:ToRecipients>
            <t:Mailbox>
              <t:EmailAddress>primary@contoso1000.onmicrosoft.com</t:EmailAddress>
            </t:Mailbox>
          </t:ToRecipients>
        </t:Message>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die CreateItem-Anforderung mit einer CreateItemResponse-Nachricht , die den ResponseCode-WertNoError enthält, der angibt, dass die E-Mail erfolgreich erstellt wurde.

Erstellen Sie als Nächstes die neue Elementanlage mithilfe von MimeContent und Subject , die vom GetItem-Vorgang abgerufen werden. Der Wert des ParentItemId-Elements wird mithilfe des ItemId-Werts aufgefüllt, der in der CreateItem-Antwort zurückgegeben wird.

<?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="Exchange2010" />
  </soap:Header>
  <soap:Body>
    <m:CreateAttachment>
      <m:ParentItemId Id="jDKsAAA=" />
      <m:Attachments>
        <t:ItemAttachment>
          <t:Name>Play tennis?</t:Name>
          <t:IsInline>false</t:IsInline>
          <t:Message>
            <t:MimeContent CharacterSet="UTF-8">tDQe/Eo=…</t:MimeContent>
          </t:Message>
        </t:ItemAttachment>
      </m:Attachments>
    </m:CreateAttachment>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die CreateAttachment-Anforderung mit einer CreateAttachmentResponse-Nachricht , die den ResponseCode-WertNoError enthält, der angibt, dass die Anlage erfolgreich erstellt wurde, und der AttachmentId der neu erstellten Anlage.

Nachdem die neue Nachricht erstellt und das Element angefügt wurde, können Sie diese neu erstellte Nachricht senden , indem Sie den SendItem-Vorgang aufrufen.

<?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="Exchange2010" />
  </soap:Header>
  <soap:Body>
    <m:SendItem SaveItemToFolder="true">
      <m:ItemIds>
        <t:ItemId Id="jDKsAAA="
                  ChangeKey="CQAAABYAAAAFI5DJmZv+TLtyLOLIF1S5AAAZi/q/" />
      </m:ItemIds>
      <m:SavedItemFolderId>
        <t:DistinguishedFolderId Id="sentitems" />
      </m:SavedItemFolderId>
    </m:SendItem>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die SendItem-Anforderung mit einer SendItemResponse-Nachricht, die den ResponseCode-Wert NoError enthält, was darauf hinweist, dass die E-Mail erfolgreich gesendet wurde.

Erstellen einer E-Mail mit einer Inlineanlage mithilfe der verwalteten EWS-API

Das folgende Codebeispiel zeigt, wie Sie eine E-Mail mit einer Inlineanlage erstellen:

  1. Verwenden des EmailMessage-Objekts zum Erstellen einer E-Mail-Nachricht.

  2. Festlegen der EmailMessage.Body-Eigenschaft auf einen HTML-Textkörper, der eine Inlineanlage enthält.

  3. Verwenden der AttachmentCollection.AddFileAttachment-Methode zum Hinzufügen der Anlage zur Nachricht.

  4. Verwenden der EmailMessage.SendAndSaveCopy-Methode , um die Nachricht an den Empfänger zu senden und die Nachricht im Ordner Gesendete Elemente zu speichern.

In diesem Beispiel wird davon ausgegangen, dass service ein gültiges ExchangeService-Objekt ist und der Benutzer bei einem Exchange-Server authentifiziert wurde.

public static void CreateEmailWithInlineAttachment(ExchangeService service)
{
    // Create the HTML body with the content identifier of the attachment.
    string html = @"<html>
                        <head>
                        </head>
                        <body>
                        <img width=100 height=100 id=""1"" src=""cid:Party.jpg"">
                        </body>
                        </html>";
         
    // Create the email message.
    EmailMessage message = new EmailMessage(service);
    message.Subject = "Inline Attachment";
    message.Body = new MessageBody(BodyType.HTML, html);
    message.ToRecipients.Add("sadie@contoso.com");
    // Add the attachment to the local copy of the email message.
    string file = @"C:\Temp\Party.jpg";
    message.Attachments.AddFileAttachment("Party.jpg", file);
    message.Attachments[0].IsInline = true;
    message.Attachments[0].ContentId = "Party.jpg";
         
    // Send the mail and save a copy in the Sent Items folder.
    // This method results in a CreateItem and SendItem call to EWS.
    message.SendAndSaveCopy();
}

Erstellen einer E-Mail mit einer Inlineanlage mithilfe von EWS

Im folgenden Codebeispiel wird gezeigt, wie sie den CreateItem-Vorgang verwenden, um eine E-Mail-Nachricht mit einer Inlinedateianlage zu erstellen. Das BodyType-Attribut des Body-Elements gibt an, dass der Inhalt im HTML-Format vorliegt und die Bildquelle enthält. Dies ist auch eine der XML-Anforderungen, die die verwaltete EWS-API sendet, wenn Sie die verwaltete EWS-API verwenden, um eine E-Mail mit einer Inlineanlage zu erstellen.

<?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="Exchange2010" />
  </soap:Header>
  <soap:Body>
    <m:CreateItem MessageDisposition="SaveOnly">
      <m:Items>
        <t:Message>
          <t:Subject>Inline Attachment</t:Subject>
          <t:Body BodyType="HTML">
            &amp;lt;html&amp;gt;
            &amp;lt;head&amp;gt;
            &amp;lt;/head&amp;gt;
            &amp;lt;body&amp;gt;
            &amp;lt;img width=100 height=100 id="1" src="cid:Party.jpg"&amp;gt;
            &amp;lt;/body&amp;gt;
            &amp;lt;/html&amp;gt;
          </t:Body>
          <t:ToRecipients>
            <t:Mailbox>
              <t:EmailAddress>sadie@contoso.com</t:EmailAddress>
            </t:Mailbox>
          </t:ToRecipients>
        </t:Message>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die CreateItem-Anforderung mit einer CreateItemResponse-Nachricht, die einen ResponseCode-Wert von NoError enthält, der darauf hinweist, dass die E-Mail erfolgreich erstellt wurde. Außerdem ist die ItemId der neu erstellten Nachricht enthalten.

Um diese neu erstellte Nachricht zu senden, rufen Sie den SendItem-Vorgang auf.

Hinzufügen einer Anlage zu einer vorhandenen E-Mail mithilfe der verwalteten EWS-API

Das folgende Codebeispiel zeigt, wie Sie einer vorhandenen E-Mail eine Anlage hinzufügen, indem Sie folgendes verwenden:

  1. Verwenden der EmailMessage.Bind-Methode zum Binden an eine vorhandene E-Mail-Nachricht.

  2. Hinzufügen einer Dateianlage zur Nachricht mithilfe der AddFileAttachment-Methode .

  3. Speichern der Updates durch Aufrufen der EmailMessage.Update-Methode .

In diesem Beispiel wird davon ausgegangen, dass service ein gültiges ExchangeService-Objekt ist und der Benutzer bei einem Exchange-Server authentifiziert wurde.

public static void AddAttachmentToExisting(ExchangeService service, ItemId itemId)
{
    // This method results in a GetItem call to EWS.
    EmailMessage message = EmailMessage.Bind(service, itemId);
    message.Attachments.AddFileAttachment("C:\\temp\\FileAttachment.txt");
    // This method results in a CreateAttachment call to EWS.
    message.Update(ConflictResolutionMode.AlwaysOverwrite);
}

Hinzufügen einer Anlage zu einer vorhandenen E-Mail mithilfe von EWS

Im folgenden Codebeispiel wird gezeigt, wie Sie den CreateAttachment-Vorgang verwenden, um einer vorhandenen E-Mail-Nachricht eine Dateianlage hinzuzufügen. Dies ist auch eine der XML-Anforderungen, die die verwaltete EWS-API sendet, wenn Sie die verwaltete EWS-API verwenden, um einer vorhandenen E-Mail eine Anlage hinzuzufügen.

<?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="Exchange2007_SP1" />
    <t:TimeZoneContext>
      <t:TimeZoneDefinition Id="Central Standard Time" />
    </t:TimeZoneContext>
  </soap:Header>
  <soap:Body>
    <m:CreateAttachment>
      <m:ParentItemId Id="uqE2AAA=" />
      <m:Attachments>
        <t:FileAttachment>
          <t:Name>FileAttachment.txt</t:Name>
          <t:Content>VGhpcyBpcyBhIGZpbGUgYXR0YWNobWVudC4=</t:Content>
        </t:FileAttachment>
      </m:Attachments>
    </m:CreateAttachment>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die CreateAttachment-Anforderung mit einer CreateAttachmentResponse-Nachricht , die den ResponseCode-WertNoError enthält, der angibt, dass die Anlage erfolgreich erstellt wurde, und der AttachmentId der neu erstellten Anlage.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="939"
                         MinorBuildNumber="12"
                         Version="V2_11"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:CreateAttachmentResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
                                xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:CreateAttachmentResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Attachments>
            <t:FileAttachment>
              <t:AttachmentId Id="yRLhCh8="
                              RootItemId="uqE2AAA="
                              RootItemChangeKey="CQAAABYAAAAFI5DJmZv+TLtyLOLIF1S5AAAXulcf" />
            </t:FileAttachment>
          </m:Attachments>
        </m:CreateAttachmentResponseMessage>
      </m:ResponseMessages>
    </m:CreateAttachmentResponse>
  </s:Body>
</s:Envelope>

Siehe auch