Nodemailer got error: 'ECONNRESET' Code:'ESOCKET' - node.js

I tried to send mail using Nodemailer by using my mail server. It work fine in localhost:8000 buy when I deploy my project to production mode It's got error: 'ECONNRESET' fyi: I use express for the backend and deploy this project on window server 2012
This is an error
error cannot sendmail: Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:201:27) {
errno: 'ECONNRESET',
code: 'ESOCKET',
syscall: 'read',
command: 'CONN'
Here is the code
const nodemailer = require('nodemailer')
let transporter = nodemailer.createTransport({
host: 'mailserver',
port: port,
tls: {
rejectUnauthorized: false
},
}
)
function Emailsender(email, link) {
let mailOption = {
from: 'xxxxxxxx#company.org',
to: `${email}`,
subject: 'News',
text: link
}
transporter.sendMail(mailOption, function (err, data) {
if (err) {
console.log('error cannot sendmail:', err)
}
else {
console.log('Email has been send')
}
})
}

Related

Nodemailer SMTP Timeout Error from using ZOHO Mail Service?

I am using ZOHO mail as my email service with Nodemailer to send emails from a web app still in development. I have used the service for a while without it ever breaking and then this morning, i was testing the app, it wasn't sending out the emails and i started to get the timeout error message:
node:internal/errors:464
ErrorCaptureStackTrace(err);
^
Error: queryA ETIMEOUT smtp.zoho.com
at QueryReqWrap.onresolve [as oncomplete] (node:dns:213:19) {
errno: undefined,
code: 'EDNS',
syscall: 'queryA',
hostname: 'smtp.zoho.com',
command: 'CONN'
}
Below is the controller
module.exports.mailTest = function(user) {
log(user);
let transporter = nodemailer.createTransport({
service: 'zoho',
auth: {
user: mailUser,
pass: mailPass
}
});
let userFirstName = user.name.split(' ')[0];
let mailOptions = {
from: mailUser,
to: user.email,
subject: `Mail Check`,
html: `<h2>Hi ${userFirstName}, Test Message</h2>`
}
try {
transporter.sendMail(mailOptions);
log('mail sent!');
}
catch(err) {
log(err);
throw err;
}
}
What does the error really mean and do i have to fix it from my end or is it really a problem with the smtp host?

Nodemailer error: Error: connect ECONNREFUSED 127.0.0.1:587 suddenly appears

So I´m currently updating my JS backend to TS.
The project was written back in 2018 or 2019 and had some outdated stuff going on.
But it actually worked all well.
Now, for some reason, nodemailer wont work anymore and throws this error:
Error: connect ECONNREFUSED 127.0.0.1:587
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16) { errno: -61, code: 'ESOCKET', syscall: 'connect', address:
'127.0.0.1', port: 587, command: 'CONN' }
I know there have been posts on this topic, but I don´t think my configuration is wrong, because it worked before totally fine and I didn´t really change anything, except for adding some types.
// defining transport to connect to mail host
const transport = nodemailer.createTransport({
host: process.env.EMAIL_PROVIDER,
port: 587,
tls: {
ciphers: 'SSLv3',
rejectUnauthorized: false,
},
debug: true,
auth: {
user: process.env.EMAILADDRESS_SENDER,
pass: process.env.EMAILPASSWORD,
},
});
export const sendOrderCreatedEmail = async (customer: Customer, paymentId: string) => {
const mailOptions: MailOptions = {
from: process.env.EMAILADDRESS_SENDER!,
to: process.env.EMAILADDRESS_RECEIVER!,
subject: `new Audit ${paymentId}`,
html: ...,
};
await sendEmail(mailOptions);
};
const sendEmail = async (mailOptions: MailOptions) => {
// send email with defined transport
transport.sendMail(mailOptions).catch(err => {
console.log(err);
});
};
"nodemailer": "^6.7.5",
any idea what could be wrong there? Cheers!

nodemailer && mailtrap -> connect ETIMEDOUT error

I'm Working on a Dummy Project in nextjs and trying to send a reset password message to the user email using mailtrap and nodemailer but i have a problem I can't find any solution for it when I send the request this error happen
Error: connect ETIMEDOUT 18.215.44.90:2525
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16) {
errno: -4039,
code: 'ESOCKET',
syscall: 'connect',
address: '18.215.44.90',
port: 2525,
command: 'CONN'
}
and Here's my code
import nodemailer from "nodemailer";
async function SendEmail(options) {
const transport = nodemailer.createTransport({
host: "smtp.mailtrap.io",
port: 2525,
auth: {
user: "b4f46aa8ab49eb",
pass: "100f5d80facf4d",
},
});
const message = {
from: `${process.env.SMTP_FROM_NAME} <${process.env.SMTP_FROM_EMAIL}>`,
to: options.email,
subject: options.subject,
text: options.message,
};
await transport.sendMail(message, (error, info) => {
if (error) {
console.log(error);
} else {
console.log("Email sent: " + info.response);
}
});
}
export default SendEmail;
try changing the port, another solution is to try it on another internet network, sometimes in some way, the ip provided by the provider has been blocked, that same error happened to me and my solution was to change the internet network.

Node mailer Error: connect ECONNREFUSED

I've tried all solutions that have been already posted on the site like
1)Declaring host as smtp.gmail.com
2)secure:false and rejectUnauthorized as unregistered
3) Allowing less secure apps permission in Gmail
Code snippet looks like this
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
port:'465',
secure: 'false',
auth: {
user: 'my_id',
pass: 'my_password'
},
tls: {
rejectUnauthorized: false
}
});
var mailOptions = {
from: 'myemail',
to: receiver's email,
subject: "some text",
text: "some text"
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
and i still get the error
{ Error: connect ECONNREFUSED 74.125.124.109:465
at Object.exports._errnoException (util.js:1026:11)
at exports._exceptionWithHostPort (util.js:1049:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1085:14)
code: 'ECONNECTION',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '74.125.124.109',
port: 465,
command: 'CONN' }
Any thoughts on how to solve this?
It is very possible, especially if you're on Windows, that you have an antivirus, antimalware, or firewall that is blocking the requests. Windows Firewall in particular is aggressive about blocking SMTP out from unregistered programs.

How to send mail with nodemailer (node.js) by direct method?

I try to write simple mailer just to send some text (for testing purposes) with nodemailer. If I understood well it may sent a mail by smtp or direct. At first I want to sent with DIRECT method.
The next code very simple:
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({direct:true,
host: 'smtp.yandex.ru',
port: 465,
auth: {
user: 'login#yandex.ru',
pass: 'password' },
secure: true
});
var mailOptions = {
from: 'nworksheet#gmail.com',
to: 'sky-bell#mail.ru',
subject: 'Hello',
text: 'This is auto mail sending'
};
transporter.sendMail(mailOptions, function (error, info) {
if(error) {
return console.log(error);
}
console.log("Message sent "+info.response)
});
But I have the next error:
{ Error: Sending failed
at QueryReqWrap.asyncCallback [as callback] (dns.js:65:16)
at QueryReqWrap.onresolve [as oncomplete] (dns.js:216:10)
errors:
[ { Error: queryMx ENOTFOUND mail.ru
at errnoException (dns.js:28:10)
at QueryReqWrap.onresolve [as oncomplete] (dns.js:216:19)
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'queryMx',
hostname: 'mail.ru' } ] }
What does it mean? How to fix it? Node not see 'mail.ru'? Why?
The best way to achieve this is
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'Yandex',
auth: {
user: 'your_yandex_email',
pass: 'your_password_for_email' },
});
var mailOptions = {
from: 'your_yandex_email',
to: 'sky-bell#mail.ru',
subject: 'Hello',
text: 'This is auto mail sending'
};
transporter.sendMail(mailOptions, function (error, info) {
if(error) {
return console.log(error);
}
console.log("Message sent "+info.response)
});
Whenever you specify the service command, it automatically sets the port and secures the email.
Also remember to put and fetch the credentials from a config file.
Looks like it can't find an MX record for mail.ru. It seems to exist however. https://toolbox.googleapps.com/apps/dig/#MX/mail.ru
Does this machine have DNS set up properly? Can you dig it from that machine?

Resources