Outlook-Automatisierung - Absenderkonto ändern

Ich automatisiere Outlook und muss kontrollieren, von wem die E-Mail kommt. Die Benutzer müssen zwei oder mehr Konten in Outlook eingerichtet haben und ich muss in der Lage sein, das Konto auszuwählen, von dem die E-Mail gesendet werden soll. Irgendwelche Ideen?

Muss auf Outlook 2003 und höher unterstützt werden. Ich benutze Delphi 2006, um das zu programmieren, aber das ist nicht wirklich wichtig.

3

2 Antworten

Eine Person namens Sue Mosher hat in Microsoft.public.office.developer.outlook.vba .

Kurz gesagt, es läuft auf beides ab:

  • use MailItem.SentOnBehalfOfName, which only works in Exchange enviromnents (I suppose that is the case for you) - when the user has "Send As" permissions for the other Exchange mailbox, this is pretty much the same thing as switching accounts.
  • use a small hack that involves fiddling with the CommandBars
  • use Outlook Redemption
  • (in OL2007, you would have MailItem.SendUsingAccount)
2
hinzugefügt
hinzugefügt der Autor Kiquenet, Quelle
@Kiquenet Sie sind herzlich eingeladen, einen zu stellen. :)
hinzugefügt der Autor Tomalak, Quelle

Ich erweiterte ein wenig auf die akzeptierte Antwort und benötigte eine Delphi-Implementierung von Sues set_account-Funktion. Konnte nirgendwo etwas im Internet finden, deshalb hier ist 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;

Dankeschön an Sue Mosher, danke, hätte es ohne dich nicht geschafft :)

2
hinzugefügt