Outlook ou exchange restreint le nombre d'élément ouvert [Résolu]

Messages postés
25
Date d'inscription
mardi 3 octobre 2006
Dernière intervention
17 août 2012
- 26 mai 2010 à 12:09 - Dernière réponse :
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 30 mai 2010 à 19:10
Bonjour,

je développe une application via VSTO dans outlook permettant de récupérrer et d'afficher la lsite des contacts de notre annuaire partagée (environ 2000 contacts).

Le soucis est qu'a partir de 250 contacts je recois une erreur :

L'administrateur du serveur a restreint le nombre d'éléments pouvant être ouverts simultanément. Fermez les messages que vous avez ouverts ou supprimez des pièces jointes et des images de messages non envoyés que vous êtes en train de composer.

Voici un bout de mon code :

//Permet de récupérer le répertoire de contact de l'utilisateur
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = (Outlook.NameSpace)oApp.GetNamespace("mapi");
oNS.Logon(null, null, true, true);

// On récupère le répertoire des contacts
//Outlook.MAPIFolder contactFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);

Outlook.MAPIFolder opublic = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders["Annuaire partagé"];

// On applique un filtre pour ne rechercher que les objets de type Contat, et pas les listes de distribution/diffusion
string strFind "[MessageClass] 'IPM.Contact'";
//Outlook.Items items = contactFolder.Items.Restrict(strFind);
Outlook.Items items = opublic.Items.Restrict(strFind);
//Outlook.Items itempublic = opublic.Items;
String[,] Invite_Outlook = new String[items.Count, 7];
// Pour chaque contact du répertoire
for (int i = 0; i < items.Count; i++)
{
try
{
// On récupère le contact en cours
Microsoft.Office.Interop.Outlook._ContactItem ContactItem = (Microsoft.Office.Interop.Outlook._ContactItem)items[i];

// Affichage des informations (Nom, prénom, Email, etc...) dans la listbox
Invite_Outlook[i, 0] = ContactItem.LastName + " " + ContactItem.FirstName;
ContactItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard);
//ContactItem = null;
}
catch (Exception ex)
{ }
}
oApp = null;
oNS = null;
opublic = null;
items = null;
return Invite_Outlook;
}

Si quelqu'un a une idée, je seche complet.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
30 mai 2010 à 17:37
3
Merci
Bonjour,
Essai de déréférencer l'objet COM ContactItem après l'appel de ContactItem.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(ContactItem);



Willi
++

Merci cs_Willi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_Willi
Messages postés
25
Date d'inscription
mardi 3 octobre 2006
Dernière intervention
17 août 2012
30 mai 2010 à 19:01
0
Merci
Merci Willi, c'est exactement ça ! J'ai trouvé la solution vendredi aprs pas mal de difficulté....

J'ai pas eut le temps de mettre en résolu et de donner la solution, mais t'as tout juste.

Merci
Commenter la réponse de clavz40
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
30 mai 2010 à 19:10
0
Merci
De rien
Voila une bonne occasion de valider la réponse :)


Willi
++
Commenter la réponse de cs_Willi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.