Frage

Ich bin zu automatisieren Outlook und ich brauche zu kontrollieren, wer die E-Mail von zu sein scheint. Der Anwender hat zwei oder mehr Konten in Outlook einrichten und ich muß in die Lage zu wählen, die von der E-Mail sendet Konto. Irgendwelche Ideen?

Anforderungen auf Outlook 2003 und höher unterstützt werden. Ich verwende Delphi 2006 ist dieses zu kodieren, aber das ist nicht wirklich wichtig.

War es hilfreich?

Lösung

Eine Person namens Sue Mosher schrieb eine hübsche Zusammenfassung zu diesem Thema in microsoft.public.office.developer.outlook.vba .

Kurz gesagt, es läuft darauf hinaus, entweder von dieser nach unten:

  • Verwendung MailItem.SentOnBehalfOfName, die nur in Exchange enviromnents funktioniert (ich nehme an, dass der Fall für Dich ist) - wenn der Benutzer „Senden als“ Berechtigungen für das andere Exchange-Postfach, das ist so ziemlich die gleiche wie Schalen Konten <. / li>
  • verwenden, um einen kleinen Hack, der mit dem CommandBars
  • beinhaltet das Hantieren
  • Verwendung Outlook Redemption
  • (in OL2007, würden Sie haben MailItem.SendUsingAccount)

Andere Tipps

ein bisschen auf die akzeptierte Antwort Aufweiten, brauchte ich eine Delphi Implementierung von Sues set_account Funktion. Kann nichts im Internet überall für diese zu finden, ist so hier eine Delphi-Interpretation von Sues Code.

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;

Kredit zu Sue Mosher, danke, es nicht ohne Sie getan haben könnte :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top