Question

J'automatise Outlook et je dois contrôler l'origine de l'email. Les utilisateurs auront deux comptes ou plus configurés dans Outlook et je dois pouvoir sélectionner le compte à partir duquel envoyer le courrier électronique. Des idées?

Doit être pris en charge sur Outlook 2003 et les versions ultérieures. J'utilise Delphi 2006 pour coder cela, mais cela n'a pas vraiment d'importance.

Était-ce utile?

La solution

Une personne nommée Sue Mosher a rédigé un joli résumé de cette question dans microsoft.public.office.developer.outlook.vba .

En bref, cela se résume à l'une de ces choses:

  • utilisez MailItem.SentOnBehalfOfName , qui ne fonctionne que dans les environnements Exchange (je suppose que c'est le cas pour vous), lorsque l'utilisateur a " Envoyer en tant que " autorisations pour l’autre boîte aux lettres Exchange, c’est à peu près la même chose que changer de compte.
  • utilisez un petit hack qui consiste à jouer avec les CommandBars
  • utiliser Outlook Redemption
  • (dans OL2007, vous auriez MailItem.SendUsingAccount )

Autres conseils

Pour approfondir un peu la réponse acceptée, il me fallait une implémentation Delphi de la fonction set_account de Sue. N'ayant rien trouvé sur Internet pour cela, voici une interprétation Delphi du code de Sue.

Function SetAccount(TargetAccount:string; var MailItem:OLEVariant):boolean;
var OLI,CBs,CBP,MC:olevariant;
    strAccountBtnName:String;
    i,t:Integer;
    FoundAccount:Boolean;
Const ID_ACCOUNTS = 31224;
begin
    FoundAccount:=false;
    OLI:=MailItem.GetInspector;
    CBs:=OLI.CommandBars;
    CBP:=CBs.FindControl(, ID_ACCOUNTS);
    t:=1;
    while (not FoundAccount) and (t<=CBP.Controls.Count) do begin
       MC:=CBP.Controls[t];
       i:=Pos(' ',MC.Caption);
       if i > 0 Then strAccountBtnName:=Copy(MC.Caption,i+1,Length(MC.Caption)-i)
       else strAccountBtnName:=MC.Caption;
       if strAccountBtnName = TargetAccount then begin
           MC.Execute;
           FoundAccount:=true;
       end;
       inc(t);
    end;
    Result:=FoundAccount;
end;

Remerciements à Sue Mosher, merci, je n’aurais pas pu le faire sans vous :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top