PDA

Ver la Versión Completa : Envio de correos a dominios con "ñ"


newtron
11-04-2018, 17:18:02
Hola a tod@s.

Usando Indy para el envío de correos me he encontrado con un problema al enviar correos a dominios con una ñ, me da error (sin indentificar).

¿Alguna idea?

Gracias y un saludo

mamcx
11-04-2018, 18:12:28
¿Alguna idea?

Si, una sin identificar....

????

newtron
11-04-2018, 19:41:35
Cuando digo "sin identificar" es porque se me abre una ventana de error vacía, no pone nada.

Ya sé que no da muchas pistas. Preguntaba por si alguien ha tenido el mismo problema.

orodriguezca
11-04-2018, 19:48:34
(sin identificar), es el mensaje de error? o sin identificar significa que no se sabe cual es el error?

los nombres de dominios con eñe y/o acentos aún son un problema para muchos servidores, proveedores y clientes de correo; pero, hasta donde se, todos los dominios con eñe tiene a su vez un dominio real sin eñe que lo reemplaza (IDN). Quizas esto te de una idea de como seguir.


Edito: Uff, me demoré en responder. Ya vi que se aclaró lo de "Sin identificar".

newtron
11-04-2018, 20:08:53
los nombres de dominios con eñe y/o acentos aún son un problema para muchos servidores, proveedores y clientes de correo; pero, hasta donde se, todos los dominios con eñe tiene a su vez un dominio real sin eñe que lo reemplaza (IDN). Quizas esto te de una idea de como seguir.


Efectivamente, la solución temporal que hemos dado es cambiar el dominio por su equivalente real sin eñe, pero me gustaría si es posible, resolver eso sin que tengan los clientes que llamar con el problema. Aunque ciertamente no es una cosa habitual.

Ñuño Martínez
17-04-2018, 13:12:21
Por lo que sé, las URL deben estar codificadas en UTF-8, y si no entendí mal cuando empecé a indagar con el Delphi Tokio, Delphi usa UTF-16 (¿Entendí mal? ¿Sí? ¿No?). ¿No será que estás usando UTF-16 sin saberlo? Ten en cuenta que en UNICODE los primeros 127 caracteres son idénticos, la cosa cambia a partir del 128.

newtron
17-04-2018, 13:46:38
Por lo que sé, las URL deben estar codificadas en UTF-8, y si no entendí mal cuando empecé a indagar con el Delphi Tokio, Delphi usa UTF-16 (¿Entendí mal? ¿Sí? ¿No?). ¿No será que estás usando UTF-16 sin saberlo? Ten en cuenta que en UNICODE los primeros 127 caracteres son idénticos, la cosa cambia a partir del 128.

Gracias por contestar Ñuño.

Este problema lo tengo con un proyecto en Delphi 2007 y la verdad es que no sé muy bien cómo va el rollo ese de los utfs.

Saludos

Ñuño Martínez
19-04-2018, 13:22:04
No es difícil de entender, pero sí un poco lioso de utilizar.

Básicamente UNICODE tiene tres tipos de codificación:

UTF-8: Los caracteres pueden ser de 8, 16 ó 32 bits. Los caracteres de 8bit son exactamente iguales a los caracteres ASCII-7 (es decir, los primeros 127 caracteres son iguales en los de ASCII, independientemente de la página utilizada). Además de esto, otra ventaja que tiene es que los idiomas que usan el abecedario latino ocupan mucho menos espacio, ya que la mayoría de sus caracteres necesitan sólo 8 bits y unos pocos (tildes) 16 bits y ninguno 32 bits.
UTF-16: Los caracteres pueden ser de 16 ó 32 bits. Los alfabetos más utilizados caben dentro de estos 16 bits, incluido el griego, árabe, cirílico y los caracteres del alfabeto chino simplificado más comunes. Sólo necesitarás 32 bits para los alfabetos menos comunes (dialectos indios, abecedarios arcaicos como el cuneiforme, etc.).
UTF-32: Los caracteres tienen un tamaño fijo de 32 bits.

Como dije en el mensaje anterior, creo que Delphi usa UTF-16 (WIDESTRING y WideCHAR). Esto supone un pequeño problema ya que Linux e Internet usan UTF-8 por defecto. Además, este último es un semi-compatible con el viejo ASCII, por lo que es más utilizado por la mayoría de los lenguajes (como C). Supongo que tomaron esa decisión ya que WIDESTRING estaba implementada desde hace mucho en Delphi.

newtron
19-04-2018, 13:48:49
No es difícil de entender, pero sí un poco lioso de utilizar.

Básicamente UNICODE tiene tres tipos de codificación:
UTF-8: Los caracteres pueden ser de 8, 16 ó 32 bits. Los caracteres de 8bit son exactamente iguales a los caracteres ASCII-7 (es decir, los primeros 127 caracteres son iguales en los de ASCII, independientemente de la página utilizada). Además de esto, otra ventaja que tiene es que los idiomas que usan el abecedario latino ocupan mucho menos espacio, ya que la mayoría de sus caracteres necesitan sólo 8 bits y unos pocos (tildes) 16 bits y ninguno 32 bits.
UTF-16: Los caracteres pueden ser de 16 ó 32 bits. Los alfabetos más utilizados caben dentro de estos 16 bits, incluido el griego, árabe, cirílico y los caracteres del alfabeto chino simplificado más comunes. Sólo necesitarás 32 bits para los alfabetos menos comunes (dialectos indios, abecedarios arcaicos como el cuneiforme, etc.).
UTF-32: Los caracteres tienen un tamaño fijo de 32 bits.Como dije en el mensaje anterior, creo que Delphi usa UTF-16 (WIDESTRING y WideCHAR). Esto supone un pequeño problema ya que Linux e Internet usan UTF-8 por defecto. Además, este último es un semi-compatible con el viejo ASCII, por lo que es más utilizado por la mayoría de los lenguajes (como C). Supongo que tomaron esa decisión ya que WIDESTRING estaba implementada desde hace mucho en Delphi.

Alto y claro.

Gracias por la explicación.
Saludos

mamcx
19-04-2018, 15:38:49
Supongo que tomaron esa decisión ya que WIDESTRING estaba implementada desde hace mucho en Delphi.

No, fue porque el API de windows en UTF tambien es UTF-16:

https://en.wikipedia.org/wiki/Unicode_in_Microsoft_Windows