Cómo Enviar E-mails con Archivos Adjuntos en PHP

enviar-e-mail-con-archivo-adjunto

Estos días me encontraba trabajando en el desarrollo de la página web de mi cliente Solo10.com, una empresa que brinda servicios de registro de dominios y web hosting, y nos surgió la necesidad de enviar credenciales de invitación (formato png) a un listado de 400 empresarios previamente registrados a un evento.

La imágen debía ser enviada cómo archivo adjunto puesto que muchos proveedores de mail (Gmail, Yahoo, Hotmail) presentan inconvenientes a la hora de visualizar una imágen incrustada en el contenido del mail.

En el sitio finalwebsites.com, encontré una función php muy sencilla de utilizar y efectiva para enviar e-mails con archivos adjuntos. Comparto el código fuente php e instrucciones a continuación:

<?phpfunction mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {    $file = $path.$filename;    $file_size = filesize($file);    $handle = fopen($file, "r");    $content = fread($handle, $file_size);    fclose($handle);    $content = chunk_split(base64_encode($content));    $uid = md5(uniqid(time()));    $name = basename($file);    $header = "From: ".$from_name." <".$from_mail.">\r\n";    $header .= "Reply-To: ".$replyto."\r\n";    $header .= "MIME-Version: 1.0\r\n";    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";    $header .= "This is a multi-part message in MIME format.\r\n";    $header .= "--".$uid."\r\n";    $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";    $header .= $message."\r\n\r\n";    $header .= "--".$uid."\r\n";    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here    $header .= "Content-Transfer-Encoding: base64\r\n";    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";    $header .= $content."\r\n\r\n";    $header .= "--".$uid."--";    if (mail($mailto, $subject, "", $header)) {        echo "mail send ... OK"; // or use booleans here    } else {        echo "mail send ... ERROR!";    }}?>

Debajo de éste código, simplemente debes detallar el nombre de tu archivo adjunto, la ruta dónde se encuentra alojado, la casilla remitente que deseas para tu mail, destinatario, asunto, cuerpo, etc.

Todos estos valores serán los parámetros que enviarás cuando haces la llamada hacia la función declarada arriba “mail_attachment” . Te paso el código de ejemplo:

$my_file = "tuarchivo.png"; // puede ser cualquier formato$my_path = $_SERVER['DOCUMENT_ROOT']."/ruta_a_tu_archivo/";$my_name = "Tu nombre";$my_mail = "tumail@tudominio.com";$my_replyto = "tumail@tudominio.com";$my_subject = "Le adjuntamos la credencial de invuitación al evento";$my_message = "Tu mensaje";mail_attachment($my_file, $my_path, "casilla_destinatario@dominio.com", $my_mail, $my_name, $my_replyto, $my_subject, $my_message);

Las casillas de e-mails de los empresarios y el nombre de la credencial correspondiente se encontraban apuntadas en tablas mysql relacionadas. Por lo tanto, utilizando la consulta inner join de mysql logramos unir la información y luego con ayuda del bucle foreach de php logramos enviar las credenciales a los 400 empresarios en forma masiva.

Si tú también necesitas un programador web para ayudarte en el desarrollo de tus páginas web, puedes comunicarme tus necesidades y solicitar presupuesto aquí

Si lo que necesitas es capacitación sobre programación PHP y Mysql o ayuda para resolver algún problema puntual, también puedes escribirme. Brindo clases particulares, u$s 25 la hora (descuento por cantidad), comunicación mediante Skype o el chat que tu prefieras. Comunícame desde aquí

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *