Envío de emails II

  • 8 Respuestas
  • 6077 Vistas

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Envío de emails II
« : diciembre 19, 2014, 20:46:54 pm »
Hola Boris, como estas ?

Te acordás que en Junio ya te había reportado que tenía dificultades con el envío de mails.
Bueno, nunca pude resolver el problema todavía.
Pero le he dedicado muchas, muchas horas en estos días, y he podido llegar a algunas conclusiones.

Por lo pronto, te cuento que estoy usando el SMTP de Arnet, con destino a una cuenta Gmail que levanto en mi celular.
Esto está probado y anda perfecto.

En mi opinión, hay un bug en la función SmtpSend().
Y es una falla tipo "toggle", que está presente en una ejecución, y no en la siguiente.

Fijate esta secuencia de eventos:

1- Cargo el firmware al PLC (esto hace que se resetee todo). Automáticamente me envía un email de notificación de encendido. Sale el mail y llega al instante.
2- Provoco un evento que hace salir una notificación. Sale el mail y llega al instante.
3- Provoco un evento que hace salir una notificación. Se queda aprox. 30 segundos en SmtpStatus=127 (enviando), y luego termina con SmtpStatus=-1  (falló el envío).

Ahora repito los pasos 2 y 3:
4- Provoco un evento que hace salir una notificación. Sale el mail y llega al instante.
5- Provoco un evento que hace salir una notificación. Se queda aprox. 30 segundos en SmtpStatus=127 (enviando), y luego termina con SmtpStatus=-1  (falló el envío).

Y así indefinidamente los últimos 2 eventos: el primero sale, el segundo no sale.

Si vuelvo a repetir todo desde el paso 1, se repite todo exactamente igual.

He revisado mi código mil veces, y he llegado a la conclusión de que la función SmtpSend tiene que tener un bug tipo "toggle".

Tengo en uso la última versión de firmware disponible, y también el ultimo entorno de desarrollo.

Bueno, te dejo la inquietud.

Muchas gracias desde ya,
Pablo.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re: Envío de emails II
« Respuesta #1 : diciembre 20, 2014, 11:54:13 am »
Buen día Pablo,

Es posible que me envíes un proyecto, con el mínimo código posible que te produzca la falla?

De esa forma, "si me decís proba de tal forma y el error aparece", puedo debuguearlo y determinar la causa.

Yo tengo arnet, no hace falta que me envíes usuario y clave.

Aguado tus comentarios.

PD: Del 1 de enero al 22 de enero de 2015 cerramos por vacaciones. Tener en cuenta para consultas y pedidos.
« Última Modificación: diciembre 23, 2014, 10:42:36 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re: Envío de emails II
« Respuesta #2 : diciembre 23, 2014, 09:26:37 am »
OK, muchas gracias. En los próximos días te armo un mini-proyecto extractando del código mío y te lo mando.
Saludos,
Pablo.


Buen día Pablo,

Es posible que me envíes un proyecto, con el mínimo código posible que te produzca la falla?

De esa forma, "si me decís proba de tal forma y el error aparece", puedo debuguearlo y determinar la causa.

Yo tengo arnet, no hace falta que me envíes usuario y clave.

Aguado tus comentarios.

PD: Del 1 de enero al 22 de enero cerramos por vacaciones. Tener en cuenta para consultas y pedidos.

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re: Envío de emails II
« Respuesta #3 : diciembre 26, 2014, 11:31:24 am »
Hola Boris,

Bueno, armé un "mini-proyecto" que reproduce perfectamente la falla que te había descripto.
Podés leer en el archivo .TXT qué es lo que hace el programa, y cómo simular la falla.
Un mail sale, el siguiente no, y así sucesivamente.
Los mails son originados en una cuenta SMTP Arnet, y son destinados a una cuenta GMAIL.

Saludos y muchas gracias !
Pablo.


Buen día Pablo,

Es posible que me envíes un proyecto, con el mínimo código posible que te produzca la falla?

De esa forma, "si me decís proba de tal forma y el error aparece", puedo debuguearlo y determinar la causa.

Yo tengo arnet, no hace falta que me envíes usuario y clave.

Aguado tus comentarios.

PD: Del 1 de enero al 22 de enero de 2015 cerramos por vacaciones. Tener en cuenta para consultas y pedidos.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re: Envío de emails II
« Respuesta #4 : diciembre 26, 2014, 12:50:18 pm »
Ok Pablo, Recibido.

Déjame que lo analice y pruebe, así vemos donde falla.

Te aviso por este medio cualquier novedad.

Saludos

PD: Del 1 de enero al 22 de enero de 2015 cerramos por vacaciones. Tener en cuenta para consultas y pedidos.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re: Envío de emails II
« Respuesta #5 : diciembre 28, 2014, 20:48:40 pm »
Buenas noches Pablo,

Estuve probando tu programa. Te comento:

1)

Me pasaba el error que describías al utilizar la constante SMTP_OPT_FORCE_RESOLV con SmtpInit().
Aparentemente al forzar la resolución de la IP cuando ya fue obtenida provoca un timeout en el servidor DNS.

Así que intente utilizar como antes la constante SMTP_OPT_DEFAULT, para que solo resuelva
si no esta en el cache o paso un tiempo largo. Así funcionó:

SmtpInit("arnet.com.ar", "smtp.arnet.com.ar", 25, "usuario@arnet.com.ar", "clave_arnet", SMTP_OPT_DEFAULT)

De esta forma no provoca el timeout.

El SMTP_OPT_FORCE_RESOLV era experimental, pero SMTP_OPT_DEFAULT no me da errores,
resuelve correctamente. Lo seguiré probando.

2)

En cada envío de email, inicializas con SmtpInit() todo de nuevo, te lo modifique para que solo inicialices las variables utilizadas.
Solo para optimizar.

3)

Te adjunto la versión modificada.

Por mail privado te paso datos de una cuenta de mail en slicetex.com, para que tengas
como alternativa de Arnet para probar temporalmente. Clave y dirección de mail.
Asi mismo Arnet me funciona correctamente con la constante modificada.


4)

Encontré que Arnet, si envías demasiados mails seguidos, te pone en una
lista "gris" por una hora (la función te retorna estado -8) y te rebota. Luego te admite
nuevamente mails. Esto es para evitar spam.

En una aplicación normal, no vas a enviar demasiados mails, menos con tu aplicación
de lectura de fases. Pero es para que lo tengas en cuenta en las pruebas.

5)

El programa que te envío modificado, utiliza VirtualHMI para simular
las fases con las teclas:

  • M5 -> DIN5
  • M6 -> DIN6
  • M7 -> DIN7

Esto es para evitar cablear la placa.

7)

Voy a seguir testeando el programa estos días, para ver si arroja alguna novedad.

Quedo a disposición y avisame cualquier consulta.

PD: Del 1 de enero al 22 de enero de 2015 cerramos por vacaciones. Tener en cuenta para consultas y pedidos.
« Última Modificación: diciembre 28, 2014, 21:02:06 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re: Envío de emails II
« Respuesta #6 : diciembre 29, 2014, 07:00:16 am »
Hola Boris, buen día,

Recuerdo en algún momento haber probado con SMTP_OPT_DEFAULT, y tuve la falla igualmente. Pero no estoy 100% seguro. Bien vale la pena probar de nuevo.

Muchas gracias por todas las pruebas y optimizaciones; qué excelente soporte que brindás !
El próximo fin de semana largo me pongo a hacer más pruebas.

Felices vacaciones, y a la vuelta te cuento !
Pablo


PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re: Envío de emails II
« Respuesta #7 : enero 01, 2015, 18:06:46 pm »
Hola Boris, feliz 2015 !

Sé que estás en vacaciones, pero por las dudas, igualmente te quería contar que aparentemente el tema quedó funcionando.
Seguí los pasos que me sugeriste en el proyecto que me enviaste, y aparentemente ahora saldrían todos los mails.
En síntesis, los puntos que modifiqué son:

1- Cuando termino de enviar un mail, solo inicializo las variables (sin inicializar el SMTP). Esto con la separación de InitEmailVars().
2- En la inicialización del SMTP le puse el SMTP_OPT_DEFAULT

No hice ningún otro cambio: lo dejé con la cuenta de Arnet tal como estaba. No llegué a probar con la cuenta Slicetex.Com que me preparaste.

Veremos qué pasa en los próximos días, pero me parece que entre los puntos 1 y 2 estuvo la resolución del tema.

Una última pregunta: todas las nuevas funciones y comandos Pawn que has ido agregando con los sucesivos upgrades de firmware, están documentados en una nueva versión del manual ?  Te pregunto porque he visto algunas cosas interesantes, y quería ver bien como usarlas (por ejemplo: la posibilidad de usar las salidas PWM como salidas On/Off me puede ser de utilidad).

Muchas gracias de nuevo !
Pablo.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2330
  • Soporte Técnico
Re: Envío de emails II
« Respuesta #8 : enero 01, 2015, 21:03:29 pm »
Barbaro Pablo! ... yo lo sigo probando al mail con tu programa modificado y me funciona.

Si, ya me estoy yendo de vacaciones y no voy a estar en el país hasta la vuelta, así que aprovecho a responderte tu inquietud.

Todas esas actualizaciones están documentadas, pero en un nuevo manual de usuario (preliminar) no liberado aún, que podes descargar en el siguiente link temporal:

www.slicetex.com/temp/STX80XX-MP-PLC-AX_CX_DX.pdf

El mismo esta adaptado a un nuevo producto que vamos a introducir en los próximos meses, la STX8091 (un modelo mas industrializado y con mejores características).
El nuevo manual hace referencia a la linea STX80XX que incluye a la STX8081 y comparte el mismo sub-set de instrucciones, por lo tanto es mas genérico e incluye las nuevas características de firmware. Una vez completada toda la nueva documentación, también va a ser el manual de la STX8081 en el futuro.

Te dejo que leas "usar el PWM como salida digital" en pagina 85 y el uso genérico de salidas digitales en pagina 62.

Un Feliz 2015 a todos y nos vemos a la vuelta!

PD: Del 1 de enero al 22 de enero de 2015 cerramos por vacaciones. Tener en cuenta para consultas y pedidos.
« Última Modificación: enero 01, 2015, 22:53:57 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 4 de enero al 31 de enero de 2024, cerramos por vacaciones. Tenga en cuenta para sus pedidos y/o consultas.