Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2004
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Unhappy Problema al adjuntar archivos al Outlook

Que tal!
Tengo el siguiente problema:
Estoy usando un componente llamado TEmail2 que sirve para el envio facil de email, el cual llama al outllok o cualquier otro programa configurado para el envio de correo.
En cada listado que muestra el programa tiene la posibilidad de enviarlo por email, el problema se me presenta en algunos casos solamente. Es decir, algunos listados son adjuntados perfectamente y se pueden enviar sin problemas y otros son adjuntados pero el outlook se queda colgado o sea muestra los archivos adjuntos pero no se puede hacer nada mas por consiguiente se pega tanto el outlook como el programa.
Si alguien sabe el motivo de esto, a que se puede deber le agradeceria su respuesta ya que estoy loco tratando de entender el motivo.
Responder Con Cita
  #2  
Antiguo 24-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Disculpa que no conteste a tu pregunta, realmente no conozco la componente que mencionas. Sin embargo te recomiendo que en lugar de usar clientes externos como Outlook pruebes de usar las componentes Indy. Estas son unas componentes gratuitas que puedes bajar de http://www.indyproject.org/ y entre muchas otras cosas te sirven para mandar correos desde tu aplicación sin depender de ningún cliente externo. Son sencillas de usar y en cuestión de a lo sumo una tarde que le dediques las tendrás trabajando. En estos foros podrás encontrar varias referencias al uso de las Indy, particularmente de TIdSMTP.

// Saludos
Responder Con Cita
  #3  
Antiguo 25-11-2004
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
envio de e-mail

si los quiere sin componentes te ayudo un poco...
recuerda declara la funcion con tu nombree de formulario y publica....
Código Delphi [-]
 function TFrm_Main.SendMailMAPI(const Subject, Body, FileName, SenderName, SenderEMail,
                   RecepientName, RecepientEMail: String) : Integer;
 var
   message: TMapiMessage;
   lpSender,
   lpRecepient: TMapiRecipDesc;
   FileAttach: TMapiFileDesc;
   SM: TFNMapiSendMail;
   MAPIModule: HModule;
 
 begin
   FillChar(message, SizeOf(message), 0);
   with message do
   begin
     if (Subject<>'') then
     begin
       lpszSubject := PChar(Subject)
     end;
     if (Body<>'') then
     begin
       lpszNoteText := PChar(Body)
     end;
     if (SenderEMail<>'') then
     begin
       lpSender.ulRecipClass := MAPI_ORIG;
       if (SenderName='') then
       begin
            lpSender.lpszName := PChar(SenderEMail)
       end
       else
       begin
             lpSender.lpszName := PChar(SenderName)
       end;
       lpSender.lpszAddress := PChar('SMTP:'+SenderEMail);
       lpSender.ulReserved := 0;
       lpSender.ulEIDSize := 0;
       lpSender.lpEntryID := nil;
       lpOriginator := @lpSender;
     end;
     if (RecepientEMail<>'') then
     begin
       lpRecepient.ulRecipClass := MAPI_TO;
       if (RecepientName='') then
       begin
         lpRecepient.lpszName := PChar(RecepientEMail)
       end
       else
       begin
         lpRecepient.lpszName := PChar(RecepientName)
       end;
       lpRecepient.lpszAddress := PChar('SMTP:'+RecepientEMail);
       lpRecepient.ulReserved := 0;
       lpRecepient.ulEIDSize := 0;
       lpRecepient.lpEntryID := nil;
       nRecipCount := 1;
       lpRecips := @lpRecepient;
     end
     else
     begin
       lpRecips := nil
     end;
     if (FileName='') then
     begin
       nFileCount := 0;
       lpFiles := nil;
     end
     else
     begin
       FillChar(FileAttach, SizeOf(FileAttach), 0);
       FileAttach.nPosition := Cardinal($FFFFFFFF);
       FileAttach.lpszPathName := PChar(FileName);
       nFileCount := 1;
       lpFiles := @FileAttach;
     end;
   end;
   MAPIModule := LoadLibrary(PChar(MAPIDLL));
   if MAPIModule=0 then
   begin
     Result := -1
   end
   else
   begin
     try
       @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
       if @SM<>nil then
       begin
         Result := SM(0, Application.Handle, message, MAPI_DIALOG or
                      MAPI_LOGON_UI, 0);
       end
       else
       begin
         Result := 1
       end;
 
     finally
       FreeLibrary(MAPIModule);
     end;
   end;
   if Result<>0 then
   begin
     //MessageDlg('Error sending mail ('+IntToStr(Result)+').', mtError, [mbOk],0)
   end;
 end;
__________________
^_^

http://stna.cl

Última edición por marcoszorrilla fecha: 26-11-2004 a las 00:17:17.
Responder Con Cita
  #4  
Antiguo 26-11-2004
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Gracias lo probare

Les agradezco sus respuestas, probare ambas formas...gracias
Responder Con Cita
  #5  
Antiguo 30-11-2004
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Este Codigo Resulto Ser Bastante Bueno, Pero Lamentablemente Solo Sirve Para Enviar Un Solo Archivo Adjunto...
¿como Puedo Hacer Para Enviar Mas De Uno?
Responder Con Cita
  #6  
Antiguo 01-12-2004
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Ya resolvi el problema, modifique algunas cosas del codigo y ahora puedo adjuntar mas de un archivo.
Responder Con Cita
  #7  
Antiguo 01-12-2004
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Talking saludos...

actualiza el codigo para que otros tambien puedan usarlo.....

Saludos.
__________________
^_^

http://stna.cl
Responder Con Cita
  #8  
Antiguo 07-12-2004
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Ok aqui esta el codigo mejorado para enviar mas archivos adjuntos...


function TFrmPrintPreview.SendMailMapi(const subject, Body,
SenderName, SenderEmail, RecepientName,
RecepientEmail: String ; FileName:TStringList): Integer;
const
MaxFileListSize = Maxint div sizeof(TMapiFileDesc);
type
TMapiFileDescList = array[0..MaxFileListSize - 1] of TMapiFileDesc;
PMapiFileDescList = ^TMapiFileDescList;
var
mensaje: TMapiMessage;
lpsender, lpRecepient: TMapiRecipDesc;
FileAttach: TMapiFileDesc;
Archivo: PMapiFileDescList;
SM: TFNMapiSendMail;
MapiModule: HModule;
i:Word;
lista_Atach:TList;

function allocLpsz(lst:TList; Str:String):Pointer;
var
p:Pointer;
begin
p:= nil;
GetMem(p, Length(str)+1);
StrPCopy(p, str);
lst.add(p);
result:=p;
end;

begin
FillChar(mensaje, SizeOf(mensaje),0);
with mensaje do
begin
if Subject <> '' then
lpszSubject:= PChar(Subject);
if Body<> '' then
lpszNoteText:= PChar(Body);
if SenderEmail <> '' then
begin
lpSender.ulRecipClass:= MAPI_ORIG;
if SenderName = '' then
lpSender.lpszName:= PChar(SenderEmail)
else
lpSender.lpszName:= PChar(SenderName);
lpSender.lpszAddress:= PChar('SMTP:'+ SenderEmail);
lpSender.ulReserved:= 0;
lpSender.ulEIDSize:= 0;
lpSender.lpEntryID:= nil;
lpOriginator:= @lpSender;
end;
if RecepientEmail<> '' then
begin
lpRecepient.ulRecipClass:= MAPI_TO;
if RecepientName = '' then
lpRecepient.lpszName:= PChar(RecepientEmail)
else
lpRecepient.lpszName:= PChar(RecepientName);
lpRecepient.lpszAddress:= PChar('SMTP:' + RecepientEmail);
lpRecepient.ulReserved:= 0;
lpRecepient.ulEIDSize:= 0;
lpRecepient.lpEntryID:= nil;
nRecipCount:= 1;
lpRecips:= @lpRecepient;
end
else
lpRecips:= nil;
if FileName = nil then
begin
nFileCount:= 0;
lpFiles:= nil;
end
else
begin
lista_atach:= TList.Create;
GetMem(archivo, sizeof(TMapiFileDesc) * lista.count);
for i:= 0 to lista.count - 1 do
begin
with archivo[i] do
begin
ulReserved:= 0;
flFlags:= 0;
nPosition:= Cardinal (-1);
lpszPathName:= AllocLpsz(lista_atach,lista[i]);
lpszFileName:= AllocLpsz(lista_atach, extractfilename(lista[i]));
lpFileType:= nil;
end;
{
FillChar(FileAttach, SizeOf(FileAttach),0);
FileAttach.nPosition:= Cardinal($FFFFFFFF);
FileAttach.lpszPathName:= PChar(lista[i]);
FileAttach.lpszFileName:= PChar(ExtractFileName(lista[i]));}
end;
nFileCount:= lista.count;
lpFiles:= @archivo[0];
//lpFiles:= @FileAttach;
end;
end;
MAPIModule:= LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
Result:= -1
else
begin
try
@SM:= GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM <> nil then
Result:= SM(0, Application.Handle, mensaje, MAPI_DIALOG or MAPI_LOGON_UI, 0)
else
Result:= 1;
finally
FreeLibrary(MapiModule);
end;
end;
if Result <> 0 then
MessageDlg('Error de envio (' + IntToStr(Result) + ').', mtError, [mbOk], 0);
end;


Nota: "lista" es un TStringList que contiene los archivos que se van a adjuntar al
correo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 17:04:04.


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