Nodemailer getaddrinfo ENOTFOUND Error - node.js

Looking for some insight into this error I'm getting.
on smtpTransport.sendmail(func(err, info){})
The err variable returns this:
Error: getaddrinfo ENOTFOUND smtp.gmail.com smtp.gmail.com:465
at errnoException (dns.js:50:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
and my code is:
var smtpTransport = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: 'xxx#gmail.com',
pass: 'xxx'
}
});
var mailOptions = {
to: user.email,
from: 'xxx#gmail.com',
subject: 'Node.js Password Reset',
text: ' '
};
smtpTransport.sendMail(mailOptions, function(err) {
});
}
], function(err) {
});

Try stop using gmail service and set it up like any other smtpTransport like the following.
var smtpTransport = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true, // use SSL
auth: {
user: 'user#gmail.com',
pass: 'pass'
}
});
If This does not work, your server might not be able to lookup smtp.gmail.com due to a firewall or something, to check type the following.
nslookup smtp.gmail.com

I also faced the same error with aws ses service. In my case it was wrong configuration credentials.
AWS_SES_REGION="us-east-2"
AWS_SES_ACCESS_KEY_ID=""
AWS_SES_SECRET_ACCESS_KEY=""
I updated the AWS_SES_REGION then it worked for me

Related

How to send Node js mail from Nodemailer i gor error in nodemailer

How can i send mail from node js with the use of my domail mail like as : noreply#example.com
The connection setting was below using nodemailer
const transporter = nodemailer.createTransport({
host: 'https://example.com',
port: 465, // Port
secure: true, // this is true as port is 465
auth: {
user: 'noreply#example.com',
pass: 'mypassword'
}
});
If i send mail there is an error like below
Error: getaddrinfo ENOTFOUND https://example.com
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26) {
errno: -3008,
code: 'EDNS',
syscall: 'getaddrinfo',
hostname: 'https://lvkart.com',
command: 'CONN'
}
I had this issue when I accedentally added a trailing space to the hostname. The problem seems to be the failing DNS lookup.
In your example: The https:// part is not part of the hostname. In fact, you use SMTP protocol, not https.
try
const transporter = nodemailer.createTransport({
host: 'example.com', // Whatever your true hostname is. Could also be smtp.example.com or similar.
port: 465, // Port
secure: true, // this is true as port is 465
auth: {
user: 'noreply#example.com',
pass: 'mypassword'
}
});
I think the problem might come from your SMTP.
check your configuration correct or wrong by using (outlook or google mail).

I'm using Nodemailer (Node js) to send Email via Gmail but i'm getting error

I want to send email via Gmail or other email provider like office 365 using Nodemailer as my module Node.js.
I wanna ask also if there's a proxy or firewall setting to disable so that I can send email using gmail or office 365.
Or maybe there is something wrong with my code ?
const nodemailer = require("nodemailer");
const smtpTransport = require('nodemailer-smtp-transport');
function sendEmail(to, subject, html){
nodemailer.createTestAccount((err, account) => {
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'philip#gmail.com',
pass: 'sercretpass'
}
});
let mailOptions = {
from: '"Admin" ',
to: to,
subject: subject,
html: html
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('Error', error);
}
else{
console.log('Success', info);
}
});
});
}
module.exports.sendEmail = sendEmail;
MY ERROR :
Error { Error: connect ETIMEDOUT 74.125.203.108:465
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1121:14)
errno: 'ETIMEDOUT',
code: 'ECONNECTION',
syscall: 'connect',
address: '74.125.203.108',
port: 465,
command: 'CONN' }
Are you able to telnet to smtp.gmail.com from the machine on port 465 ?
Also try with Port 587, with 587, you should see some other error as it works on STARTTLS.
TESTED WORKING ON GMAIL 2022 March
STEP 1- Enable the "Less Secure App Access" from Security Page of the Google Account
. Google says It's no longer supported but turn On
the feature anyway.
STEP 2-Turn Off the google CAPTCHA.
STTEP 3- Configuring Port And HOST
**Do not use google as the host.Refer the following.
host: "smtp.gmail.com"
if port 587 is not working, try port 465. Make sure to make secure:true for port 465
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
auth: {
user: 'youremail#gmail.com',
pass: 'password',
},
// enable below only if u are running on local host
tls: { rejectUnauthorized: true }
});
I always used nodemailer for sending emails, suddenly I started having the above error. So I thought what was new on the computer and found that the antivirus was causing the problem. So disabling the antivirus and windows firewall is a good start to solve the problem.

nodemailer got EACCES while using SMTP

I'm trying to use nodemailer send the email. Below is the sample code.
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: '10.88.88.88',
port: 25,
secureConnection: false,
auth: {
user: 'user',
pass: 'pwd',
}
});
let mailOptions = {
from: 'sender#test.com', // sender address
to: 'receiver#test.com', // list of receivers
subject: 'Hello', // Subject line
html: '<b>Hello world?</b>' // html body
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
});
However I got the error below. It seems I could not access the server. The server is using smtp relay of IIS. What is the exact user/pass in auth here? The server window user account who has the right to access the smtp service? If I change user/pass to mailaddress/password, I got the same error info. If I remove auth, I still got the same error info. Or it is proxy issue?
{ Error: connect EACCES 10.88.88.88:25
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
errno: 'EACCES',
code: 'ECONNECTION',
syscall: 'connect',
address: '10.88.88.88,
port: 25,
command: 'CONN' }
The servers infra is like below:
node server <--> SMTP Relay IIS (10.88.88.88) <--> Mailserver
Please check using port 587 instead of 25.

Issues configuring Nodemailer 4.6.3 with Exchange 2010 (Node.js)

My issue is with properly configuring Nodemailer with an Exchange 2010 email server on a Node.js application.
Because I'm not getting an authentication issue, which I do when using well-known services like Outlook365, I'm assuming the problem is with the host and/or security and port settings - I don't think I connect in the first place.
My config below -
let transporter = nodemailer.createTransport({
host: 'https://email.<COMPANYNAME>.com/owa',
port: '587',
secure: false,
auth: {
user: <USERNAME>,
pass: <PASSWORD>
},
tls: {
rejectUnauthorized: false
}
});
It errors here on my Node app -
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('Send error: ', error);
res.sendStatus(500);
} else {
console.log('Email sent!');
res.sendStatus(200);
}
});
Here is the error from AWS EC2 logs -
getaddrinfo ENOTFOUND https://email.<COMPANYNAME>.com/owa https://email.<COMPANYNAME>.com/owa:587
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
code: 'ECONNECTION',
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'https://email.<COMPANYNAME>.com/owa',
host: 'https://email.<COMPANYNAME>.com/owa',
port: '587',
command: 'CONN'
Nodemailer docs specify that the host "is the hostname or IP address to connect to (defaults to ‘localhost’)"
When I try more the conventional mail.COMPANYNAME.com my requests time out. Using the address clearly hits my server and returns errors in the verification/ sending steps that I've specified.
Again, the issue seems to be with my transporter configuration with Exchange 2010. Any help is greatly appreciated!
I was searching for this question too. But I found the solution myself.
const transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
secure: false,
auth: {
user: 'USER_NAME',
pass: 'PASSWORD'
}
});
I used this configuration for sending email using node mailer from exchange or Office 365 server.

Setting up nodemailer for SMTP

I used this setup to send a mail:
import NodeMailer from 'nodemailer'
import SmtpTransport from 'nodemailer-smtp-transport'
const transporter = NodeMailer.createTransport(SmtpTransport({
host: 'smtp.1blu.de',
port: 25,
debug: true,
auth: {
user: '...',
pass: '...'
}
}))
transporter.sendMail(options, (error, data) => ...)
But I get this error:
Error: connect ECONNREFUSED 127.0.0.1:25
at Object.exports._errnoException (util.js:749:11)
at exports._exceptionWithHostPort (util.js:772:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1009:14)
Seems like it ignores the host, but why?
I had the very same problem as you and I am using 1blu as well.
The issue is related to the TLS library of Node. The following configuration did the job for me.
Here:
var smtpTransport = nodemailer.createTransport("SMTP",{
host: 'smtp.1blu.de',
secureConnection: true,
port: 465,
auth: {
user: '...',
pass: '...'
},
tls:{
secureProtocol: "TLSv1_method"
}
});
console.log('SMTP Configured');

Resources