Foros del Web » Programando para Internet » PHP »

Enviar mail en formato HTML y ademas...

Estas en el tema de Enviar mail en formato HTML y ademas... en el foro de PHP en Foros del Web. Hola a todos Tengo ua pagina web de mi ciudad, es de anuncios, al agregar alguien un anuncio se envia un email a su correo ...
  #1 (permalink)  
Antiguo 01/08/2005, 18:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 53
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Enviar mail en formato HTML y ademas...

Hola a todos

Tengo ua pagina web de mi ciudad, es de anuncios, al agregar alguien un anuncio se envia un email a su correo para que lo confirme y el anuncio se publique, es como cuando te registras a una web y necesitas confirmar tu E-Mail desde este mismo.

Al enviar el mail de confirmación este se envia en texto plano me parece. Lo que quiero hacer es enviarlo en formato HTML para darle un poco mas de estilo y presentación pero como tambien se envian variables recogidas del formulario pues al querer poner esto ej: Hola $nombre!, como puedo hacerlo para que me aparezca asi ej: Hola Gonzalo!. .

De antemano muchas gracias y ojala puedan ayudarme.
  #2 (permalink)  
Antiguo 01/08/2005, 18:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Puedes usar algo como esto:
(con los comentarios creo que podrás entenderlo)
$UNO y $DOS son retornos de carro (uno y dos respectivamente)

Genero cabeceras necesarias:

# Obligatoria para el formato html
$cabecera .= "MIME-Version: 1.0".$UNO;
# De: viene del formulario
$cabecera .= "From: ".$_POST["de"].$UNO;
# Especifica el contenido. Necesaria para el formato HTML
$cabecera .= "Content-Type: multipart/alternative;".$UNO;
# Determino el separador de partes (boundary)
$cabecera .=" boundary=$separador".$DOS;

# El cuerpo principal del mensaje
# Se puede crear el mensaje que se quiera,
# siempre que se vayan concatenando las líneas
# dentro de la variable $cuerpo
$cuerpo = "<html><head><title></title></head><body style='background-color : skyblue'>\n";
$cuerpo .= "<font face='Arial' color = '#808080'>";
$cuerpo .= "<h1>Datos del Formulario:</h1><ul>\n";
$cuerpo .= "<li><strong>De: </strong>".$_POST["de"]."</li>\n";
$cuerpo .= "<li><strong>Opinion del sitio: </strong>".$_POST["Opinion"]."</li>\n";
$cuerpo .= "<li><strong>Problemas de Accesibilidad: </strong>".$_POST["accesibilidad"]."</li>\n";
$cuerpo .= "<li><strong>Temas no Encontrados: </strong>".$_POST["no-encontrado"]."</li>\n";
$cuerpo .= "<li><strong>Comentarios: </strong>".$_POST["comentarios"]."</li></ul>\n";
$cuerpo .= "<hr><p>Enviado por MFEC, (c) 2003 b0ls0p3ll0n</p>";
$cuerpo .= "</font></body></html>";

# Sustituyo <br>, <li> y <h1> y las necesarias
# para formatear el texto plano, luego
# elimino el resto de las etiquetas html
$sin_br = eregi_replace("<br>", $UNO, $cuerpo);
$sin_li = eregi_replace("<li>", "\n\t", $sin_br);
$sin_h1 = eregi_replace("<h1>", "\t\t\t", $sin_li);
$sin_html = strip_tags($sin_h1);

# Genero la parte de texto plano, la cual
# se verá en clientes de correo que no
# soporten HTML. Dado que la codificación
# es 7bit, no se deben usar caracteres especiales
# con código ASCII superior a 127. En caso de usarse,
# se verán caracteres extraños en esta parte del mensaje
$texto ="--$separador".$UNO;
$texto .="Content-Type: text/plain; charset=\"ISO-8859-1\"".$UNO;
$texto .="Content-Transfer-Encoding: 7bit".$DOS;
$texto .=$sin_html;

# Esta es la parte de html
# Iguales consideraciones con los caracteres
# especiales que para la parte anterior.
$html =$UNO."--$separador".$UNO;
$html .="Content-Type: text/html; charset=\"ISO-8859-1\"".$UNO;
$html .="Content-Transfer-Encoding: 7bit".$DOS;
$html .= $cuerpo;
$html .=$UNO."--$separador".$UNO;
  #3 (permalink)  
Antiguo 01/08/2005, 20:58
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
En mi experiencia, prefiero usar la clase PHP mailer (podés descargarla de http://phpmailer.sourceforge.net/ ) que suele ser muy efectivo, quizás de otra forma llega como "no deseado" o demás, pero con esta clase me llega bien
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




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