From a front end client you can send a request to an SMTP server, which will send the email.
This tutorial runs over how to do that with the emailJS SMTP server, (which allows you to send 200 free emails/month in case free is a priority).
I'll summarize because they didn't cover everything I wanted.
Step1
Install emailJS via
npm install emailjs-com
or
yarn add emailjs-com
Source
If you are using create-react-app please view the tutorial I mentioned above or this linked source, where they provide instructions on how to include emailJS with create-react-app
Step 2
This is a code example of a form which sends an email using emailJS, You must replace 'YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', and 'YOUR_USER_ID' with your actual id's(which I will explain where to find in later steps)
import React from 'react';
import emailjs from 'emailjs-com';
export default function ContactUs() {
function sendEmail(e) {
e.preventDefault(); //This is important, i'm not sure why, but the email won't send without it
emailjs.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', e.target, 'YOUR_USER_ID')
.then((result) => {
window.location.reload() //This is if you still want the page to reload (since e.preventDefault() cancelled that behavior)
}, (error) => {
console.log(error.text);
});
}
return (
<form className="contact-form" onSubmit={sendEmail}>
<input type="hidden" name="contact_number" />
<label>Name</label>
<input type="text" name="from_name" />
<label>Email</label>
<input type="email" name="from_email" />
<label>Subject</label>
<input type="text" name="subject" />
<label>Message</label>
<textarea name="html_message" />
<input type="submit" value="Send" />
</form>
);
}
Source (I made some adjustments)
- If you don't want your api details to be visible from the client, you would have to make a request containing the email message, from, to, etc. to a backend server via something like
axios
or fetch
which would execute the sendEmail function
Step 3
Set up an account at https://www.emailjs.com/
Step 4
Connect an email by adding a service, in this case I used gmail.
If you use gmail then 'YOUR_SERVICE_ID'(step 2) should be replaced with 'gmail'
Step 5
Create a a template by clicking Email Templates in the side nav and selecting create new template. This will create an email outline and give you a template id
You should replace 'YOUR_TEMPLATE_ID'(step 2) with this template id
Here is an example Email template
Step 6
You can find your userID by going to Integration -> API
Replace 'YOUR_USER_ID'(step 2) with this userID
And in case you don't want spam emails, add Captcha