Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Error en envio de adjuntos en Email (https://www.clubdelphi.com/foros/showthread.php?t=67745)

ElDioni 04-05-2010 13:08:39

Error en envio de adjuntos en Email
 
Buenos días gente, estoy teniendo un problema al intentar adjuntar un archivo a un correo, estoy utilizando delphi 2005 con los componentes inDy y tengo el siguiente código:
Código Delphi [-]
var
temp:string;
begin
RvSystem2.DoNativeOutput:=false;
RvSystem2.RenderObject:=RvRenderPDF1;
RvSystem2.SystemSetups:=RvSystem2.SystemSetups-[ssAllowSetup];
RvSysTem2.OutputFileName:='C:\Windows\temp\temp.pdf';
IdMessage1.ClearBody;
IdMessage1.Body.Text:='Un saludo.';
idmessage1.Recipients.EMailAddresses:=DESTINATARIO;
IdMessage1.Subject:='Envio de informe';
IdMessage1.Priority:=MpNormal;
IdMessage1.From.Text:=CORREO;
Frmlistadoart.RvProject2.SelectReport('Report13',true);
FrmListadoart.RvProject2.SetParam('Pedido',pedido);
FrmListadoArt.RvProject2.SetParam('PedPapel',compra);
Frmlistadoart.RvProject2.SetParam('RefTinta',tinta);
frmlistadoart.RvProject2.SetParam('RefMotivo',motivo);
Frmlistadoart.RvProject2.Execute;
if fileexists('C:\WINDOWS\Temp\Temp.pdf') then
  begin
    TIdAttachmentfile.create(IdMessage1.MessageParts,'C:\Windows\temp\temp.pdf');
  end;
try
  IdSMTP1.Connect;
    try
      IdSMTP1.Send(IdMessage1);
    Finally
      IdSMTP1.Disconnect;
    end;
  showmessage('Se envio el mensaje correctamente');
Except
  ShowMessage('Fallo en el envio de email');

Si intento mandarlo con el PDF adjunto me salta el siguiente error:
Código:

raised exception class EIdSocketError with message 'Socket Error # 10054 Connection reset by peer.'
Sin embargo, si lo envío sin el archivo adjunto el mensaje se envia correctamente. Espero que alguien me pueda echar una mano porque no se porque falla, además este código, o uno muy similiar, lo llevo usando en otro programa hace ya tiempo y comparando el código de uno y otro no veo porque uno funciona y el otro no.

Un saludo y gracias por su tiempo.

ElDioni 05-05-2010 09:32:16

Buenos días,
he estado haciendo pruebas y voy a poner algo más de información para ver si a alguien se le ocurre que puede estar pasando, si el archivo que adjunto en el correo ocupa en el ordenador 1Kb el mensaje se envía correctamente con el archivo adjunto, pero probando con otros archivos de 20Kb o 70Kb, que es lo que me ocupan los PDFs que quiero mandar, me devuelve el fallo de envío de E-mail.
No se si se demora mucho al conectarse al servidor de correo al subir el archivo adjunto o que puede ser, si se les ocurre algo comentenmelo. Gracias.

Un saludo.

ElDioni 05-05-2010 09:36:33

Se me olvidaba comentar que he reducido el codigo para hacer las pruebas, se ha quedado en esto:
Código Delphi [-]

IdMessage1.ClearBody;
IdMessage1.Body.Text:='Un saludo.';
idmessage1.Recipients.EMailAddresses:=DESTINATARIO;
IdMessage1.Subject:='asunto';
IdMessage1.Priority:=MpNormal;
IdMessage1.From.Text:=REMITENTE;
TIdAttachmentfile.create(IdMessage1.MessageParts,ARCHIVO);
try
  IdSMTP1.Connect;
    try
      IdSMTP1.Send(IdMessage1);
    Finally
      IdSMTP1.Disconnect;
    end;
  showmessage('Se envio el mensaje correctamente');
Except
  ShowMessage('Fallo en el envio de email');
End;
If IdSMTP1.Connected Then IdSMTP1.Disconnect;

ElDioni 05-05-2010 18:36:23

Como sigo haciendo pruebas les pongo más información (que creo yo útil) para descartar posibles errores, he probado a configurar otra dirección de correo de otro servidor de correo distinto y sigue ocurriendo lo mismo, archivos de 1Kb si que funcionan y de más tamaño no.

Un saludo.

ElDioni 06-05-2010 10:24:15

Buenos días amigos,
he resuelto el problema que tenía con el tema del adjunto, les explico lo que me ha ocurrido por si le pasa a alguien en el futuro, aunque es sencillo el asunto a mi me ha traido de cabeza, el asunto es que tengo en mi empresa el antivirus McAfee con su correspondiente cortafuegos, tengo bloqueado el delphi para que no se conecte a internet y al ejecutar el código que estaba programando yo le daba a permitir a la aplicación que estaba creando pero no funcionaba, lo raro es que no funcionaba cuando le adjuntaba un archivo como les decía más arriba, al ejecutar la aplicación desde fuera de delphi funciona correctamente, es como si el cortafuegos detectara que un programa que estaba banneado intentara conectarse a través de otro.
Muchas gracias por leer y dedicarle tiempo a mi problema.

Un saludo.

kurono 14-05-2010 03:53:59

amigo eldioni que probado tu codigo y no me funciona pero creo no me funciona por la version de indy que utilizo que es la 9 la que viene por defecto con delphi podria decirme si es esa que utiliza o la version 10

ElDioni 28-05-2010 13:10:04

Perdona kurono por no responderte antes, supongo que es un poco tarde pero de todas formas te comento que efectivamente yo utilizo la versión 10 de las indy, lo que cambiaban con respecto a las versiones antiguas, si no estoy equivocado, es la línea de adjuntar archivos, en lugar de ser

Código Delphi [-]
TIdAttachmentfile.create(IdMessage1.MessageParts,'C:\Windows\temp\temp.pdf');

en las versiones antiguas es de otra forma, muy similar a esta pero distinto, si buscas en los foros, aunque seguro que ya lo has hecho, encontrarás información sobre el tema.

Otra cosa que te quería comentar es que aunque al final puse que pude arreglar el error que venía dado por el mcafee, en realidad, sigue fallando, el mcafee solo me deja mandar correos si le desactivo el cortafuegos, lo que pasa es que al desactivar el cortafuegos y volver a activarlo hasta que no reiniciaba el ordenador no volvía a bloquearme el programa por lo que yo pensaba que el error ya estaba solucionado. No me había percatado del problema hasta que los ususarios han empezado a utilizar el programa por eso no lo he puesto antes.

Estoy buscando soluciones alternativas y una de ellas es la de usar el shellexecute para que me arranque, en mi caso, el outlook express, el problema es que aunque he puesto el código igual que viene en muchos casos toda la información aparece correctamente en su casillero del outlook ha excepción del archivo adjunto, aunque se lo ponga a la instrucción no lo adjunta, quería preguntar si alguien puede darme una mano con este tema, os pongo el código que estoy utilizando por si le veis algo raro.

Código Delphi [-]
mail:='mailto:cliente@empresa.com?Subject=prueba%20envio%20de%20mail&body=hola%20mundo&attach="c:\ar  chivo.txt"';
ShellExecute(Application.mainform.Handle,'open',PChar(mail), nil, nil, SW_MAXIMIZE);

Un saludo y gracias.

ElDioni 28-05-2010 13:12:21

Al pegar el código, no se porque, me separa el nombre del archivo que adjunto, pero tener en cuenta que en mi código está todo junto.

Un saludo.

kurono 29-05-2010 00:22:44

amigo ElDioni he instalado la version 10 de los indy y aun asi no puedo mandar correo si bien explica que no has solucionado el problema comentas que puedes enviar correo aunque no los adjuntos, por ahora no me interesa mucho enviar adjuntos solo correo de texto podria decirme a que tipo de correo mandas si hotmail,yahoo o Gmail

si no es mucha molestia puedes decir que configuracion tienes en los componente indy host,puerto ect

erickahr 04-06-2010 18:09:04

Hola. Les recomiendo chacar este post a ver si les ayua de algo compañeros.
http://www.clubdelphi.com/foros/showthread.php?t=68256 ;)


La franja horaria es GMT +2. Ahora son las 22:52:47.

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