Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-01-2009
toni.vi toni.vi is offline
Miembro
 
Registrado: may 2003
Ubicación: Sant Fost(Barcelona)
Posts: 102
Poder: 21
toni.vi Va por buen camino
Shellexecute y Outlook 2003

Hola,
Desde hace bastante tiempo esta funcionando el envio de emails con un archivo adjunto con OutLook 97 y 2002, pero al cambiar a 2003, deja de funcionar y da un mensaje de:
Argumento no valido en linea de comandos. Compruebe el modificador que esta usando.
He buscado por todos los foros y no he encontrado solución, el código es de sobras conocido.
Código Delphi [-]
Var
MailTo:String;
Body:String;
Archivo:String;
CC:String;
begin
MailTo := 'usuario@aaaaa.com';
Body := 'Cuerpo del mensaje';
Archivo := 'c:\fichero.pdf';
CC := 'usuario@bbbbb.com';

ShellExecute( Self.Handle, 'open',
PChar(
'mailto:' + Trim( MailTo )
+ '?subject=' + 'Reporte de Servicio Diario'
+ '&body=' + Body
+ CC
+ '&Attach="' + Archivo + '"'
),
nil,
nil,
SW_SHOW );

¿Alguien sabe si hay solución para Outlook 2003 con Shellexecute?
Con los Indy funciona bien, pero no queda constancia en elementos enviados, que para este caso es necesario.
Gracias.
Responder Con Cita
  #2  
Antiguo 31-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
Uses Outlook2000
...
Function Tfrm.EnviarCorreo(const Titulo, Mensaje, NombreArchivo, NombreArchivoCompleto, 
                                      CorreoDestino, CorreoAlterno: String; AutoEnvio: Boolean): Boolean;
var
Outlook: _Application;
AFolder : MAPIFolder;
ANameSpace : _NameSpace;
AMailItem : _MailItem;
AAttachments : Attachments;
AppWasRunning: boolean; //Comprobar ejecución de outlook
lcid: integer; //ID usuario
Unknown: IUnknown;
Resultado: HResult;
begin
 lcid := LOCALE_USER_DEFAULT;
 //----
 Resultado := GetActiveObject(CLASS_OutlookApplication, nil, Unknown);
 if (Resultado = MK_E_UNAVAILABLE) or (AppWasRunning) then
  Outlook := CoOutlookApplication.Create
 else begin
  OleCheck(Resultado); // Comprobar que se generó el objeto
  OleCheck(Unknown.QueryInterface(_Application, Outlook));
  AppWasRunning := True; // Establece que outlook esta ejecutándose
 end;
 //Obtener Sesión
 ANameSpace := Outlook.Get_Session;
 //Obtener bandeja de entrada
 AFolder := ANameSpace.GetDefaultFolder(olFolderInbox);

 //Muestra la carpeta de entrada
 //AFolder.Display;

 //Genera un nuevo correo
 AMailItem := (Outlook.CreateItem(olMailItem) as MailItem);
 AMailItem.To_ := CorreoDestino;
 AMailItem.CC := CorreoAlterno;
 AMailItem.Subject := Titulo;
 AMailItem.Body := Mensaje;

 AAttachments := AMailItem.Get_Attachments;

 //Agregar adjuntos en caso de que existan
 if (Length(NombreArchivoCompleto) > 0) then begin
  AAttachments.Add(NombreArchivoCompleto,$00000001 ,
  Length(Mensaje)+1,NombreArchivo);
 end;

 AMailItem.Save;
 If AutoEnvio then begin
   Try
    AMailItem.Send;
    Result := True;
    except on E:EExternal do begin
      Result := False;
    end;
   end;
 end else begin
  try
   AMailItem.Display(0);
   Result := True;
   except on E:EExternal do begin
    Result := False;
    Raise;
   end;
  end;
 end;
 //MessageDlg('Correo Enviado Correctamente',mtinformation,[mbok],0);
 // Outlook.Quit; //Cierra Outlook
end;

No recuerdo de donde exactamente obtuve ese código, pero me funciona en todas las versiones del Outlook 2000, 2003 y 2007.
__________________

Responder Con Cita
  #3  
Antiguo 31-01-2009
toni.vi toni.vi is offline
Miembro
 
Registrado: may 2003
Ubicación: Sant Fost(Barcelona)
Posts: 102
Poder: 21
toni.vi Va por buen camino
Gracias.
Esto funciona bien.
La única cosa que falta y era importante respecto a Shellexecute, es la firma del usuario que envía el email, antes salía automáticamente y ahora no sale.
¿Sabes si es posible?.
Por cierto he tenido que bloquear la línea:
Código SQL [-]
Resultado := GetActiveObject(CLASS_OutlookApplication, nil, Unknown);
porque me da error al compilar y no se que unit necesito.
Responder Con Cita
  #4  
Antiguo 18-02-2009
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 20
pborges36 Va por buen camino
Thumbs up

Solo queria agradecer a CotraVeneno por este post. Me resulto sumamente util.
En verdad es mucho mejor buscar priemro en el foro ante que escribir un hilo nuevo.
Muchas gracias ContraVeneno y a los miembros del foro en general.
Saludos.
Responder Con Cita
  #5  
Antiguo 07-06-2011
marilinspi marilinspi is offline
Miembro
 
Registrado: ene 2007
Posts: 136
Poder: 18
marilinspi Va por buen camino
hola, no consigo que me adjunte el archivo... que puese ser?
este es el codigo:
Cita:
Var
MailTo:String;
Body:String;
Archivo:String;
CC:String;
begin
MailTo := 'm@hotmail.com';
Body := 'Cuerpo del mensaje';
Archivo := 'C:\143.pdf';
CC := ' Hola';
ShellExecute( Self.Handle, 'open',
PChar(
'mailto:' + Trim( MailTo )
+ '?subject=' + 'Reporte de Servicio Diario'
+ '&body=' + Body
+ CC
+ '&Attach='' + Archivo + '''),
nil,
nil,
SW_SHOW );
gracias desde ya... espero una pronta respuesta.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar email usando OUTLOOK 2003 Jose Manuel Internet 48 10-08-2012 05:41:56
Problema con Outlook Ofice 2003 y MailItem fredo Servers 4 29-01-2008 16:54:38
Enviar email usando OUTLOOK 2003 - 2ª Parte itsi Internet 1 20-10-2007 01:10:33
Acceder a datos existentes de outlook 2003 saldanaluis Varios 1 18-05-2007 18:25:16
Pasar citas a Outlook 2003 aircraft API de Windows 0 03-07-2006 13:51:26


La franja horaria es GMT +2. Ahora son las 11:30:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi