Adicionar anexos usando o EWS no Exchange
Saiba como criar novos itens com anexos ou adicionar anexos a itens existentes usando a API Gerenciada do EWS ou o EWS no Exchange.
Você pode adicionar anexos de arquivo ou anexos de item a itens novos ou existentes usando a API Gerenciada do EWS ou o EWS. Se você estiver usando a API Gerenciada do EWS, use o mesmo método para adicionar anexos a itens novos ou existentes; no entanto, o método será alterado se você estiver usando um anexo de arquivo ou item. Por outro lado, se você estiver usando o EWS, você usará a mesma operação para adicionar um anexo de arquivo ou item a um item, mas a operação será alterada se você estiver adicionando o anexo a um item novo ou existente.
Tabela 1. Métodos de API Gerenciada do EWS e operações EWS para adicionar anexos
Tarefa | Método da API Gerenciada do EWS | Operação do EWS |
---|---|---|
Adicionar um anexo de arquivo a um email novo ou existente |
AttachmentCollection.AddFileAttachment |
CreateItem para um novo email CreateAttachment para adicionar a um email existente |
Adicionar um anexo de item a um email novo ou existente |
AttachmentCollection.AddItemAttachment |
CreateItem para um novo email CreateAttachment para adicionar a um email existente |
Criar um email com anexos de arquivo e item usando a API Gerenciada do EWS
O exemplo de código a seguir mostra como criar um email com vários anexos de arquivo e um anexo de item por:
Usando o objeto EmailMessage para criar uma mensagem de email.
Usando os métodos AttachmentCollection.AddFileAttachment e AttachmentCollection.AddItemAttachment para adicionar anexos à mensagem.
Usando o método EmailMessage.SendAndSaveCopy para enviar a mensagem aos destinatários e salvar a mensagem na pasta Itens Enviados.
Este exemplo de código mostra as quatro maneiras pelas quais um anexo de arquivo pode ser adicionado a um item usando a API Gerenciada do EWS:
Usando um local de arquivo totalmente qualificado.
Usando um local de arquivo totalmente qualificado e um novo nome de anexo.
Usando uma matriz de bytes.
Usando um fluxo.
Observe que o anexo do item neste exemplo é criado ao mesmo tempo que a mensagem de email. Para adicionar uma mensagem de email existente como um anexo de item, consulte Adicionar um item existente a um novo email usando o MimeContent e a API Gerenciada do EWS.
Esse exemplo pressupõe que serviço seja um objeto ExchangeService válido e que o usuário tenha sido autenticado em um 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();
}
Criar um email com anexos de arquivo e item usando o EWS
O exemplo de código a seguir mostra como usar a operação CreateItem para criar uma mensagem de email com quatro anexos de arquivo e um anexo de item. Essa também é uma das solicitações XML que a API Gerenciada do EWS envia quando você cria um email com anexos de arquivo e item.
Observe que o anexo do item neste exemplo é criado ao mesmo tempo que a mensagem de email. Para adicionar uma mensagem de email existente como um anexo de item, consulte Adicionar um item existente a um novo email usando o MimeContent e a API Gerenciada do 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>
O servidor responde à solicitação CreateItem com uma mensagem CreateItemResponse que inclui um valor ResponseCode de NoError, que indica que o email e os anexos foram criados com êxito. O ItemId da mensagem recém-criada e os valores AttachmentId para cada um dos anexos também está incluído na resposta. Os valores de alguns atributos foram abreviados para legibilidade.
<?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 essa mensagem recém-criada, chame a operação SendItem .
Adicione um item existente a um novo email usando o MimeContent e a API Gerenciada do EWS
Para adicionar um item existente como um anexo de item a outro item, você precisa criar um anexo de item e copiar o conteúdo do item existente para o novo item. Há duas maneiras de fazer isso:
Se você estiver trabalhando com mensagens de email especificamente, poderá copiar o valor da propriedade MimeContent do email para o anexo de item recém-criado. Você perderá algumas propriedades durante esse processo, como sinalizadores e categorias de acompanhamento, mas funciona muito bem para mensagens de email padrão.
Se você precisar de fidelidade total para todos os tipos de item, poderá associar a um item existente e copiar todas as propriedades e propriedades estendidas no novo anexo.
O exemplo de código a seguir mostra a primeira abordagem, copiando o MimeContent no anexo do novo item. Seguindo este exemplo está um procedimento que mostra como você pode modificar o código para usar a segunda abordagem.
Este exemplo pressupõe que o serviço seja um objeto ExchangeService válido e que o usuário tenha sido autenticado em um servidor exchange e que o itemId é o ItemId do item a ser anexado.
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 exemplo para copiar cada uma das propriedades no item existente no anexo do novo item, faça o seguinte:
- Altere a propriedade definida para incluir PropertySet.FirstClassProperties e quaisquer propriedades adicionais ou propriedades estendidas necessárias.
// Add additional properties to the PropertySet.
EmailMessage msgToAttach = EmailMessage.Bind(service, itemId, new PropertySet(PropertySet.FirstClassProperties));
- Remova a linha a seguir, pois você não precisa da propriedade MimeContent .
itemAttachment.Item.MimeContent = msgToAttach.MimeContent;
- Repita essa linha para cada propriedade a ser copiada do item existente para o novo anexo. Não copie o ItemId no novo anexo de item porque essa é uma propriedade somente leitura.
itemAttachment.Item.Subject = msgToAttach.Subject;
- Defina a propriedade PidTagMessageFlags (0x0E070003) no anexo como Enviado.
ExtendedPropertyDefinition sent = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
msgToAttach.Item.SetExtendedProperty(sent, "1");
Adicionar um item existente a um novo email usando o MimeContent e o EWS
Há duas maneiras de adicionar um item existente a um novo item:
Se você estiver trabalhando com mensagens de email especificamente, poderá copiar o valor do elemento MimeContent do email para o anexo de item recém-criado. Você perderá algumas propriedades durante esse processo, como sinalizadores e categorias de acompanhamento, mas funciona muito bem para mensagens de email padrão.
Se você precisar de fidelidade total para todos os tipos de item, poderá associar a um item existente e copiar todas as propriedades e propriedades estendidas no novo anexo.
O exemplo de código a seguir mostra como usar o elemento MimeContent para copiar o conteúdo do item original no valor MimeContent do novo anexo do item. O exemplo usa as seguintes operações:
GetItem – Para obter o MimeContent e o Assunto da mensagem que se tornará o anexo do item na nova mensagem.
CreateItem – Para criar a nova mensagem de email.
CreateAttachment: para criar o novo anexo, usando o MimeContent e o Subject recuperados pela operação GetItem .
SendItem – Para enviar e salvar a mensagem.
O exemplo começa recuperando o MimeContent e o Assunto do item 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>
O servidor responde à solicitação GetItem com uma mensagem GetItemResponse que inclui um valor ResponseCode de NoError, que indica que o email foi recuperado com êxito e o MimeContent e o Assunto do email.
<?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>
Em seguida, chame a operação CreateItem para criar o novo email.
<?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>
O servidor responde à solicitação CreateItem com uma mensagem CreateItemResponse que inclui um valor ResponseCode de NoError, que indica que o email foi criado com êxito.
Em seguida, crie o novo anexo de item usando o MimeContent e o Subject recuperados pela operação GetItem . O valor do elemento ParentItemId é preenchido usando o valor ItemId retornado na resposta 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>
O servidor responde à solicitação CreateAttachment com uma mensagem CreateAttachmentResponse que inclui um valor ResponseCode de NoError, que indica que o anexo foi criado com êxito e o AttachmentId do anexo recém-criado.
Agora que a nova mensagem foi criada e o item foi anexado, você pode enviar essa mensagem recém-criada chamando a operação 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>
O servidor responde à solicitação SendItem com uma mensagem SendItemResponse que inclui um valor ResponseCode de NoError, que indica que o email foi enviado com êxito.
Criar um email com um anexo embutido usando a API Gerenciada do EWS
O exemplo de código a seguir mostra como criar um email com um anexo embutido:
Usando o objeto EmailMessage para criar uma mensagem de email.
Definindo a propriedade EmailMessage.Body como um corpo HTML que inclui um anexo embutido.
Usando o método AttachmentCollection.AddFileAttachment para adicionar o anexo à mensagem.
Usando o método EmailMessage.SendAndSaveCopy para enviar a mensagem ao destinatário e salvar a mensagem na pasta Itens Enviados.
Esse exemplo pressupõe que serviço seja um objeto ExchangeService válido e que o usuário tenha sido autenticado em um 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();
}
Criar um email com um anexo embutido usando o EWS
O exemplo de código a seguir mostra como usar a operação CreateItem para criar uma mensagem de email com um anexo de arquivo embutido. O atributo BodyType do elemento Body indica que o conteúdo está no formato HTML e inclui a fonte de imagem. Essa também é uma das solicitações XML que a API Gerenciada do EWS envia quando você usa a API Gerenciada do EWS para criar um email com um anexo embutido.
<?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>
O servidor responde à solicitação CreateItem com uma mensagem CreateItemResponse que inclui um valor ResponseCode de NoError, que indica que o email foi criado com êxito e o ItemId da mensagem recém-criada.
Para enviar essa mensagem recém-criada, chame a operação SendItem .
Adicionar um anexo a um email existente usando a API Gerenciada do EWS
O exemplo de código a seguir mostra como adicionar um anexo a um email existente por:
Usando o método EmailMessage.Bind para associar a uma mensagem de email existente.
Adicionando um anexo de arquivo à mensagem usando o método AddFileAttachment .
Salvando as atualizações chamando o método EmailMessage.Update .
Esse exemplo pressupõe que serviço seja um objeto ExchangeService válido e que o usuário tenha sido autenticado em um 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);
}
Adicionar um anexo a um email existente usando o EWS
O exemplo de código a seguir mostra como usar a operação CreateAttachment para adicionar um anexo de arquivo a uma mensagem de email existente. Essa também é uma das solicitações XML que a API Gerenciada do EWS envia quando você usa a API Gerenciada do EWS para adicionar um anexo a um email 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>
O servidor responde à solicitação CreateAttachment com uma mensagem CreateAttachmentResponse que inclui um valor ResponseCode de NoError, que indica que o anexo foi criado com êxito e o AttachmentId do anexo recém-criado.
<?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>