문제

Outlook을 자동화하고 있으며 이메일이 누구인지 제어해야합니다. 사용자는 Outlook에 두 개 이상의 계정을 설정하고 이메일을 보낼 계정을 선택할 수 있어야합니다. 어떤 아이디어?

Outlook 2003 이상에서 지원해야합니다. 나는 이것을 코딩하기 위해 Delphi 2006을 사용하고 있지만 실제로는 중요하지 않습니다.

도움이 되었습니까?

해결책

Sue Mosher라는 사람 이이 문제에 대해 꽤 요약을 썼습니다. Microsoft.public.office.developer.outlook.vba.

요컨대, 그것은 이것 중 하나로 요약됩니다.

  • 사용 MailItem.SentOnBehalfOfName, Exchange Enviromnents에서만 작동합니다 (귀하의 경우는 그렇습니다) - 사용자가 "전송"을 다른 Exchange 사서함에 대한 권한을 보냈을 때, 이는 전환 계정과 거의 동일합니다.
  • The Fiddling과 관련된 작은 해킹을 사용하십시오 CommandBars
  • Outlook Redemption을 사용하십시오
  • (OL2007에서는 가질 것입니다 MailItem.SendUsingAccount)

다른 팁

허용 된 답변을 약간 확장하여 Sue의 Set_Account 함수의 Delphi 구현이 필요했습니다. 인터넷에서 아무것도 찾을 수 없으므로 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;

Sue Mosher의 신용, 감사합니다, 당신 없이는 할 수 없었습니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top