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 enMailItem.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 :)