Outlook Automation- 발신자 계정 변경
-
03-07-2019 - |
문제
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의 신용, 감사합니다, 당신 없이는 할 수 없었습니다 :)
제휴하지 않습니다 StackOverflow