Zoho mail is working properly on localhost but not on the live server with nodemailer
Zoho mail is working properly on localhost but not on the live server with nodemailer
package.json
"proxy": {
"/auth/google": {
"target": "
http://localhost:8000/"
}
},
ContactForm.jsx
import React, { useState, useEffect } from 'react'
const ContactForm = () => {
const [fname, setFname] = useState("");
const [lname, setLname] = useState("");
const [email, setEmail] = useState("");
const [subject, setSubject] = useState("");
const [msg, setMsg] = useState("");
const [message, setMessage] = useState('');
useEffect(() => {
setTimeout(function () {
setMessage(true)
}, 9000);
},
[message])
const sendEmail = async (e) => {
e.preventDefault();
setFname("");
setLname("");
setEmail("");
setSubject("");
setMsg("");
setMessage(`Thank you ${fname} ${lname} for enquiry. We will back to you asap.`);
const res = await fetch("/register", {
method: "POST",
headers: {
"Content-Type": "application/json"
}, body: JSON.stringify({
fname, lname, email, subject, msg
})
});
console.log(res);
}
return (
<>
<div className="contact-form">
<div className="contact-form-info">
<div className="contact-title">
<h3>TELL US YOUR PROJECT</h3>
</div>
<form id="contact-form">
<div className="contact-page-form">
<div className="contact-input">
<div className="contact-inner">
<input type="text" placeholder="First Name *" id="first-name" value={fname} onChange={(e) => setFname(e.target.value)} />
</div>
<div className="contact-inner">
<input type="text" placeholder="Last Name *" id="last-name" value={lname} onChange={(e) => setLname(e.target.value)} />
</div>
<div className="contact-inner">
<input type="text" placeholder="Email *" id="email" value={email} onChange={(e) => setEmail(e.target.value)} />
</div>
<div className="contact-inner">
<input type="text" placeholder="Subject *" id="subject" value={subject} onChange={(e) => setSubject(e.target.value)} />
</div>
<div className="contact-inner contact-message">
<textarea placeholder="Message *" value={msg} onChange={(e) => setMsg(e.target.value)}></textarea>
</div>
</div>
<div className="contact-submit-btn">
<button className="submit-btn" type="submit" onClick={sendEmail} >Send Email</button>
<p className="form-messege pt-3">{message}</p>
</div>
</div>
</form>
</div>
</div>
</>
)
}
export default ContactForm;
app.js
const express = require("express");
const app = express();
const router = require("./routes/router");
const cors = require("cors");
const port = 8000
app.use(express.json());
app.use(cors());
app.use(router);
app.listen(port,()=>{
console.log(`Server start on port no : ${port}`)
})
router.js existing
APKBARK.COM
const express = require("express");
const router = new express.Router();
const nodemailer = require("nodemailer");
router.post("/register", (req, res) => {
const { fname, lname, email, subject, msg } = req.body;
try {
let transporter = nodemailer.createTransport({
host: "smtppro.zoho.in",
port: 465,
secure: true, // true for 465, false for other ports
auth: {
user: "
info@mydomain.com
",
pass: "myAppPassword",
},
});
const mailOptions = {
from: "
info@mydomain.com
",
cc: "
info@mydomain.com
",
to: email,
subject: "Website Form",
html: 'First Name : ' + fname + '<br>' +
'Last Name : ' + lname + '<br>' +
'Email : ' + email + '<br>' +
'Subject : ' + subject + '<br>' +
'Message : ' + msg
}
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log("Error", error)
} else {
console.log("Email sent" + info.response);
res.status(201).json({ status: 201, info })
}
})
} catch (error) {
res.status(401).json({ status: 401, error })
}
});
module.exports = router;
I have been using nodemailer to send emails from my react and node js app, it used to work perfectly on localhost. I deployed to my hosting, it didn't work. Giving this.
Response {type: 'basic', url: '
https://example.com/register',
redirected: false, status: 200, ok: true, …}