Добавление вложений с помощью EWS в Exchange
Узнайте, как создавать новые элементы с вложениями или добавлять вложения к существующим элементам с помощью управляемого API EWS или EWS в Exchange.
Вложения файлов или вложения элементов можно добавлять в новые или существующие элементы с помощью управляемого API EWS или EWS. Если вы используете управляемый API EWS, вы используете тот же метод для добавления вложений в новые или существующие элементы. однако метод изменяется, если вы используете вложение файла или элемента. И наоборот, если вы используете EWS, вы используете ту же операцию для добавления файла или вложения элемента в элемент, но операция меняется, если вы добавляете вложение в новый или существующий элемент.
Таблица 1. Методы управляемого API EWS и операции EWS для добавления вложений
Задача | Метод управляемого API EWS | Операция EWS |
---|---|---|
Добавление вложения файла в новое или существующее сообщение электронной почты |
AttachmentCollection.AddFileAttachment |
CreateItem для нового сообщения электронной почты CreateAttachment для добавления в существующее сообщение электронной почты |
Добавление вложения элемента в новое или существующее сообщение электронной почты |
AttachmentCollection.AddItemAttachment |
CreateItem для нового сообщения электронной почты CreateAttachment для добавления в существующее сообщение электронной почты |
Создание сообщения электронной почты с вложениями файлов и элементов с помощью управляемого API EWS
В следующем примере кода показано, как создать сообщение электронной почты с несколькими вложениями файлов и вложением элемента с помощью:
Использование объекта EmailMessage для создания сообщения электронной почты.
Использование методов AttachmentCollection.AddFileAttachment и AttachmentCollection.AddItemAttachment для добавления вложений в сообщение.
Использование метода EmailMessage.SendAndSaveCopy для отправки сообщения получателям и сохранения сообщения в папке Отправленные.
В этом примере кода показаны четыре способа добавления файла в элемент с помощью управляемого API EWS:
С помощью полного расположения файла.
Используя полное расположение файла и новое имя вложения.
С помощью массива байтов.
С помощью потока.
Обратите внимание, что вложение элемента в этом примере создается одновременно с сообщением электронной почты. Сведения о добавлении существующего сообщения электронной почты в качестве вложения элемента см. в статье Добавление существующего элемента в новое сообщение электронной почты с помощью MimeContent и Управляемого API EWS.
В этом примере предполагается, что служба является действительным объектом ExchangeService, и что пользователь прошел проверку подлинности на сервере Exchange server.
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();
}
Создание сообщения электронной почты с вложениями файлов и элементов с помощью EWS
В следующем примере кода показано, как использовать операцию CreateItem для создания сообщения электронной почты с четырьмя вложениями файлов и одним вложением элементов. Это также один из XML-запросов, которые управляемый API EWS отправляет при создании сообщения электронной почты с вложениями файлов и элементов.
Обратите внимание, что вложение элемента в этом примере создается одновременно с сообщением электронной почты. Сведения о добавлении существующего сообщения электронной почты в качестве вложения элемента см. в статье Добавление существующего элемента в новое сообщение электронной почты с помощью MimeContent и Управляемого API EWS.
<?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="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>
Сервер отвечает на запрос CreateItem сообщением CreateItemResponse , которое содержит значение ResponseCodeNoError, указывающее, что сообщение электронной почты и вложения успешно созданы. В ответ также включаются itemId созданного сообщения и значения AttachmentId для каждого из вложений. Значения некоторых атрибутов сокращены для удобства чтения.
<?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="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://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="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://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>
Чтобы отправить это только что созданное сообщение, вызовите операцию SendItem .
Добавление существующего элемента в новое сообщение электронной почты с помощью MimeContent и управляемого API EWS
Чтобы добавить существующий элемент в качестве вложения к другому элементу, необходимо создать новое вложение элемента и скопировать содержимое существующего элемента в новый элемент. Это можно сделать двумя способами:
Если вы работаете с сообщениями электронной почты в частности, вы можете скопировать значение свойства MimeContent из сообщения электронной почты в только что созданное вложение элемента. В ходе этого процесса вы потеряете некоторые свойства, такие как флаги и категории, но они отлично подходят для стандартных сообщений электронной почты.
Если вам нужна полная точность для всех типов элементов, можно привязать к существующему элементу и скопировать все свойства и расширенные свойства в новое вложение.
В следующем примере кода показан первый подход к копированию MimeContent во вложение нового элемента. Ниже приведена процедура, которая показывает, как можно изменить код для использования второго подхода.
В этом примере предполагается, что служба является допустимым объектом ExchangeService и что пользователь прошел проверку подлинности на сервере Exchange Server, а itemId — это ItemId элемента, который необходимо присоединить.
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();
}
Чтобы изменить этот пример для копирования каждого из свойств существующего элемента во вложение нового элемента, сделайте следующее:
- Измените набор свойств, чтобы включить PropertySet.FirstClassProperties и все необходимые дополнительные или расширенные свойства.
// Add additional properties to the PropertySet.
EmailMessage msgToAttach = EmailMessage.Bind(service, itemId, new PropertySet(PropertySet.FirstClassProperties));
- Удалите следующую строку, так как свойство MimeContent не требуется.
itemAttachment.Item.MimeContent = msgToAttach.MimeContent;
- Повторите эту строку для каждого свойства, чтобы скопировать существующий элемент в новое вложение. Не копируйте ItemId во вложение нового элемента, так как это свойство доступно только для чтения.
itemAttachment.Item.Subject = msgToAttach.Subject;
- Задайте для свойства PidTagMessageFlags (0x0E070003) вложении значение Отправлено.
ExtendedPropertyDefinition sent = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
msgToAttach.Item.SetExtendedProperty(sent, "1");
Добавление существующего элемента в новое сообщение электронной почты с помощью MimeContent и EWS
Добавить существующий элемент в новый элемент можно двумя способами:
Если вы работаете с сообщениями электронной почты, вы можете скопировать значение элемента MimeContent из сообщения электронной почты во вложение созданного элемента. В ходе этого процесса вы потеряете некоторые свойства, такие как флаги и категории, но они отлично подходят для стандартных сообщений электронной почты.
Если вам нужна полная точность для всех типов элементов, можно привязать к существующему элементу и скопировать все свойства и расширенные свойства в новое вложение.
В следующем примере кода показано, как с помощью элемента MimeContent скопировать содержимое исходного элемента в значение MimeContent нового вложения элемента. В примере используются следующие операции:
GetItem — получение mimeContent и Subject сообщения, которое станет вложением элемента в новом сообщении.
CreateItem — создание сообщения электронной почты.
CreateAttachment — создание нового вложения с помощью MimeContent и Subject , полученных операцией GetItem .
SendItem — отправка и сохранение сообщения.
Пример начинается с получения MimeContent и Subject существующего элемента.
<?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: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>
Сервер отвечает на запрос GetItemсообщением GetItemResponse , которое содержит значение ResponseCodeNoError, указывающее, что сообщение электронной почты было успешно получено, а также MimeContent и Subject сообщения электронной почты.
<?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="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://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="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://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>
Затем вызовите операцию CreateItem , чтобы создать сообщение электронной почты.
<?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="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>
Сервер отвечает на запрос CreateItem сообщением CreateItemResponse , которое содержит значение ResponseCodeNoError, указывающее, что сообщение электронной почты было создано успешно.
Затем создайте вложение элемента с помощью mimeContent и Subject , полученных операцией GetItem . Значение элемента ParentItemId заполняется с помощью значения ItemId , возвращенного в ответе CreateItem .
<?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="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>
Сервер отвечает на запрос CreateAttachment сообщением CreateAttachmentResponse , которое содержит значение ResponseCodeNoError, указывающее, что вложение было успешно создано, и AttachmentId только что созданного вложения.
Теперь, когда новое сообщение создано и элемент был присоединен, его можно отправить , вызвав операцию SendItem .
<?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="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>
Сервер отвечает на запрос SendItem сообщением SendItemResponse , которое содержит значение ResponseCodeNoError, указывающее, что сообщение электронной почты отправлено успешно.
Создание сообщения электронной почты со встроенным вложением с помощью управляемого API EWS
В следующем примере кода показано, как создать сообщение электронной почты со встроенным вложением с помощью:
Использование объекта EmailMessage для создания сообщения электронной почты.
Присвойте свойству EmailMessage.Body текст HTML, включающий встроенное вложение.
Использование метода AttachmentCollection.AddFileAttachment для добавления вложения в сообщение.
Использование метода EmailMessage.SendAndSaveCopy для отправки сообщения получателю и сохранения сообщения в папке Отправленные.
В этом примере предполагается, что служба является действительным объектом ExchangeService, и что пользователь прошел проверку подлинности на сервере Exchange server.
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();
}
Создание сообщения электронной почты со встроенным вложением с помощью EWS
В следующем примере кода показано, как использовать операцию CreateItem для создания сообщения электронной почты со встроенным вложением файла. Атрибут BodyType элемента Body указывает, что содержимое имеет формат HTML и включает источник изображения. Это также один из XML-запросов, которые отправляет управляемый API EWS при использовании управляемого API EWS для создания сообщения электронной почты со встроенным вложением.
<?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="Exchange2010" />
</soap:Header>
<soap:Body>
<m:CreateItem MessageDisposition="SaveOnly">
<m:Items>
<t:Message>
<t:Subject>Inline Attachment</t:Subject>
<t:Body BodyType="HTML">
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;img width=100 height=100 id="1" src="cid:Party.jpg"&gt;
&lt;/body&gt;
&lt;/html&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>
В ответ на запрос CreateItem сервер отправляет сообщение CreateItemResponse, включающее параметр ResponseCode со значением NoError, которое указывает, что сообщение было успешно создано, и свойство ItemId созданного сообщения.
Чтобы отправить это только что созданное сообщение, вызовите операцию SendItem .
Добавление вложения в существующее сообщение электронной почты с помощью управляемого API EWS
В следующем примере кода показано, как добавить вложение в существующее сообщение электронной почты с помощью:
Использование метода EmailMessage.Bind для привязки к существующему сообщению электронной почты.
Добавление вложения файла в сообщение с помощью метода AddFileAttachment .
Сохранение обновлений путем вызова метода EmailMessage.Update .
В этом примере предполагается, что служба является действительным объектом ExchangeService, и что пользователь прошел проверку подлинности на сервере Exchange server.
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);
}
Добавление вложения в существующее сообщение электронной почты с помощью EWS
В следующем примере кода показано, как использовать операцию CreateAttachment для добавления вложения файла в существующее сообщение электронной почты. Это также один из XML-запросов, которые отправляет управляемый API EWS при использовании управляемого API EWS для добавления вложения в существующее сообщение электронной почты.
<?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="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>
Сервер отвечает на запрос CreateAttachment сообщением CreateAttachmentResponse , которое содержит значение ResponseCodeNoError, указывающее, что вложение было успешно создано, и AttachmentId только что созданного вложения.
<?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="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://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="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://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>