npx create-react-app react-contact-form-with-emailjs
El comando anterior crea el texto modelo usando el comando create-react-app que tiene todos los archivos y paquetes para la aplicación React.
npm install @emailjs/browser
cd react-contact-form-with-emailjs npm start
Se puede acceder a la aplicación en //localhost:3000 .
// src/App.js import React from 'react' import './App.css'; function App() { return ( <div> <h1>Contact Form</h1> <form className='cf'> <div className='half left cf'> <input type='text' placeholder='Name' name='user_name' /> <input type='email' placeholder='Email address' name='user_email' /> </div> <div className='half right cf'> <textarea name='message' type='text' placeholder='Message'></textarea> </div> <input type='submit' value='Submit' id='input-submit' /> </form> </div> ); } export default App;
La interfaz de usuario de la aplicación debe verse hermosa para los usuarios, por lo que en el archivo App.css , copie y pegue el siguiente código:
// src/App.css @import url(//fonts.googleapis.com/css?family=Merriweather); html, body { background: #f1f1f1; font-family: 'Merriweather', sans-serif; padding: 1em; } h1 { text-align: center; color: #a8a8a8; } form { max-width: 600px; text-align: center; margin: 20px auto; } input, textarea { border: 0; outline: 0; padding: 1em; border-radius: 8px; display: block; width: 100%; margin-top: 1em; font-family: 'Merriweather', sans-serif; resize: none; } #input-submit { color: white; background: #e74c3c; cursor: pointer; } #input-submit:hover { box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.2); } textarea { height: 126px; } .half { float: left; width: 48%; margin-bottom: 1em; } .right { width: 50%; } .left { margin-right: 2%; } @media (max-width: 480px) { .half { width: 100%; float: none; margin-bottom: 0; } } .cf:before, .cf:after { content: ' '; display: table; } .cf:after { clear: both; }
La página debería verse así con todo bien hecho:
Agregar un servicio de correo electrónico
Esta sección trata sobre la integración entre EmailJS y su servidor de correo electrónico. En su panel de EmailJS, elija el servicio de Gmail en la pestaña Servicios de correo electrónico , que debería abrir una nueva página llamada servicio de configuración .
A continuación, cambie los parámetros de nombre e identificación del servicio . La identificación del servicio se usará más adelante al inicializar el formulario de contacto para conectarlo a EmailJS. Asegúrese de hacer clic en el botón Conectar cuenta y crear servicio para confirmar sus cambios.
Creación de una plantilla de correo electrónico
La plantilla de correo electrónico es esencial cuando desea incluir el asunto del correo electrónico, el contenido que contendrá y su destino en su bandeja de entrada cuando un usuario envíe un mensaje desde el lado del cliente de su sitio web.
En el tablero, haga clic en la pestaña Plantilla de correo electrónico y en Crear nueva plantilla .
A continuación, debe hacer clic en la pestaña Configuración y cambiar el Nombre y la ID de plantilla a lo que desee. El ID de la plantilla se usará más adelante, como se muestra en la siguiente imagen:
Volviendo a la pestaña Contenido, los valores dentro de las llaves son variables dinámicas que deben tener el mismo valor definido en el elemento <form> en el formulario de contacto, como el mensaje , el nombre de usuario y el correo electrónico del usuario .
Las variables de entorno .env
es un archivo que almacena sus claves públicas y otros valores que no desea compartir y es privado solo para usted.
En la raíz del directorio de su proyecto, cree un archivo, .env
, y pegue lo siguiente:
// .env REACT_APP_TEMPLATE_ID=TEMPLATE_ID REACT_APP_SERVICE_ID=SERVICE_ID REACT_APP_PUBLIC_KEY=API_PUBLIC_KEY
Para la clave pública, puede encontrarla haciendo clic en la pestaña Account
y copiando el valor como se muestra en la sección public key
:
En la aplicación React, importe el paquete instalado, @emailjs/browser
package.
// src/App.js import React from 'react' import emailjs from '@emailjs/browser'; function App() { return ( <div> // form element </div> ); } export default App;
El useRef
maneja el envío de formularios de contacto.
Copie y actualice el código en el archivo App.js
:
// src/App.js import React, { useRef } from 'react'; // imports function App() { const form = useRef(); const sendEmail = (e) => { e.preventDefault(); emailjs .sendForm( process.env.REACT_APP_SERVICE_ID, process.env.REACT_APP_TEMPLATE_ID, form.current, process.env.REACT_APP_PUBLIC_KEY ) .then( (result) => { alert('message sent successfully...'); console.log(result.text); }, (error) => { console.log(error.text); } ); }; return ( <div> <h1>Contact Form</h1> <form className='cf' ref={form} onSubmit={sendEmail}> // div container with input element </form> </div> ); } export default App;
useRef
es importado e inicializado con una variable llamada formuseRef
, se usa como referencia y se asigna al elemento <form>
sendEmail
, el formulario tiene el método preventDefault
que evita que la página se actualicesendEmail
, la función sendForm
se invoca y se inicializa con el ID de service ID
de template ID
, la propiedad form .current
de ref
y la public key
..then()