Supprimer des éléments en utilisant EWS dans Exchange
Découvrez comment importer des rendez-vous, des e-mails, des contacts, des tâches et d’autres éléments à l’aide de l’API managée EWS ou EWS dans Exchange.
De nombreux systèmes contiennent des rendez-vous, des e-mails, des contacts et des tâches, et vous pouvez importer ces éléments dans Exchange de différentes façons. L’importation d’éléments dans Exchange est simple lorsque les relations de boîte aux lettres ne sont pas conservées sur ces éléments. Vous pouvez utiliser la méthode d’API managée Item.Save EWS ou l’opération CreateItem EWS pour créer les éléments dans une boîte aux lettres Exchange. Toutefois, l’approche simple ne prend pas en charge tous les scénarios. par exemple :
Vous ne pouvez pas maintenir la relation entre les organisateurs et les participants lors de l’importation de rendez-vous avec des participants (réunions). Cela signifie que l’organisateur de la réunion doit renvoyer des invitations à la réunion aux participants afin de rétablir la relation entre l’organisateur et les participants. Si le rendez-vous a été importé dans le calendrier d’un participant, le rendez-vous n’est pas lié au rendez-vous de l’organisateur de la réunion. Les participants doivent accepter l’invitation à la réunion envoyée par l’organisateur afin de rétablir la relation organisateur-participant.
Les informations sur les ayants droit ne sont pas conservées lors de l’importation des tâches affectées.
Toutes les options d’importation peuvent être utilisées pour importer par lot des éléments dans Exchange.
Utiliser l’API managée EWS ou les types d’éléments EWS pour importer un élément
Vous pouvez utiliser l’API managée EWS ou EWS pour importer des e-mails, des contacts, des rendez-vous ou des tâches à partir d’autres systèmes. Définissez simplement les propriétés de votre format source sur l’un des objets suivants, en fonction de ce que vous importez.
Tableau 1. Objets d’API managée EWS et éléments EWS
Objet API managée EWS | Élément EWS |
---|---|
EmailMessage |
Message |
Contact |
Contact |
Rendez-vous |
CalendarItem |
Tâche |
Tâche |
Utilisez la méthode d’API managée Item.Save EWS ou l’opération EWS CreateItem pour effectuer l’importation d’éléments. Nous vous recommandons cette approche lorsque vous importez des éléments à partir d’autres systèmes, car vous contrôlez les propriétés importées. Pour plus d’informations sur la façon de définir des propriétés sur des éléments, puis d’enregistrer l’élément, consultez Créer un élément à l’aide de l’API managée EWS ou Créer un élément à l’aide d’EWS.
Importer des éléments avec une fidélité totale
Vous pouvez utiliser l’opération EWS UploadItems pour charger un élément en tant que flux de données. Cette représentation de flux de données d’un élément doit provenir des résultats d’un appel d’opération ExportItems . Étant donné que l’API managée EWS n’implémente pas l’opération UploadItems , si vous utilisez l’API managée EWS, vous devez écrire une routine pour envoyer les requêtes web.
Il s’agit du moyen le plus simple d’importer des éléments qui ont été exportés à partir d’un autre serveur Exchange.
Dans l’exemple suivant, les identificateurs et le contenu de l’élément Data sont raccourcis pour plus de lisibilité.
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
<soap:Header>
<t:RequestServerVersion Version="Exchange2013_SP1"/>
</soap:Header>
<soap:Body>
<m:UploadItems>
<m:Items>
<t:Item CreateAction="CreateNew">
<t:ParentFolderId Id="AAMkADEzOTE7kV0AAA=" ChangeKey="AQAAAA=="/>
<t:Data>AQAAAAgAAAAAAQAAAAADABZADQASDkANABMO</t:Data>
</t:Item>
</m:Items>
</m:UploadItems>
</soap:Body>
</soap:Envelope>
Le serveur répond à la requête UploadItems avec un élément UploadItemsResponse qui inclut une valeur d’élément ResponseCodenoError, ce qui indique que l’élément a été correctement chargé. La réponse inclut également l’ID d’élément de l’élément chargé.
Utiliser le flux MIME pour importer à partir de formats de fichiers courants
EWS peut importer des fichiers EML (.eml) et iCal (.ics). Vous pouvez tester votre contenu MIME pour voir comment l’analyseur MIME Exchange gère le contenu de votre flux MIME. Bien que l’utilisation du flux MIME soit pratique, il est généralement préférable d’utiliser des types d’éléments EWS managed API ou EWS pour importer un élément. Voici un exemple d’importation d’une vCard.
Utiliser l’API managée EWS pour importer un e-mail à partir d’un fichier EML à l’aide du flux MIME
L’exemple suivant montre comment définir la propriété MimeContent avec le contenu d’un fichier EML, puis importer l’e-mail dans une boîte aux lettres. Cet exemple montre également comment définir la propriété étendue PidTagMessageFlags (0x0E07) sur un e-mail importé afin qu’il n’apparaisse pas dans la boîte aux lettres en tant qu’élément brouillon. Cet exemple suppose que le service est un objetExchangeService valide et que l’utilisateur peut s’authentifier au serveur Exchange.
private static void UploadMIMEEmail(ExchangeService service)
{
EmailMessage email = new EmailMessage(service);
string emlFileName = @"C:\import\email.eml";
using (FileStream fs = new FileStream(emlFileName, FileMode.Open, FileAccess.Read))
{
byte[] bytes = new byte[fs.Length];
int numBytesToRead = (int)fs.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
int n = fs.Read(bytes, numBytesRead, numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
// Set the contents of the .eml file to the MimeContent property.
email.MimeContent = new MimeContent("UTF-8", bytes);
}
// Indicate that this email is not a draft. Otherwise, the email will appear as a
// draft to clients.
ExtendedPropertyDefinition PR_MESSAGE_FLAGS_msgflag_read = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer);
email.SetExtendedProperty(PR_MESSAGE_FLAGS_msgflag_read, 1);
// This results in a CreateItem call to EWS. The email will be saved in the Inbox folder.
email.Save(WellKnownFolderName.Inbox);
}
Utiliser l’API managée EWS pour importer un rendez-vous à partir d’un fichier iCal à l’aide du flux MIME
Vous pouvez importer des rendez-vous simples sous la forme de fichiers iCalendar à l’aide du flux MIME. Vous ne pouvez pas importer de réunions, qui sont des rendez-vous avec des participants, car la relation entre les organisateurs de la réunion et les participants doit être définie dans le cadre du flux de travail de calendrier Exchange . Les participants ne peuvent pas être capturés dans le flux MIME.
L’exemple de code suivant montre comment importer un fichier .ics simple dans la boîte aux lettres d’un utilisateur.
private static void UploadMIMEAppointment(ExchangeService service)
{
Appointment appointment = new Appointment(service);
string iCalFileName = @"C:\import\appointment.ics";
using (FileStream fs = new FileStream(iCalFileName, FileMode.Open, FileAccess.Read))
{
byte[] bytes = new byte[fs.Length];
int numBytesToRead = (int)fs.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
int n = fs.Read(bytes, numBytesRead, numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
// Set the contents of the .ics file to the MimeContent property.
appointment.MimeContent = new MimeContent("UTF-8", bytes);
}
// This results in a CreateItem call to EWS.
appointment.Save(WellKnownFolderName.Calendar);
}
Utiliser EWS pour importer un élément à l’aide du flux MIME
Vous pouvez utiliser l’opération CreateItem EWS pour importer des éléments EML et iCal à l’aide de leur flux MIME.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
<soap:Header>
<t:RequestServerVersion Version="Exchange2013_SP1" />
<t:MailboxCulture>en-US</t:MailboxCulture>
</soap:Header>
<soap:Body >
<m:CreateItem>
<m:SavedItemFolderId>
<t:DistinguishedFolderId Id="inbox"/>
</m:SavedItemFolderId>
<m:Items>
<t:Message>
<t:MimeContent CharacterSet="UTF-8">
<!-- Insert MIME content here-->
</t:MimeContent>
</t:Message>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>
Étapes suivantes
Après avoir importé des éléments dans une boîte aux lettres, vous pouvez créer un dossier personnalisé pour stocker vos éléments importés ou synchroniser vos éléments client et boîte aux lettres.