FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
envio de e-mail
si los quiere sin componentes te ayudo un poco...
recuerda declara la funcion con tu nombree de formulario y publica....
Última edición por marcoszorrilla fecha: 25-11-2004 a las 23:17:17. |
#4
|
|||
|
|||
Gracias lo probare
Les agradezco sus respuestas, probare ambas formas...gracias
|
#5
|
|||
|
|||
Este Codigo Resulto Ser Bastante Bueno, Pero Lamentablemente Solo Sirve Para Enviar Un Solo Archivo Adjunto...
¿como Puedo Hacer Para Enviar Mas De Uno? |
#6
|
|||
|
|||
Ya resolvi el problema, modifique algunas cosas del codigo y ahora puedo adjuntar mas de un archivo.
|
#7
|
||||
|
||||
saludos...
actualiza el codigo para que otros tambien puedan usarlo.....
Saludos. |
#8
|
|||
|
|||
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. |
|
|
|