Mandando correos con archivos adjuntos vía PHP

Pues, después de casi 6 meses, nuevamente me encuentro aquí escribiendo y compartiendo algo que me funcionó y espero a alguien le pueda servir también.
Esta demás el decir que estuve un poco alejado de toda actividad Tuxtenera, pero YA ESTAMOS DE REGRESO y como yo, espero que poco a poco más gente vuelva a la actividad.
Bueno, después de tanto chacoteo, vamos a lo que importa.
En estos días me encuentro desarollando un sistema en el cual requiero enviar correos con archivos adjuntos los cuales eran generados al vuelo después de ingresar ciertos datos en un formulario. Si bien PHP tiene una función para mandar mails [mail();] ésta se queda un poco corta, por lo que me di a la tarea de buscar en la red alguna clase que ya hiciera esto.
(Recuerden buscar siempre en hotscrips.com y sourceforge.net antes de escribir. Ahora que si su ego esta por arriba del standar y disponen de mucho tiempo para desarrollar escriban todo desde cero
)
Y bueno , su nombre PHPMailer (http://phpmailer.sourceforge.net/). Esta belleza esta probada en servidores de correo Sendmail, qmail, Postfix, Imail, Exchange, Mercury, Courier.
En mi caso, puedo comentarles que el correo Interno de la empresa donde trabajo esta sobre Exchange y el correo externo esta sobre Sendmail. por lo que en mi aplicación requiero jugar con estos 2 servers. Esto me ha permitido probar dicha clase tanto en servidores Exchange y Sendmail.
¿Comó funciona?
Descarga el .zip o .tar.gz del sitio y descomprímelo en el directorio de tu aplicación, para este caso he agrupado todo lo referente a PHPMailer en el directorio /correo y el resto lo podemos ver en un ejemplo vía PHP:
$msj=”Cuerpo del Mensaje:\nEste es el cuerpo del mensaje en texto plano\n“;
$msj2=”
Cuerpo del Mensaje:
Mensaje en HTML
“;
require “correo/class.phpmailer.php”; //definimos donde esta la calse
$correo = new phpmailer();
$correo->PluginDir = “includes/”;
$correo->Mailer = “smtp”;
$correo->Host = “192.168.1.2“;
// Si requieres auth para envio especifica las siguientes 3 lineas, si no comentalas
$correo->SMTPAuth = true;
$correo->Username = “karam“;
$correo->Password = “clave“;
// **************************************************************
$correo->From = “no-reenviar@dominio“;
$correo->FromName = “Nombre de la persona correo origen“;
$correo->AddAddress(direcciondestino@dominio);
$correo->Subject = “El título de tu correo“;
$correo->Body = $msj2;
$correo->AltBody = $msj;
// $correo->AddAttachment(”c:/doc/doc-a33.doc“, “doc.doc“); //windoze
$correo->AddAttachment(”/home/karam/karam.doc“, “karam.doc“); //Linux *
$ok = $correo->Send();
if(!$ok) {
echo “El correo no se pudo Mandar
”;
}
?>
He colocado en negritas en lo que hay que modificar.
Con esta clase, tenemos la oportunidad de mandar un correo en formato HTML, y proponer un correo en formato texto por si el destinatario no soporta correo en HTML.
Para el mensaje en texto los saltos de linea los damos con ‘\n’
A este mismo script le he cambiado la ip del server smtp, uno para el servidor con sendmail y otro para el servidor Exchange, y ha funcionado perfectamente con ese único cambio.
Si … lo se, exchange, pero de vez en cuando hay que aventarse un Palomazo …
También esta clase nos permite mandar archivos adjuntos de una forma muy sencilla :)
En fin, espero que a alguien le sea de utulidad.
Y con esto anuncio mi regreso a la trinchera tuxtenera
Saludos
}8)
Karam








