Adición de datos adjuntos mediante EWS en Exchange
Obtenga información sobre cómo crear nuevos elementos con datos adjuntos o agregar datos adjuntos a elementos existentes mediante la API administrada de EWS o EWS en Exchange.
Puede agregar datos adjuntos de archivo o datos adjuntos de elementos a elementos nuevos o existentes mediante la API administrada de EWS o EWS. Si usa la API administrada de EWS, use el mismo método para agregar datos adjuntos a elementos nuevos o existentes; sin embargo, el método cambia si usa un archivo o datos adjuntos de elemento. Por el contrario, si usa EWS, usa la misma operación para agregar un archivo o datos adjuntos de elemento a un elemento, pero la operación cambia si agrega los datos adjuntos a un elemento nuevo o existente.
Tabla 1. Métodos de API administrada de EWS y operaciones de EWS para agregar datos adjuntos
Task | Método de la API administrada de EWS | Operación de EWS |
---|---|---|
Adición de datos adjuntos de archivos a un correo electrónico nuevo o existente |
AttachmentCollection.AddFileAttachment |
CreateItem para un nuevo correo electrónico CreateAttachment para agregar a un correo electrónico existente |
Agregar datos adjuntos de un elemento a un correo electrónico nuevo o existente |
AttachmentCollection.AddItemAttachment |
CreateItem para un nuevo correo electrónico CreateAttachment para agregar a un correo electrónico existente |
Creación de un correo electrónico con datos adjuntos de archivos y elementos mediante la API administrada de EWS
En el ejemplo de código siguiente se muestra cómo crear un correo electrónico con varios datos adjuntos de archivo y datos adjuntos de un elemento:
Usar el objeto EmailMessage para crear un mensaje de correo electrónico.
Usar los métodos AttachmentCollection.AddFileAttachment y AttachmentCollection.AddItemAttachment para agregar datos adjuntos al mensaje.
Usar el método EmailMessage.SendAndSaveCopy para enviar el mensaje a los destinatarios y guardar el mensaje en la carpeta Elementos enviados.
En este ejemplo de código se muestran las cuatro formas en que se pueden agregar datos adjuntos de un archivo a un elemento mediante la API administrada de EWS:
Mediante el uso de una ubicación de archivo completa.
Mediante el uso de una ubicación de archivo completa y un nuevo nombre de datos adjuntos.
Mediante el uso de una matriz de bytes.
Mediante el uso de una secuencia.
Tenga en cuenta que los datos adjuntos del elemento de este ejemplo se crean al mismo tiempo que el mensaje de correo electrónico. Para agregar un mensaje de correo electrónico existente como datos adjuntos de un elemento, vea Agregar un elemento existente a un nuevo correo electrónico mediante MimeContent y la API administrada de EWS.
En este ejemplo se supone que service es un objeto ExchangeService válido y que el usuario se ha autenticado en un servidor Exchange.
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();
}
Creación de un correo electrónico con datos adjuntos de archivos y elementos mediante EWS
En el ejemplo de código siguiente se muestra cómo usar la operación CreateItem para crear un mensaje de correo electrónico con cuatro datos adjuntos de archivo y un elemento adjunto. Esta también es una de las solicitudes XML que la API administrada de EWS envía al crear un correo electrónico con datos adjuntos de archivos y elementos.
Tenga en cuenta que los datos adjuntos del elemento de este ejemplo se crean al mismo tiempo que el mensaje de correo electrónico. Para agregar un mensaje de correo electrónico existente como datos adjuntos de un elemento, vea Agregar un elemento existente a un nuevo correo electrónico mediante MimeContent y 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="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>
El servidor responde a la solicitud CreateItem con un mensaje CreateItemResponse que incluye un valor ResponseCode de NoError, lo que indica que el correo electrónico y los datos adjuntos se crearon correctamente. El ItemId del mensaje recién creado y los valores de AttachmentId para cada uno de los datos adjuntos también se incluyen en la respuesta. Los valores de algunos atributos se han acortado para mejorar la legibilidad.
<?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>
Para enviar este mensaje recién creado, llame a la operación SendItem .
Agregar un elemento existente a un nuevo correo electrónico mediante MimeContent y la API administrada de EWS
Para agregar un elemento existente como datos adjuntos de un elemento a otro elemento, debe crear un nuevo elemento adjunto y copiar el contenido del elemento existente en el nuevo elemento. Hay dos formas de hacerlo:
Si está trabajando específicamente con mensajes de correo electrónico, puede copiar el valor de la propiedad MimeContent del correo electrónico en los datos adjuntos del elemento recién creado. Perderá algunas propiedades durante este proceso, como las marcas de seguimiento y las categorías, pero funciona muy bien para los mensajes de correo electrónico estándar.
Si necesita fidelidad completa para todos los tipos de elementos, puede enlazar a un elemento existente y copiar todas las propiedades y las propiedades extendidas en los nuevos datos adjuntos.
En el ejemplo de código siguiente se muestra el primer enfoque, copiando mimeContent en los datos adjuntos del nuevo elemento. A continuación, se muestra un procedimiento que muestra cómo puede modificar el código para usar el segundo enfoque.
En este ejemplo se supone que el servicio es un objeto ExchangeService válido y que el usuario se ha autenticado en un servidor exchange y que itemId es el ItemId del elemento que se va a adjuntar.
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();
}
Para modificar este ejemplo para copiar cada una de las propiedades del elemento existente en los datos adjuntos del nuevo elemento, haga lo siguiente:
- Cambie la propiedad establecida para incluir PropertySet.FirstClassProperties y las propiedades adicionales o propiedades extendidas que necesite.
// Add additional properties to the PropertySet.
EmailMessage msgToAttach = EmailMessage.Bind(service, itemId, new PropertySet(PropertySet.FirstClassProperties));
- Quite la línea siguiente, porque no necesita la propiedad MimeContent .
itemAttachment.Item.MimeContent = msgToAttach.MimeContent;
- Repita esta línea para que cada propiedad se copie del elemento existente a los nuevos datos adjuntos. No copie el ItemId en los datos adjuntos del nuevo elemento porque es una propiedad de solo lectura.
itemAttachment.Item.Subject = msgToAttach.Subject;
- Establezca la propiedad PidTagMessageFlags (0x0E070003) de los datos adjuntos en Enviado.
ExtendedPropertyDefinition sent = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
msgToAttach.Item.SetExtendedProperty(sent, "1");
Agregar un elemento existente a un nuevo correo electrónico mediante MimeContent y EWS
Hay dos maneras de agregar un elemento existente a un nuevo elemento:
Si está trabajando específicamente con mensajes de correo electrónico, puede copiar el valor del elemento MimeContent del correo electrónico en los datos adjuntos del elemento recién creado. Perderá algunas propiedades durante este proceso, como las marcas de seguimiento y las categorías, pero funciona muy bien para los mensajes de correo electrónico estándar.
Si necesita fidelidad completa para todos los tipos de elementos, puede enlazar a un elemento existente y copiar todas las propiedades y las propiedades extendidas en los nuevos datos adjuntos.
En el ejemplo de código siguiente se muestra cómo usar el elemento MimeContent para copiar el contenido del elemento original en el valor MimeContent de los datos adjuntos del nuevo elemento. En el ejemplo se usan las siguientes operaciones:
GetItem : para obtener el mimeContent y el asunto del mensaje que se convertirá en los datos adjuntos del elemento en el nuevo mensaje.
CreateItem : para crear el nuevo mensaje de correo electrónico.
CreateAttachment: para crear los nuevos datos adjuntos, use mimecontent y subject recuperados por la operación GetItem .
SendItem : para enviar y guardar el mensaje.
El ejemplo comienza recuperando mimeContent y el asunto del elemento existente.
<?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>
El servidor responde a la solicitud GetItem con un mensaje GetItemResponse que incluye un valor ResponseCode de NoError, que indica que el correo electrónico se recuperó correctamente, y mimecontento y asunto del correo electrónico.
<?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>
A continuación, llame a la operación CreateItem para crear el nuevo correo electrónico.
<?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>
El servidor responde a la solicitud CreateItem con un mensaje CreateItemResponse que incluye un valor ResponseCode de NoError, lo que indica que el correo electrónico se creó correctamente.
A continuación, cree los datos adjuntos del nuevo elemento mediante MimeContent y Subject recuperados por la operación GetItem . El valor del elemento ParentItemId se rellena mediante el valor ItemId devuelto en la respuesta 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>
El servidor responde a la solicitud CreateAttachment con un mensaje CreateAttachmentResponse que incluye un valor ResponseCode de NoError, que indica que los datos adjuntos se crearon correctamente y el AttachmentId de los datos adjuntos recién creados.
Ahora que se ha creado el nuevo mensaje y se ha adjuntado el elemento, puede enviar este mensaje recién creado llamando a la operación 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>
El servidor responde a la solicitud SendItem con un mensaje SendItemResponse que incluye un valor ResponseCode de NoError, lo que indica que el correo electrónico se envió correctamente.
Creación de un correo electrónico con datos adjuntos insertados mediante la API administrada de EWS
En el ejemplo de código siguiente se muestra cómo crear un correo electrónico con datos adjuntos insertados mediante:
Usar el objeto EmailMessage para crear un mensaje de correo electrónico.
Establecer la propiedad EmailMessage.Body en un cuerpo HTML que incluya datos adjuntos insertados.
Usar el método AttachmentCollection.AddFileAttachment para agregar los datos adjuntos al mensaje.
Usar el método EmailMessage.SendAndSaveCopy para enviar el mensaje al destinatario y guardar el mensaje en la carpeta Elementos enviados.
En este ejemplo se supone que service es un objeto ExchangeService válido y que el usuario se ha autenticado en un servidor Exchange.
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();
}
Creación de un correo electrónico con datos adjuntos insertados mediante EWS
En el ejemplo de código siguiente se muestra cómo usar la operación CreateItem para crear un mensaje de correo electrónico con datos adjuntos de un archivo insertado. El atributo BodyType del elemento Body indica que el contenido está en formato HTML e incluye el origen de la imagen. Esta también es una de las solicitudes XML que la API administrada de EWS envía cuando se usa la API administrada de EWS para crear un correo electrónico con datos adjuntos insertados.
<?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>
El servidor responde a la solicitud CreateItem con un mensaje CreateItemResponse que incluye un valor ResponseCode de NoError, que indica que el correo electrónico se creó correctamente y el ItemId del mensaje recién creado.
Para enviar este mensaje recién creado, llame a la operación SendItem .
Agregar datos adjuntos a un correo electrónico existente mediante la API administrada de EWS
En el ejemplo de código siguiente se muestra cómo agregar datos adjuntos a un correo electrónico existente mediante:
Usar el método EmailMessage.Bind para enlazar a un mensaje de correo electrónico existente.
Agregar datos adjuntos de archivo al mensaje mediante el método AddFileAttachment .
Guarde las actualizaciones llamando al método EmailMessage.Update .
En este ejemplo se supone que service es un objeto ExchangeService válido y que el usuario se ha autenticado en un servidor Exchange.
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);
}
Agregar datos adjuntos a un correo electrónico existente mediante EWS
En el ejemplo de código siguiente se muestra cómo usar la operación CreateAttachment para agregar un archivo adjunto a un mensaje de correo electrónico existente. Esta también es una de las solicitudes XML que la API administrada de EWS envía cuando se usa la API administrada de EWS para agregar datos adjuntos a un correo electrónico existente.
<?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>
El servidor responde a la solicitud CreateAttachment con un mensaje CreateAttachmentResponse que incluye un valor ResponseCode de NoError, que indica que los datos adjuntos se crearon correctamente y el AttachmentId de los datos adjuntos recién creados.
<?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>