2008-10-14 2 views
3

Outlook을 자동화하고 전자 메일의 출처를 제어해야합니다. 사용자는 Outlook에 두 개 이상의 계정을 설정하고 이메일을 보낼 계정을 선택할 수 있어야합니다. 어떤 아이디어?Outlook 자동화 - 보낸 사람 계정 변경

Outlook 2003 이상에서 지원되어야합니다. 이 코드를 작성하기 위해 Delphi 2006을 사용하고 있습니다 만, 그다지 중요하지 않습니다.

답변

2

Sue Mosher라는 사람이이 문제에 대한 요약을 microsoft.public.office.developer.outlook.vba에 작성했습니다. - 사용자가있을 때 "다른 사람 이름으로 보내기"권한 만 (나는 그것이 당신의 경우와 가정) 교환 enviromnents에서 작동

  • 사용 MailItem.SentOnBehalfOfName : 짧은에서

    는,이 중 하나를 아래로 비등 다른 Exchange 사서함의 경우 이는 계정을 전환하는 것과 거의 같습니다.

  • 허용 대답에 약간의 확장
+0

@Kiquenet 당신은 하나를 제공에 오신 것을 환영합니다 이상입니다. :) – Tomalak

+0

http://stackoverflow.com/questions/14809023/sending-defer-message-delivery-and-change-default-account-using-powershell – Kiquenet

2

(OL2007, 당신은 MailItem.SendUsingAccount있을 것입니다)를 CommandBars

  • 사용 전망 구속 손보는 포함 작은 해킹을 사용, 내가 필요한 델파이는 Sue의 set_account 함수를 구현합니다. 어디서나 인터넷에서 찾을 수 없었기 때문에 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; 
    

    신용, 당신 없이는 불가능했을 거예요, 감사합니다 :)