Enviar correo electrónico con archivo adjunto en envío de formulario usando PHP

El formulario web es un elemento ampliamente utilizado para la aplicación web. Se utilizan varios tipos de formularios en el sitio web para enviar los datos del usuario. Los formularios de contacto, registro y comentarios son algunos de los formularios web más utilizados para obtener la opinión del usuario. En general, los campos de entrada de texto, área de texto y selección se utilizan en el formulario web. Pero en algunos casos, el formulario web debe permitir al usuario seleccionar un archivo. En esta situación, debe cargar el archivo seleccionado y adjuntarlo a los datos del formulario.
El formulario de contacto o de comentarios se utiliza para la comunicación en línea y los datos del formulario enviado se envían instantáneamente por correo electrónico. Cuando el formulario de contacto tiene un campo de carga de archivo, el archivo debe enviarse con un correo electrónico como archivo adjunto. Con la función de correo (), puede enviar fácilmente un correo electrónico con datos adjuntos y datos de formulario en PHP. En este tutorial, le mostraremos cómo enviar un correo electrónico con un archivo adjunto en el envío del formulario utilizando PHP.
El código de ejemplo proporciona una capacidad instantánea para crear un formulario de contacto con la opción de archivo adjunto e integrarlo en el sitio web. Además, se enviará un correo electrónico a una dirección de correo electrónico específica con un archivo adjunto. Para una mejor comprensión, dividiremos el formulario de contacto de PHP con el correo electrónico y el archivo adjunto de comandos en dos partes, HTML (formulario web) y PHP (envío de formulario). Puede colocar ambas partes del código juntas en la página web donde desea integrar el formulario de contacto con un archivo adjunto.

Formulario web HTML con campo de carga de archivos

El siguiente HTML crea un formulario de contacto con algunos campos básicos (nombre, correo electrónico, asunto y mensaje) y un campo de entrada de archivo. El campo de entrada del archivo permite al usuario seleccionar el archivo para enviar como un archivo adjunto con el formulario.
<! - Muestra el estado de envío -> 
<? Php  if (! Empty ( $ statusMsg )) {  ?> 
    < P  class = "statusMsg <? Php  echo! Empty ( $ msgClass )? $ MsgClass : '' ?> " > <? php  echo  $ statusMsg ?> </ p > 
<? php  ?>


?> "   
     
             placeholder = "Name"  required = "" > 
    </ div > 
    < div  class = "form-group" > 
        < input  type = "email"  name = "email"  class = "form-control"  value = " <? php  echo ! empty ( $ postData [ 'email' ])? $ postData [ 'email' ]: '' ?> " placeholder = "Dirección de correo electrónico"  requerido ="" > 
    </ div > 
    < div  class = "form-group" > 
        < input  type = "text"  name = "subject"  class = "form-control"  value = " <? php  echo! empty ( $ postData [ ' subject ' ])? $ postData [ ' subject ' ]: ' ' ?> "  placeholder = " Subject "  required = " " >
    </ div > 
    <div  class = "form-group" > 
        < textarea  name = "message"  class = "form-control"  placeholder = "Escribe tu mensaje aquí"  required = "" > <? php  echo! empty ( $ postData [ 'message' ] )? $ postData [ 'message' ]: '' ?> </ textarea > 
    </ div > 
    < div  class = "form-group"
         = "file"  name = "attachment"  class = "form-control" > 
    </ div > 
    < div  class = "submit" > 
        < input  type = "submit"  name = "submit"  class = "btn"  value = "SUBMIT " > 
    </ div > 
</ form >

Enviar correo electrónico con archivo adjunto en el formulario de presentación

El siguiente código maneja la funcionalidad de envío de formularios y envío de correo electrónico usando PHP.
  • Obtenga los datos del formulario enviado usando $ _POST en PHP .
  • Valide los datos del formulario para verificar si los campos obligatorios no están vacíos.
  • Valide la dirección de correo electrónico usando FILTER_VALIDATE_EMAIL en PHP .
  • Verifique la extensión del archivo para permitir ciertos formatos de archivo (PDF, imagen y archivo MS Word).
  • Subir archivo al servidor.
  • Agregue los datos del formulario y el archivo cargado al contenido del correo electrónico.
  • Envíe un correo electrónico con archivo adjunto al destinatario especificado mediante la función PHP mail () .
<? php 
$ postData  $ uploadedFile  $ statusMsg  '' ; $ msgClass  'errordiv' ; 
if (isset ( $ _POST [ 'submit' ])) { 
    // Obtenga los datos del formulario enviado 
    $ postData  $ _POST ; 
    $ email  $ _POST [ 'email' ]; 
    $ nombre  $ _POST [ 'nombre' ]; 
    $ subject  $ _POST [ 'subject' ]; 
    $ mensaje  $ _POST [ 'mensaje']; 
    
    // Compruebe si los datos enviados no están vacíos 
    si (! Empty ( $ email ) &&! Empty ( $ name ) &&! Empty ( $ subject ) &&! Empty ( $ message )) { 
        
        // Valide el correo electrónico 
        if ( filter_var ( $ email) FILTER_VALIDATE_EMAIL ) ===  falso ) { 
            $ statusMsg  'Ingrese su correo electrónico válido.' ; 
        } else { 
            $ uploadStatus  1 ; 
            
            // Cargar archivo adjunto 
            si (! Vacío ( $ _FILES [ "adjunto" ] [ "nombre" ])) {
                
                // ruta del archivo config 
                $ targetDir " uploads  /" ; 
                $ nombre_archivo  nombre base ( $ _FILES [ "archivo adjunto" ] [ "nombre" ]); 
                $ targetFilePath  $ targetDir  $ fileName ; 
                $ fileType  pathinfo ( $ targetFilePath , PATHINFO_EXTENSION ); 
                
                // Permitir ciertos formatos de archivo 
                $ allowTypes  = array ( 'pdf' 'doc' 'docx' 'jpg' 'png' '
                if ( in_array ( $ fileType $ allowTypes )) { 
                    // Cargar archivo en el servidor 
                    if ( move_uploaded_file ( $ _FILES [ "attachment" ] [ "tmp_name" ],  $ targetFilePath )) { 
                        $ uploadedFile  $ targetFilePath ; 
                    } else { 
                        $ uploadStatus  0 ; 
                        $ statusMsg  "Lo sentimos, hubo un error al cargar tu archivo". ; 
                    } 
                } else else { 
                    $ uploadStatus  0 ;
                    $ statusMsg  'Lo sentimos, solo se pueden cargar archivos PDF, DOC, JPG, JPEG y PNG'. ; 
                } 
            } 
            
            if ( $ uploadStatus  ==  1 ) { 
                
                // Destinatario 
                $ toEmail  'admin@example.com' ; 

                // Sender 
                $ from  'sender@example.com' ; 
                $ fromName  'CodexWorld' ; 
                
                // Asunto 
                $ emailSubject 'Solicitud de contacto enviada  por' . $ nombre ; 
                
                // Mensaje  
                $ htmlContent '<h2> Solicitud de contacto enviada  </h2>
                    <p> <b> Nombre: </b> ' . $ nombre . '</p> 
                    <p> <b> Correo electrónico: </b>' . $ email . '</p> 
                    <p> <b> Asunto: </b>' . $ sujeto . '</p> 
                    <p> <b> Mensaje: </b> <br/>' . $ mensaje . '</p>' ; 
                
                // Encabezado para información del remitente 
                $ headers  "From:  $ fromName " . "<" . $ desde . ">" ;

$ uploadedFile )) { 
                    
                    // Boundary  
                    $ semi_rand  md5 ( time ()); 
                    $ mime_boundary  "== Multipart_Boundary_x { $ semi_rand } x" 
                    
                    // Encabezados para adjuntos  
                    $ encabezados  . =  "\ NMIME-Versión: 1.0 \ n"  "Tipo de contenido: multiparte / mixto; \ n"  "boundary = \" { $ mime_boundary } \ "" 
                    
                    // Límite de  
                    varias partes $ message  "- { $ mime_boundary } \ n"  "Tipo de contenido: texto / html; conjunto de caracteres = \" UTF-8 \ "\ n"  . 
                    "Codificación de transferencia de contenido: 7 bits \ n \ n"  $ htmlContent  "\ n \ n" 
                    
                    // Preparando el adjunto 
                    if ( is_file ( $ uploadedFile )) { 
                        $ message  . =  "- { $ mime_boundary } \ n" ; 
                        $ fp  = @ fopen ( $ uploadedFile , "rb" ); 
                        $ data  = @ fread ( $ fp , tamaño de archivo ( $ uploadedFile ));
( $ fp ); 
                        $ data  chunk_split ( base64_encode ( $ data )); 
                        $ message  . =  "Content-Type: application / octet-stream; name = \" " . basename ( $ uploadedFile ). " \ "\ n"  
                        "Descripción del contenido:" . nombre base ( $ uploadedFile ). "\ n"  . 
                        "Disposición del contenido: adjunto; \ n"  "filename = \" " . basename ( $ uploadedFile ). " \ "; size =" .). "; \ n"  
                        "Codificación de transferencia de contenido: base64 \ n \ n"  $ datos  "\ n \ n" ; 
                    } 
                    
                    $ mensaje  . =  "- { $ mime_boundary } -" ; 
                    $ returnpath  "-f"  $ email ; 
                    
                    // Enviar correo electrónico 
                    $ mail  mail ( $ toEmail $ emailSubject $ message $ headers $ returnpath ); 
                    
                    // Eliminar el archivo adjunto del servidor 
                    @ unlink ($ uploadedFile ); 
                } else { 
                     // Establecer encabezado de tipo de contenido para enviar encabezados HTML de correo electrónico 
                    . =  "\ r \ n" "Versión MIME: 1.0" ; 
                    $ headers  . =  "\ r \ n" "Tipo de contenido: texto / html; conjunto de caracteres = UTF-8" ; 
                    
                    // Enviar correo electrónico 
                    $ mail  mail ( $ toEmail $ emailSubject $ htmlContent $ headers ); 
                } 
                
                // Si el correo se envió 
                si ( $ mail ) { 
                    $ statusMsg  '¡Su solicitud de contacto se ha enviado correctamente!'; 
                    $ msgClass  'succdiv' ; 
                    
                    $ postData  '' ; 
                } else { 
                    $ statusMsg ' Error al enviar  tu solicitud de contacto, inténtalo de nuevo.' ; 
                } 
            } 
        } 
    } else { 
        $ statusMsg  'Por favor, rellene todos los campos'. ; 
    } 
} ?>
Formulario de contacto emergente con correo electrónico usando Ajax y PHP

Conclusión

Nuestro código de ejemplo lo ayuda a agregar un formulario de contacto con la función de envío de correo electrónico y archivos adjuntos en el sitio web. Pero puede usar este código para cualquier tipo de formulario web para enviar datos del formulario por correo electrónico con un archivo adjunto. En el código de ejemplo, solo hemos permitido archivos PDF, DOC e Imagen como un archivo adjunto. Puede especificar cualquier tipo de archivo para cargar y enviar con el correo electrónico al enviar el formulario.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.