automação Outlook - Conta Mudança Sender
-
03-07-2019 - |
Pergunta
Estou automatizar o Outlook e eu preciso para controlar quem o e-mail parece ser de. Os usuários terão duas ou mais contas configuradas no Outlook e eu preciso ser capaz de selecionar qual conta para enviar o e-mail de. Alguma idéia?
Precisa ser apoiado no Outlook 2003 e acima. Estou usando o Delphi 2006 para este código, mas isso realmente não importa.
Solução
Uma pessoa chamada Sue Mosher escreveu um resumo muito sobre este assunto em microsoft.public.office.developer.outlook.vba .
Em suma, resume-se a qualquer um de presente:
- uso
MailItem.SentOnBehalfOfName
, que só funciona em enviromnents Câmbio (suponho que é o caso para você.) - quando o usuário tem "Enviar como" permissões para outra caixa de correio do Exchange, esta é praticamente a mesma coisa que as contas de comutação - usar um pequeno hack que envolve mexer com o
CommandBars
- uso Outlook Redenção
- (em OL2007, você teria
MailItem.SendUsingAccount
)
Outras dicas
A expansão um pouco sobre a resposta aceita, eu precisava de uma implementação de Delphi da função set_account de Sue. Não foi possível encontrar nada no lugar internet para isso, então aqui é uma interpretação Delphi de código de 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;
Crédito para Sue Mosher, obrigado, não poderia ter feito isso sem vocês :)