Enviar correo electrónico o email desde PHP usando la función mail() sin librerías externas
Bienvenidos a este Speed, en esta ocasión vamos a hablar sobre la función mail() de php para enviar un correo electrónico adjuntando un fichero. Ni que decir que se puede utilizar para enviar el correo sin ningún archivo adjunto, aunque está completo ya lo utilizas como quieras.
El código es el siguiente:
function enviar_correo( $to, $asunto, $modo, $adjunto ) { $htmlalt_boundary= $boundary. «_htmlalt»; //boundary suplementario $subject=$asunto; //titulo del correo //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: «. TITULO_WEB. «<robot@sie-group.net>\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/html; charset=iso-8859-1\r\n»; $cuerpo .= «Content-Transfer-Encoding: 8bits\r\n\r\n»; if( $modo==0 ) //enviar correo para comentarios { //Cuerpo o contexto del mensaje, la esencia del correo, el todo 😉 $cuerpo .= «Aquí va el texto que se quiera y que se mostrará en el mail como tal»; } //y mas modos…. //…. $cuerpo .= «\r\n\r\n»; $cuerpo .= «–«. $htmlalt_boundary. «–\r\n\r\n»; //fin cuerpo mensaje a mostrar //archivos adjuntos { set_time_limit(600); $archivo= $adjunto; $buf_type= obtener_extencion_stream_archivo($adjunto); //obtenemos tipo archivo $fp= fopen( «uploads/».$archivo, «r» ); //abrimos archivo fclose($fp); //cerramos apuntador; $cuerpo .= «–«. $boundary. «\r\n»; $cuerpo .= «Content-Type: «. $buf_type. «; name=\»». $archivo. «\»\r\n»; //envio directo de datos $cuerpo .= «Content-Transfer-Encoding: base64\r\n»; $cuerpo .= «Content-Disposition: attachment; filename=\»». $archivo. «\»\r\n\r\n»; $cuerpo .= base64_encode($buf). «\r\n\r\n»; } $cuerpo .= «–«. $boundary. «–\r\n\r\n»; //funcion para enviar correo set_time_limit(600); if( mail($to, $subject, $cuerpo, $headers) == FALSE ) return 0; return 1; }
Os doy una explicación rápida para que no tengáis que pararse en buscar las variables más importantes, esta función recibe los siguientes parámetros: $to, $asunto, $modo, $adjunto que vamos a enumerar y definir:
$to: el remitente
$asunto: el asunto del correo/mail 😉
$modo: en el caso del código está solo el modo 0 para enviar como texto
$adjunto, la url de donde está el fichero.
Espero que os sirva!
Fuente: http://foro.elhacker.net/php/solucionado_como_adjuntar_archivos_a_un_mail_en_php-t235152.0.html