| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 02 Jun, 2009 3:40 pm Asunto: Problemas de vez en cuando con IdSMTP |
|
|
Hola a todos,
Tengo una aplicación que envía un fichero zip adjunto a través de IdSMTP, el 90% de la veces va bien y no da problemas, pero de vez en cuando peta, se queda al 80% de envió o al 50% y da un error, otras veces al conectar da otro error diferente, no se la razón pero la cuestión es que no va perfecto y algunas veces falla.
Suele pasar más cuando el fichero es muy grande, cuando pasa de 8 o 10 megas, pero a veces también pasa sin que sea tan grande y otras veces el fichero es grande y lo envía sin problemas.
Tengo el Builder 6, sabéis a que se puede deber? puede ser el timeout?, el tamaño del buffer? no se, se os ocurre algo? o que esta versión tenga algún fallo o algo así?
Os a pasado a vosotros?
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mie 03 Jun, 2009 10:42 am Asunto: |
|
|
Trocearlo en varios???
Como??? Habria forma de hacerlo en trozos y que luego se junten o algo asi? o te refieres simplemente a hacer 2 o 3 ZIP normales en vez de uno?
Eso ayudaría, pero ten en cuanta que no siempre depende del tamaño del fichero a veces falla teniendo un fichero no demasiado grande, aunque si debe de influir la verdad.
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 03 Jun, 2009 1:28 pm Asunto: |
|
|
No sé como estarás generando el fichero comprimido, pero normalmente los compresores te permiten decirles que el fichero de salida no sobrepase determinado tamaño y se generen tantos ficheros como haga falta. Cuando yo tengo que comprimir, lo hago desde programa con ZipUtils y me funciona bastante bien.
Por otra parte, ¿cómo estás usando el componente? Al prinicipio de usarlo yo para enviar una documentación conectaba y desconectaba para CADA UNO de los envíos dentro del bucle y muchas veces me daba problemas porque no le daba tiempo a ejecutar los cambios; ahora lo conecto ANTES de empezar a enviar y lo desconecto DESPUÉS de leer todos los registros. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mie 03 Jun, 2009 2:31 pm Asunto: |
|
|
Esto ultimo que dices creo que es lo mejor.
Conecto y desconecto para cada cosa que hago, voy a probar lo que dices, seguro que así funciona mucho mejor.
Ya te contare.
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Jue 04 Jun, 2009 11:54 am Asunto: |
|
|
Angel,
Estoy haciendo pruebas, a ver que te parece.
Que seria mejor, al entrar en la aplicación conectar y hasta que no salga de ella no desconectar, o conectar y desconectar a cada mensaje que envío.
Por que luego están las opciones de comprobar correo, descargar correo y borrar correo, esas las podría poner en una sola conexión y el envío en otra, o paso de todo y hago una sola conexión al entrar??
El problema es que esa cuenta de correo para envío la utiliza mucha gente, el que ya la tenga alguien abierta uno de los usuarios afectaría si una segunda o tercera persona quiere abrirla?
Para el POP no hay problema por que cada uno tiene la suya, el problema es para el SMTP que esa si la tienen todos igual.
Vaya charla jajaja un abrazo.
Carlos |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 05 Jun, 2009 10:13 am Asunto: |
|
|
Te explico como lo hago yo. Te he puesto el código que uso para mandar una serie de avisos a gente de una lista. Enviar es un TIdSmtp, Correo es un TIdMessage y el texto del mensaje está guardado en una tabla para poder personalizarlo.
| Código: | try
{
Enviar->Connect(5000);
}
catch(...)
{
ShowMessage("No está disponible la conexión a\r\n" + AnsiString(cServidor));
Enviar->Disconnect();
return;
}
lError = false;
for (nItem = 0; nItem <fSelSoc>Listado->Items->Count; nItem ++)
{
if (!fSelSoc->Listado->Items->Item[nItem]->Checked)
continue;
Query->Close();
Query->ParamByName("Usuario")->AsString = fSelSoc->Listado->Items->Item[nItem]->Caption;
Query->Open();
nCuota = 0;
dIniPer = Query->FieldByName("F_renov")->AsDateTime;
dFinPer = dIniPer + 1;
while (dFinPer < Date())
dFinPer = IncMonth(dFinPer, 12);
while (dIniPer.FormatString("yyyy") <dFinPer>ClearBody();
Correo->MessageParts->Clear();
Correo->Recipients->Clear();
Correo->Subject = "Socio núm. " + FormatFloat("###,##0", Query->FieldByName("Socio")->AsInteger) + " - " + qAviso->FieldByName("Concepto")->AsString;
Correo->Recipients->Add();
Correo->Recipients->EMailAddresses = Trim(Query->FieldByName("Usuario")->AsString) + "@internautas.org";
if (!Query->FieldByName("Email")->AsString.IsEmpty())
Correo->CCList->EMailAddresses = Trim(Query->FieldByName("Email")->AsString);
Correo->Body->Text = qAviso->FieldByName("Mensaje")->Value;
Correo->Body->Text = StringReplace(Correo->Body->Text, "[SX]" , iif(Query->FieldByName("Sexo")->AsInteger == 1, "a", "o"), oReplace);
Correo->Body->Text = StringReplace(Correo->Body->Text, "[FECHADIA]" , Date().FormatString("dd/mm/yyy"), oReplace);
Correo->Body->Text = StringReplace(Correo->Body->Text, "[FECHARENOV]", Query->FieldByName("F_renov")->AsDateTime.FormatString("dd/mm/yyyy"), oReplace);
Correo->Body->Text = StringReplace(Correo->Body->Text, "[IMPORTE]" , FormatFloat("##0.00' EUR'", nCuota), oReplace);
Correo->Body->Text = StringReplace(Correo->Body->Text, "[EMAIL]" , cEmail, oReplace);
Correo->Body->Text = StringReplace(Correo->Body->Text, "[AI ADMON]" , cNombre, oReplace);
Correo->Body->Text = StringReplace(Correo->Body->Text, "[AI WEB]" , cWeb, oReplace);
try
{
Enviar->Send(Correo);
}
catch (Exception *Exc)
{
lError = true;
}
}
Enviar->Disconnect(); |
Antes lo que hacía era cada vez que iba a ejecutar Enviar->Send conectaba y desconectaba el servidor, pero eso era muy lento ya demás hacía que se perdieran mensajes. Ahora lo que hago es conectar el servidor ANTES de empezar a enviar y lo desconecto DESPUÉS del último envío; no lo dejo permanentemente conectada precisamente para evitar choques entre usuarios. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Vie 05 Jun, 2009 11:14 am Asunto: |
|
|
Vale,
Voy a probar y te cuento, seguro que el estar conectando y desconectando todo el rato es lo que me da errores de vez en cuando.
A ver que tal me sale.
Gracias por todo.
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Sab 12 Mar, 2011 1:10 am Asunto: |
|
|
Angel cual version de Indy usas? la que esta con Builder 2006 ?
Llevo semas con eso del correo y no le doy
la automatizacion con oputlook nome sirve debido a la molesta pregunta del usuario _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Sab 12 Mar, 2011 10:33 am Asunto: |
|
|
Estoy usando la versión 9 sobre Builder 5. Lo que yo hago es al arrancar la aplicación declarar el usuario y la password, si hace falta, en el TIdSMTP:
| Código: | IdMessage1->From->Address = cEmail;
IdMessage1->From->Name = cTitular;
IdMessage1->Organization = cTitular;
IdSMTP1->Host = cServidor;
IdSMTP1->Username = cUsuCor;
if (!AnsiString(cClave).IsEmpty())
{
IdSMTP1->AuthenticationType = atLogin;
IdSMTP1->Password = AnsiString(cClave);
} |
Las variables que uso (cTitular, cServidor, etc.) las guardo en un fichero ini, pero al enviar mensjes no me pide ni usuario ni password. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 14 Mar, 2011 8:31 pm Asunto: |
|
|
Me refiero a que servidor smtp usas?
Con godaddy (secureserver.net)
con yahoo.com.mx
con gmail.com
no funciona pr que tiene autentificacion, conoces alguno gratuito que no lo tenga ..o aun que sea de paga..no importa
Me urge que mi sistemas envien emails _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 15 Mar, 2011 9:18 am Asunto: |
|
|
| Touchsoftwares escribió: | Me refiero a que servidor smtp usas?
Con godaddy (secureserver.net)
con yahoo.com.mx
con gmail.com
no funciona pr que tiene autentificacion, conoces alguno gratuito que no lo tenga ..o aun que sea de paga..no importa
Me urge que mi sistemas envien emails |
Hola Gabriel. Vamos a ver: en cada instalaciónse define el servidor. Por ejemplo, si usas Gmail quedaría así:
| Código: | IdMessage1->From->Address = <midreccion>;
IdMessage1->From->Name = "Ángel Matilla Candás";
IdMessage1->Organization = "Ángel Matilla Candás";
IdSMTP1->Host = "smtp.googlemail.com";
IdSMTP1->Username = <miusuario>;
IdSMTP1->Port = 465; // Esta línea se me había olvidado
if (!AnsiString(cClave).IsEmpty())
{
IdSMTP1->AuthenticationType = atLogin;
IdSMTP1->Password = <miclave>;
} |
Los valores que van en Address, Name, UserName y demás los tengo guardados en un fichero ini que cargo al arrancar el programa. A mi me funciona, y Gmail precisa autentificación.
Espero que te sirva. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mie 16 Mar, 2011 9:19 pm Asunto: |
|
|
Me dice
"530 SMTP authentication is required" _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
R. Porcar Site Admin

Registrado: 08 Ago 2002Mensajes: 113Ubicación: Castellón (España)
|
Publicado: Jue 17 Mar, 2011 12:32 pm Asunto: |
|
|
| Touchsoftwares escribió: |
no funciona pr que tiene autentificacion, conoces alguno gratuito que no lo tenga ..o aun que sea de paga..no importa
Me urge que mi sistemas envien emails |
si no quieres complicarte mucho igual te sirve montar un smtp en local.
de vez en cuando uso el "Easy SMTP Server".
creo que el autor lo tiene un poco abandonado, pero es este:
http://www.softfolder.com/easy_smtp_server.html |
|
| Volver arriba |
|
 |
|