Foros del Web » Programando para Internet » PHP »

Escribir CRLF

Estas en el tema de Escribir CRLF en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando enviar un email a través de la función mail. Me gustaría saber como puedo escribir un CRLF para que después ...
  #1 (permalink)  
Antiguo 11/02/2009, 05:25
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Escribir CRLF

Hola a todos. Estoy intentando enviar un email a través de la función mail. Me gustaría saber como puedo escribir un CRLF para que después cuando veo el e-mail, por ejemplo en el bloc de notas, me aparezca el salto de línea. Intenté hacerlo con \r\n pero cuando abro el e-mail me aparecen estos caracteres literalmente. La cuestión es que estoy teniendo problemas con el envío de e-mails a través de IIS y viendo por internet pude encontrar una posible solución de que quizás no me los esté enviando porque al final del contenido del mensaje se necesita escribir . CRLF.
Saludos.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 11/02/2009, 08:35
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Escribir CRLF

Podrías especificarle que se trata de un html con las cabeceras correspondientes (hay clases que lo hacen automáticamente). De este modo, podrías maquetar el mail mucho mejor y utilizar br's en vez de los CRLF.

Un saludo.
  #3 (permalink)  
Antiguo 11/02/2009, 09:37
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Respuesta: Escribir CRLF

Hola jerkan. Gracias por responder. Te comento que no es eso a lo que me refería. Cuando uno envía un e-mail al final de todos los bytes que el mail contiene se necesita agregar un . CRLF para indicarle al servidor que hasta ahí llego el final del mensaje. Por eso, una causa de mi problema es que como no se le indica nunca al servidor que el contenido del e-mail llegó a su fin, este se queda colgado esperando más datos. De hecho, cuando intento eliminar un mensaje que se quedó en la cola me dice que no se puede debido a que está siendo utilizado por otro proceso. Por eso asumo que puede estar ahí la solución.
Para que te des una idea precisa de que era lo que me estaba refiriendo, el .CRLF para un servidor SMTP sería como el caracter \0 es para compiladores C para indicar que una cadena x llega hasta ahí.
__________________
Add, never Remove
  #4 (permalink)  
Antiguo 11/02/2009, 12:02
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Escribir CRLF

Vale, entonces habrá que averiguar cómo hay que poner el CRLF.

Yo probaría con la constante PHP_EOL o con /r/n. Recuerdo que una vez me paso este mismo problema (o similar) y lo solucioné poniendo la representación hexadecimal de esos caracteres.

Un saludo y suerte.
  #5 (permalink)  
Antiguo 11/02/2009, 13:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Escribir CRLF

De hecho es con \r\n en un string:
Código php:
Ver original
  1. $algo = "algo\r\n";

Saludos
  #6 (permalink)  
Antiguo 11/02/2009, 14:59
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Respuesta: Escribir CRLF

Si, así es. Me pasa algo muy curioso y no sé por que. Fijense en estas cadenas:

// ESTA FUNCIONA
$message = 'Content-type: text/html; charset=utf-8' . "\r\n";


// ESTA ME ESCRIBE EN WORD PAD LOS CARACTERES \r\n LITERALMENTE
$message = 'Content-type: text/html; charset=utf-8\r\n';

De todas formas, no pude solucionar el problema.
Gracias por sus respuestas.
Saludos.
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 11/02/2009, 15:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Escribir CRLF

Los caracteres especiales y variables deben estar entre comillas dobles para ser interpretados o reemplazados, todo lo que este entre comillas simples sera enviado tal cual, sin interpretar / reemplazar.

Ejemplo:
Código PHP:
$variable 'algo';
echo 
"$variable\r\n";
echo 
'$variable\r\n'
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 11/02/2009, 19:55
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Escribir CRLF

mariano_donati:

Pasa la totalidad del mensaje asi ->

$mensaje = nl2br($mensaje);

Saludos
Franco
  #9 (permalink)  
Antiguo 12/02/2009, 03:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Respuesta: Escribir CRLF

Ahora pude entender entonces, no sabia eso. Gracias.
Si hago nl2br($mensaje) obtengo el mismo resultado.
__________________
Add, never Remove
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:55.