usuario siempre remitente predeterminar predeterminado predeterminada por otro mensajes los enviar entrada electronico cuenta correo con como color cambiar bandeja outlook automation

remitente - outlook 2010 enviar correo siempre por la cuenta predeterminada



Automatización de Outlook-Cambiar Cuenta de Remitente (2)

Estoy automatizando Outlook y necesito controlar de quién parece ser el correo electrónico. Los usuarios tendrán dos o más Cuentas configuradas en Outlook y necesito poder seleccionar de qué cuenta enviar el correo electrónico. ¿Algunas ideas?

Necesita ser compatible con Outlook 2003 y superior. Estoy usando Delphi 2006 para codificar esto, pero eso realmente no importa.


Una persona llamada Sue Mosher escribió un bonito resumen sobre este tema en microsoft.public.office.developer.outlook.vba .

En resumen, se reduce a cualquiera de estos:

  • use MailItem.SentOnBehalfOfName , que solo funciona en MailItem.SentOnBehalfOfName de Exchange (supongo que ese es el caso para usted): cuando el usuario tiene permisos de "Enviar como" para el otro buzón de Exchange, esto es más o menos lo mismo que cambiar de cuenta.
  • utiliza un pequeño truco que implica jugar con los CommandBars
  • utilizar el canje de Outlook
  • (en OL2007, tendría MailItem.SendUsingAccount )

Ampliando un poco la respuesta aceptada, necesitaba una implementación Delphi de la función set_account de Sue. No pude encontrar nada en Internet en ninguna parte para esto, así que aquí hay una interpretación Delphi del 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;

Gracias a Sue Mosher, gracias, no podría haberlo hecho sin ti :)