npx create-react-app react-contact-form-with-emailjs
Lệnh trên tạo bảng soạn sẵn bằng lệnh create-react-app có tất cả các tệp và gói cho ứng dụng React.
npm install @emailjs/browser
cd react-contact-form-with-emailjs npm start
Ứng dụng có thể truy cập trên http: // 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;
Giao diện người dùng ứng dụng cần trông đẹp mắt đối với người dùng, vì vậy trong tệp App.css , hãy sao chép và dán đoạn mã sau:
// 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; }
Trang sẽ trông như thế này với mọi thứ được thực hiện đúng:
Thêm dịch vụ email
Phần này nói về sự tích hợp giữa EmailJS và máy chủ email của bạn. Trên trang tổng quan EmailJS của bạn, hãy chọn dịch vụ Gmail từ tab Dịch vụ Email , tab này sẽ mở ra một trang mới được gọi là dịch vụ cấu hình .
Tiếp theo, thay đổi tên và các thông số id dịch vụ . Id dịch vụ sẽ được sử dụng sau này trong khi khởi tạo biểu mẫu liên hệ để kết nối nó với EmailJS. Đảm bảo nhấp vào nút Kết nối Tài khoản và Tạo Dịch vụ để xác nhận các thay đổi của bạn.
Tạo Mẫu Email
Mẫu email rất cần thiết khi bạn muốn bao gồm chủ đề của email, nội dung mà nó sẽ chứa và đích của nó trong hộp thư đến của bạn khi người dùng gửi thư từ phía máy khách của trang web của bạn.
Trên trang tổng quan, nhấp vào tab Mẫu Email và Tạo Mẫu Mới .
Tiếp theo, bạn phải nhấp vào tab Cài đặt và thay đổi Tên và ID Mẫu thành bất kỳ thứ gì bạn muốn. ID mẫu sẽ được sử dụng sau này, như thể hiện trong hình ảnh bên dưới:
Quay trở lại tab Nội dung, các giá trị bên trong dấu ngoặc nhọn là các biến động phải có cùng giá trị như được xác định trong phần tử <form> trong biểu mẫu liên hệ, như message , user_name và user_email .
Các biến môi trường .env
là một tệp lưu trữ các khóa công khai của bạn và các giá trị khác mà bạn không muốn chia sẻ và là riêng tư đối với một mình bạn.
Trong thư mục gốc của thư mục dự án của bạn, hãy tạo một tệp, .env
và dán thông tin sau:
// .env REACT_APP_TEMPLATE_ID=TEMPLATE_ID REACT_APP_SERVICE_ID=SERVICE_ID REACT_APP_PUBLIC_KEY=API_PUBLIC_KEY
Đối với khóa công khai, bạn có thể tìm thấy nó bằng cách nhấp vào tab Account
và sao chép giá trị như được hiển thị trong phần public key
:
Trong ứng dụng React, nhập gói đã cài đặt, @emailjs/browser
.
// src/App.js import React from 'react' import emailjs from '@emailjs/browser'; function App() { return ( <div> // form element </div> ); } export default App;
useRef
xử lý việc gửi biểu mẫu liên hệ.
Sao chép và cập nhật mã trong tệp 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
được nhập và khởi tạo với một biến có tên là biểu mẫuuseRef
, được sử dụng làm tham chiếu và được gán cho phần tử <form>
sendEmail
, biểu mẫu có phương thức preventDefault
ngăn trang làm mớisendEmail
, hàm sendForm
được gọi và khởi tạo với service ID
template ID
, thuộc tính form .current
của tham ref
và public key
.then()