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:

  1. function enviar_correo( $to, $asunto, $modo, $adjunto )
  2. {
  3. $boundary= md5(time()); //valor boundary
  4. $htmlalt_boundary= $boundary. «_htmlalt»; //boundary suplementario
  5. $subject=$asunto; //titulo del correo
  6. //cabeceras para enviar correo en formato HTML
  7. $headers = «MIME-Version: 1.0\r\n»;
  8. $headers .= «Content-Type: multipart/mixed; boundary=\»». $boundary. «\»\r\n»; //datos mixteados
  9. $headers .= «From: «. TITULO_WEB. «<robot@sie-group.net>\r\n»; //correo del que lo envia
  10. //incia cuerpo del mensaje que se visualiza
  11. $cuerpo=»–«. $boundary. «\r\n»;
  12. $cuerpo .= «Content-Type: multipart/alternative; boundary=\»». $htmlalt_boundary. «\»\r\n\r\n»; //contenido alternativo: texto o html
  13. $cuerpo .= «–«. $htmlalt_boundary. «\r\n»;
  14. $cuerpo .= «Content-Type: text/html; charset=iso-8859-1\r\n»;
  15. $cuerpo .= «Content-Transfer-Encoding: 8bits\r\n\r\n»;
  16. if( $modo==0 ) //enviar correo para comentarios
  17. {
  18. //Cuerpo o contexto del mensaje, la esencia del correo, el todo 😉
  19. $cuerpo .= «Aquí va el texto que se quiera y que se mostrará en el mail como tal»;
  20. }
  21. //y mas modos….
  22. //….
  23. $cuerpo .= «\r\n\r\n»;
  24. $cuerpo .= «–«. $htmlalt_boundary. «–\r\n\r\n»; //fin cuerpo mensaje a mostrar
  25. //archivos adjuntos
  26. if( strcmp($adjunto, «0») && strcmp($adjunto, «vacio»)  )
  27. {
  28. $archivo= $adjunto;
  29. $buf_type= obtener_extencion_stream_archivo($adjunto); //obtenemos tipo archivo
  30. $fp= fopen( «uploads/».$archivo, «r» ); //abrimos archivo
  31. $buf= fread( $fp, filesize(«uploads/».$archivo) ); //leemos archivo completamente
  32. fclose($fp); //cerramos apuntador;
  33. $cuerpo .= «–«. $boundary. «\r\n»;
  34. $cuerpo .= «Content-Type: «. $buf_type. «; name=\»». $archivo. «\»\r\n»; //envio directo de datos
  35. $cuerpo .= «Content-Transfer-Encoding: base64\r\n»;
  36. $cuerpo .= «Content-Disposition: attachment; filename=\»». $archivo. «\»\r\n\r\n»;
  37. $cuerpo .= base64_encode($buf). «\r\n\r\n»;
  38. }
  39. $cuerpo .= «–«. $boundary. «–\r\n\r\n»;
  40. //funcion para enviar correo
  41. if( mail($to, $subject, $cuerpo, $headers) == FALSE )
  42. return 0;
  43. return 1;
  44. }

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

Carlos Dk

Apasionado por la enseñanza y el SEO

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.