Comportamiento Diferente Entre Evolution Y Thunderbird


Ir a la página 1, 2  Siguiente

Objetivo: Comportamiento Diferente Entre Evolution Y Thunderbird
Estoy haciendo una aplicación que, entre otras cosas, envía un correo electrónico a un destinatario concreto cuando pulso en un botón.

Después de solucionar el problema de la generación de los "para:", "cc:", "cco:", "asunto:", ...etc. me encuentro con que a la hora de generar el texto los cambios de línea los hago añadiendo un "\r" & "\n" es decir CR y NL.

Cuando hago la prueba en mi casa con "evolution" funciona correctamente pero cuando llego a la oficina y utilizo "thunderbird" el texto sale todo en una única línea, es decir, no inserta los CRLN.

¿alguien sabe cual puede ser el problema?.

Gracias de antemano.

Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
Hola
En windows para separar las líneas se utiliza CRLF que en gambas se corresponde con la constante gb.windows. En Unix/Linux para separar líneas se utiliza únicamente LF que se corresponde con la constante gb.unix. En Mac para separar las líneas se utiliza únicamente CR que se corresponde con gb.mac.

Si te sale en una única línea es porque no está viendo la marca que interpreta como final de línea. En una máquina si y en otra no. Tendría que mirar la rfc para mirar si hay alguna especificación sobre esto, pero me temo que no.

Yo creo que tu problema es ese aunque si ambos son linux el problema puede no ser del sistema operativo sino del software. Habría que probar a ver si evolution y thunderbird utilizan el separador de línea del sistema o el suyo propio cosa que me extrañaría mucho.

¿Por que no utilizas la clase smtpclient que es muy eficiente para estas cosas?.
La clase smtpclient

Un saludo

Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
soplo escribió: [Ver mensaje]
Hola
En windows para separar las líneas se utiliza CRLF que en gambas se corresponde con la constante gb.windows. En Unix/Linux para separar líneas se utiliza únicamente LF que se corresponde con la constante gb.unix. En Mac para separar las líneas se utiliza únicamente CR que se corresponde con gb.mac.

Si te sale en una única línea es porque no está viendo la marca que interpreta como final de línea. En una máquina si y en otra no. Tendría que mirar la rfc para mirar si hay alguna especificación sobre esto, pero me temo que no.

Yo creo que tu problema es ese aunque si ambos son linux el problema puede no ser del sistema operativo sino del software. Habría que probar a ver si evolution y thunderbird utilizan el separador de línea del sistema o el suyo propio cosa que me extrañaría mucho.

¿Por que no utilizas la clase smtpclient que es muy eficiente para estas cosas?.
La clase smtpclient

Un saludo


Por fin he solucionado mi problema y para aquellos que pudieran tener el mismo ahí va la solución que he encontrado.

He comprobado que para generar un mensaje cuando haya que colocar un retorno de carro y nueva línea CRLF bastará con poner "\r" o "\n" o ambas encadenadas, es decir "\r" & "\n"

Por el contrario cuando tengamos que hacerlo en thunderbird la solución está en insertar el comando html "<br>", que en este caso no funciona en evolution así que como la aplicación que estoy desarrollando controla que cliente de correo tienes instalado, he puesto un código que decida en función de esta condición:

IF MiCliente = "evolution" THEN
CRLF = "\n" & "\r"
ENDIF

IF MiCliente = "thunderbird" THEN
CRLF = "<br>"
ENDIF

y luego basta con que acabemos cada línea del texto del mensaje con el la variable CRLF. (esta solución me funciona perfectamente en casa en en la ofi)

En cuanto a lo de utilizar smtpclient tengo dos problemas, por un lado, el código al que me lleva el enlace no me funciona y no se porqué y por otro es que en mi aplicación son necesarias dos cosas, que el usuario pueda modificar el contenido del mensaje antes de enviarlo y la segunda es que le quede constancia del envío en su buzón de mensajes enviados y por ello creo que lo mejor es utilizar el cliente de correo que cada uno tenga.

De todas formas, muchísimas gracias.

Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
Yo me enfrenté al mismo problema y fuí más salomónico: En el botón de "E-Mail" de mi aplicación me limito a copiar la lista de direcciones seleccionadas en la base de datos al portapapeles y sacarle un mensaje que dice que "Las direcciones están en el portapapeles, antes de cerrar ésta pantalla, abre tu cliente de correo preferido y pulsa Ctrl+V en el campo BCC."
El texto que se lo apañen ellos...

Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
Hola
Citar:
el código al que me lleva el enlace no me funciona y no se porqué

Dime que es lo que no te funciona por si hay algún error, pero en lo básico eso debe funcionar (otra cosa es que se haya metido una coma donde deba haber un punto o algo pero conceptualmente está bien.

La clase smtpclient

Citar:
mi aplicación son necesarias dos cosas, que el usuario pueda modificar el contenido del mensaje antes de enviarlo y la segunda es que le quede constancia del envío en su buzón de mensajes enviados y por ello creo que lo mejor es utilizar el cliente de correo que cada uno tenga.

Te equivocas en lo de modificar el contenido del email.

Para modificar el contenido del mensaje basta con que se lo pongas por ejemplo en un textbox o un textarea o lo que sea. En ese código yo puse un string llamado cuerpo al que tu le das el valor que quieras ¿porque no puede ser un textbox.text?

Respecto a lo de que le quede en mensajes enviados
Si quieres que aparezca en mensajes enviados si que no hay otra alternativa pero te recuerdo que también dispones de cc y bcc para enviar email a otras direcciones y que están precisamente para estas cosas.

Eso de utilizar los navegadores (a los que puedes accder por gb.desktop) a mi me parece una solución mucho peor y mas pesada pero bueno ...


Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
Reduciendo un poco tu ejemplo en "La Clase SMTP"
PUBLIC SUB Form_Open()

DIM Correo AS SmtpClient
DIM CRLF AS String
DIM CuerpoEmail AS String
DIM EmailOrigen AS String
DIM EmailDestino AS String
DIM Host AS String
DIM Puerto AS String
DIM Asunto AS String
DIM Cuerpo AS String
DIM Adjunto AS String

EmailOrigen = "EmailDelSistema@aplicación.com"
Host = "localhost"
Puerto = 25
CRLF = Chr(13) & Chr(10)
Asunto = "este es el asunto del email"
EmailDestino = "midireccion@correo.com" 'aquí pongo una dirección válida

Correo = NEW SmtpClient
correo.from = EmailOrigen
correo.host = host
correo.port = puerto
correo.subject = asunto
correo.smtp.to.add = EmailDestino '(*)

Cuerpo = "*****************************" & CRLF
Cuerpo &= "" & CRLF
Cuerpo &= "" & Format(Now, "dd/mm/yyyy") & CRLF
Cuerpo &= "" & CRLF
Cuerpo &= "*****************************" & CRLF
Cuerpo &= "Este es un emal automático. No lo responda pues nadie lo leerá." & CRLF
Cuerpo &= "Un saludo"
correo.add(Cuerpo)

correo.send

END


Me canta un error
Citar:
"Unknown symbol 'smtp' in class 'SmtpClient'
en la línea que he marcado con (*)

Por cierto también me daba un error en Mime=text/plain" porqué supongo que le falta una doble comilla delante del text, pero para abreviar esta línea de código me la he saltado.

sustituí la línea que daba error por esta otra:

correo.to.add(EmailDestino)


inicialmente la última línea de código eran:

try correo.send
catch
message.error("No se pudo enviar el mensaje")


y en estas condiciones no pasaba nada y quité el try-catch para ver que error me daba:

Citar:
Connection to mailserver failed while connecting to STMP server (SMTP error code #0)


Y esto para mi ya es un callejón sin salida.

Saludos.

última edición por jsoto61 el Sabado, 28 Noviembre 2009, 03:46; editado 3 veces
Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
Efectivamente el método va como lo has puesto. La línea debería ser
correo.to.add=EmailDestino


Citar:
Connection to mailserver failed while connecting to STMP server (SMTP error code #0)

Eso es porque no has puesto bien el host o porque ese server en vez del puerto 25 usa otro puerto que tendrás que especificar en port. En el ejemplo propuesto host es localhost asumiento que el servidor smtp es la propia máquina pero tu ahí tendrás que poner el smtp que corresponda que puede ser localhost o no.

Lo del text/plain efectivamente un string va entre comillas y le faltaba una
mime="text/plain"


última edición por soplo el Sabado, 28 Noviembre 2009, 14:59; editado 2 veces
Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
soplo escribió: [Ver mensaje]
Efectivamente el método va como lo has puesto. La línea debería ser
correo.to.add=EmailDestino


Citar:
Connection to mailserver failed while connecting to STMP server (SMTP error code #0)

Eso es porque no has puesto bien el host o porque ese server en vez del puerto 25 usa otro puerto que tendrás que especificar en port. En el ejemplo propuesto host es localhost asumiento que el servidor smtp es la propia máquina pero tu ahí tendrás que poner el smtp que corresponda que puede ser localhost o no.

Lo del text/plain efectivamente un string va entre comillas y le faltaba una
mime="text/plain"



No entiendo, ¿tengo que instalar algún servidor smtp en mi equipo?.
y en caso afirmativo, ¿como hago eso?.

Gracias.

Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
No no. No tienes que instalar un servidor smtp en tu equipo.
Hay quien se quiere instalar uno porque quiere un servidor de correo y su aplicación debe manejar correos. en ese caso el servidor de correo será localhost, pero otras muchas veces el servidor de correo será otra máquina de algún servicio de hosting o lo que sea.

En ese caso tu programa lo que tiene que hacer es enviar ese email a esa máquina para que lo haga.

eso mismo ocurre con mozilla, firefox o el que sea. No puedes enviar correo si en la configuración de la cuenta no es especificado en smtp. firefox lo que hace es enviar ese email a esa maquina.

Así que tu en host tienes que poner el nombre o ip del smtp.

Perfil MP  
Objetivo: Re: Comportamiento Diferente Entre Evolution Y Thunderbird
soplo escribió: [Ver mensaje]
No no. No tienes que instalar un servidor smtp en tu equipo.
Hay quien se quiere instalar uno porque quiere un servidor de correo y su aplicación debe manejar correos. en ese caso el servidor de correo será localhost, pero otras muchas veces el servidor de correo será otra máquina de algún servicio de hosting o lo que sea.

En ese caso tu programa lo que tiene que hacer es enviar ese email a esa máquina para que lo haga.

eso mismo ocurre con mozilla, firefox o el que sea. No puedes enviar correo si en la configuración de la cuenta no es especificado en smtp. firefox lo que hace es enviar ese email a esa maquina.

Así que tu en host tienes que poner el nombre o ip del smtp.


Pero entonces, en mi caso que no tengo ningún servidor de correo instalado pongo en host ="localhost" pero ¿que puerto pongo?

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0945s (PHP: 21% SQL: 79%)
Consultas SQL: 21 - Debug off - GZIP Activado