Bonjour,

Je dois déplacer des messages de notre messagerie intégrée vers une messagerie Outlook.
Le principe consiste à prendre tous les messages de la boîte de réception de la messagerie intégrée pour les mettre dans la boîte de réception d'Outlook en les déposant dans des répertoires propres à chaque dossier. Ce principe vaut aussi pour les brouillons, et les éléments envoyés.

Le but est donc de se retrouver dans Outlook avec une arborescence de ce type (XXXXX correspond au nom de la société):
Boite de réception
=>Boîte de réception XXXXX
==>Répertoire dossier A
==>Répertoire dossier B
Eléments envoyés
=>Elément envoyés XXXXX
==>Répertoire dossier A
==>Répertoire dossier B
Brouillons
=>Brouillons XXXXX
==>Répertoire dossier A
==>Répertoire dossier B
Je me sers de l'ActiveX Microsoft Outlook 10.0 Object Library (la version 10.0 m'est imposée)

Voici mon prototype sous Delphi 7
Il fonctionne pour la boite de réception et les brouillons (olFolderInbox et olFolderDrafts):
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
procedure TestOutlook2(FolderType : TOleEnum);
var Outlook : TOutlookApplication;
    Mapi : NameSpace;
    Box, : MAPIFolder;
    XXXXXFolder, SpecificFolder : MAPIFolder;
 
    SafeMailItem : Variant;
begin
  try
  Outlook := TOutlookApplication.Create(nil);
  try
    Outlook.ConnectKind := ckRunningOrNew;
    try
      Outlook.Connect();
 
      Mapi := Outlook.GetNamespace('MAPI');
 
      Found := False;
      Box := Mapi.GetDefaultFolder(FolderType);
      for i := 1 to Box.Folders.Count do
      begin
        XXXXXFolder := Box.Folders.Item(i);
        if (Box.Folders.Item(i).Name = XXXXX_BOX_NAME) then
        begin
          Found := True;
          Break;
        end;
      end;
 
      if not(Found) then
        XXXXXFolder := Box.Folders.Add(XXXXX_BOX_NAME, FolderType);
 
    finally
      Outlook.Disconnect();
    end;
  finally
    FreeAndNil(Outlook);
  end;
  except
    on e : SysUtils.Exception do
    begin
      ShowMessage(e.Message);
      ShowMessage(e.ClassName);
    end
  end;
 
end;

Pour les éléments envoyés (olFolderSentMail), une exception est déclenchée.
e.Message renvoie "Impossible de terminer l'opération. Une ou plusieurs valeurs de paramètres ne sont pas valides"
e.ClassName renvoie "EOleException"

Une idée du problème ?