Php enviar email con adjunto desde formulario
Hoy en día, casi todas las aplicaciones tienen la capacidad de enviar un correo electrónico. Aparentemente, la funcionalidad parece difícil pero en realidad, enviar un email usando PHP es realmente fácil. La sintaxis de la función mail es la siguiente:
Cada línea del mensaje debe estar separada con un CRLF y las líneas no deben tener más de 70 caracteres. El término CRLF se refiere al retorno de carro (ASCII 13, \r) y al avance de línea(ASCII 10, \n). En windows, ambos son necesarios para describir el final de una línea, mientras que en Linux/Unix sólo se requiere LF.
La función main() abre y cierra un socket SMTP para cada correo electrónico. La función mail() no soporta el envío de adjuntos por defecto. Necesita utilizar diferentes cabeceras y partes de correo MIME para hacerlo posible.
Php send mail with pdf attachment ejemplo
Esta función personalizada o PHP mail attachment script es capaz de enviar un mensaje de correo electrónico de texto plano junto con un único archivo adjunto. El archivo adjunto tiene que ser cargado primero o puede usar un archivo que ya exista en su servidor web. Existen scripts PHP mucho mejores y más avanzados en Internet, pero espero que este ejemplo le ayude a entender cómo es posible enviar un mensaje de correo electrónico con un archivo adjunto utilizando algo de código PHP.
La función mail() no soporta adjuntos o correo HTML por defecto. Necesita usar diferentes encabezados y partes de correo MIME para hacer esto posible. Muchos proveedores de alojamiento compartido no permiten el uso de esta función y puede estar deshabilitada.
Normalmente pasará tres valores a la función mail() más algunas cabeceras. En el ejemplo de abajo omitimos el valor del mensaje, porque el mensaje se define como una parte MIME junto con el adjunto.
Para sitios web o aplicaciones donde un mensaje de correo electrónico es una parte esencial para su negocio, debería usar un proveedor de servicios de correo electrónico de transacciones profesionales y una clase PHP que funcione para el estándar SMTP. En mi opinión, la clase PHPmailer es un script de correo electrónico muy estable y flexible. Si lo desea, revise también mi tutorial PHPMailer.
Php encabezado de correo electrónico
Podemos acceder al archivo subido y sus diferentes atributos usando el array $_FILES. Este array contendrá el nombre, tamaño, ruta y otros atributos del archivo subido. El siguiente código obtiene el nombre, tipo y tamaño del archivo subido:
En el código anterior, estamos validando el tamaño y tipo de archivo. Tenemos el tamaño máximo de archivo permitido ($max_allowed_file_size) fijado en 100KB. La matriz $extensiones_permitidas contiene las extensiones de todos los tipos de archivo permitidos. El código de validación comprueba si la extensión del archivo coincide con alguna de las extensiones de la matriz $allowed_extensions.
El siguiente paso es redactar y enviar el correo electrónico. Utilizaremos la biblioteca Pear para redactar y enviar el correo electrónico. ( ver las instrucciones de instalación de Pear más abajo ) Las clases de Pear PEAR::Mail y PEAR::Mail_Mime se utilizan para enviar el correo electrónico con el archivo adjunto.
La clase Mail_mime() ayuda a componer un mensaje MIME. En el código anterior, se crea un objeto Mail_mime, se actualiza el cuerpo del texto ( $message->setTXTBody($text); ) y se añade el adjunto ( $message->addAttachment(file) )
Código html para enviar correo electrónico con archivo adjunto
Estoy de acuerdo con @MihaiIorga en los comentarios – utiliza el script PHPMailer. Suenas como si lo rechazaras porque quieres la opción más fácil. Créeme, PHPMailer es la opción más fácil por un margen muy grande en comparación con tratar de hacerlo tú mismo con la función mail() incorporada en PHP. La función mail() de PHP realmente no es muy buena.
Para enviar un correo electrónico con archivos adjuntos necesitamos usar el tipo MIME multipart/mixed que especifica que los tipos mixtos serán incluidos en el correo electrónico. Además, queremos utilizar el tipo MIME multipart/alternative para enviar tanto la versión en texto plano como la versión HTML del correo electrónico:
Como puede ver, enviar un correo electrónico con un archivo adjunto es fácil. En el ejemplo anterior tenemos el tipo MIME multipart/mixed, y dentro de él tenemos el tipo MIME multipart/alternative que especifica dos versiones del correo electrónico. Para incluir un adjunto en nuestro mensaje, leemos los datos del archivo especificado en una cadena, los codificamos con base64, los dividimos en trozos más pequeños para asegurarnos de que coinciden con las especificaciones MIME y luego los incluimos como adjunto.