I'm trying to connect nodemailer to send mails to users after registration. So I turned on IMAP in google settings, than I created app to generate password, and it all works with this serivs. But when I try to connect mail service, I have this error
Error: connect ECONNREFUSED 127.0.0.1:587 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) { errno: -111, code: 'ESOCKET', syscall: 'connect', address: '127.0.0.1', port: 587, command: 'CONN' }
mail-service:
import nodemailer from "nodemailer";
class MailService {
constructor() {
this.transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT,
secure: false,
auth: {
user: process.env.SMTP_USER,
pass: process.env.SMTP_PASSWORD,
},
});
}
async sendActicvationMail(to, link) {
await this.transporter.sendMail({
from: process.env.SMTP_USER,
to,
subject: "Mail activation " + process.env.API_URl,
text: "",
html: `
<div>
<h1>For activation click on link</h1>
<a href="${link}">Click here !</a>
</div>
`,
});
}
}
export default new MailService();
Where I might made mistake ? Thank you !
Daniil
This code is working for me. But I configured "Sign in using app passwords" https://support.google.com/mail/answer/185833?hl=en-GB, because nodemailer needs an access connect to gmail. Next I changed process.env.SMTP_PASSWORD from gmail mail's password to "app's password for your device" - it looks like xxxx-xxxx-xxxx-xxxx code.
import nodemailer from "nodemailer";
import dotenv from 'dotenv';
class MailService {
constructor() {
dotenv.config();
this.transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT,
service: process.env.SMTP_SERVICE,
secure: true,
auth: {
user: process.env.SMTP_USER,
pass: process.env.SMTP_PASSWORD,
},
});
}
async sendActivationMail(to, link) {
await this.transporter.sendMail({
from: process.env.SMTP_USER,
to,
subject: "Activation account" + process.env.API_URL,
text: "",
html: `
<div>
<h1>Activate your account, please</h1>
<a href="${link}">${link} </a>
</div>
`
});
}
};
export default new MailService();