Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/12/2008, 17:48
eduardkorn
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Problema con envío de correos

Hola a todos.

Bueno, esta vez tengo un problemilla con el envio de correos usando imap_mail, aunque el problema no esta en la funcion como tal, sino en su contenido. Cuendo yo armo el mail para enviarlo, incluso con archivos adjuntos, funciona bien o por lo menos Gmail reconoce el mail perfectamente... pero mi cliente de correo solo reconoce el mensaje.

Es como si me faltara alguna cabecera o estuviera mal estructurado el correo, pues, estuve leyendo y eso se guia por "boundary" (o bueno, eso entendí), pèro no se que puede estar pasando. Me gustaria saber como puedo organizar el correo o por lo menos como lo estructura gmail para que lo envie bien y el cliente lo reciba bien, ya que mi cliente de correo lo recibe bien desde gmail, pero no desde si mismo.

Ahi envio el codigo del e-mail, lo tome de varias paginas que estuve leyendo.

<?php
function enviar_correo( $to, $asunto )
{
$boundary= md5(time()); //valor boundary
$htmlalt_boundary= $boundary. "_htmlalt"; //boundary suplementario
$subject=$asunto; //titulo del correo
$de=$_POST["de"]."@prepara2.com";
//cabeceras para enviar correo en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
$headers .= "From: ". $de. "\r\n"; //correo del que lo envia

//incia cuerpo del mensaje que se visualiza
$cuerpo="--". $boundary. "\r\n";
$cuerpo .= "Content-Type: multipart/alternative; boundary=\"". $htmlalt_boundary. "\"\r\n\r\n"; //contenido alternativo: texto o html
$cuerpo .= "--". $htmlalt_boundary. "--\r\n";
$cuerpo .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
$cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";
//Cuerpo o contexto del mensaje, la esencia del correo, el todo ;)
$cuerpo.=stripslashes($_POST["txteditor"]);
$cuerpo .= "\r\n\r\n";
$cuerpo .= "--". $htmlalt_boundary. "--\r\n\r\n"; //fin cuerpo mensaje a mostrar
//--------------------REPETIDO-----------------
$cuerpo="--". $boundary. "\r\n";
$cuerpo .= "Content-Type: multipart/alternative; boundary=\"". $htmlalt_boundary. "\"\r\n\r\n"; //contenido alternativo: texto o html
$cuerpo .= "--". $htmlalt_boundary. "--\r\n";
$cuerpo .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";
//Cuerpo o contexto del mensaje, la esencia del correo, el todo ;)
$cuerpo.=stripslashes($_POST["txteditor"]);
$cuerpo .= "\r\n\r\n";
$cuerpo .= "--". $htmlalt_boundary. "--\r\n\r\n"; //fin cuerpo mensaje a mostrar
//--------------------FIN REPETIDO--------------
//archivos adjuntos
//echo print_r($_FILES["archivo"]["name"])."<br>";
$adj=$_FILES["archivo"];
$total=count($adj["name"]);
//echo "total: ".$total."<br>";
for($cont=0;$cont<$total;$cont++){
if($adj["size"][$cont]>0){
//echo $adj["name"][$cont]." - ".$adj["tmp_name"][$cont]." - ".$adj["type"][$cont]." - ".$adj["size"][$cont]."<br>";
$cuerpo .= "--". $boundary. "\r\n\r\n";
$cuerpo .= "Content-Type: ". $adj["type"][$cont]. "; name=\"". $adj["name"][$cont]. "\"\r\n"; //envio directo de datos
$cuerpo .= "Content-Transfer-Encoding: BASE64\r\n";
$cuerpo .= "Content-Disposition: attachment; filename=\"". $adj["name"][$cont]. "\"\r\n\r\n";
//lectura del archivo
$fp= fopen( $adj["tmp_name"][$cont], "r" ); //abrimos archivo
$buf= fread( $fp, filesize($adj["tmp_name"][$cont]) ); //leemos archivo completamente
fclose($fp); //cerramos apuntador;
$cuerpo .= base64_encode($buf). "\r\n\r\n";
}
}
$cuerpo .= "--". $boundary. "--\r\n\r\n";
echo "Cuerpo: <br>".$cuerpo;
//funcion para enviar correo
if( imap_mail($to,$subject,$cuerpo,$headers,$_POST["correos_cc"],$_POST["correos_cco"]) == FALSE )
return 0;
return 1;
}

if(trim($_POST["asunto"])!=""){
$mail=enviar_correo($_POST["correos_para"],$_POST["asunto"]);
if($mail==0){
echo "No se pudo enviar el correo";
}
else{
echo "Si se pudo enviar el correo";
}
}
?>

Agradezco cualquier ayuda posible...Saludos.