I’m trying to set up Nodemailer to send emails through the mail.com SMTP server, but I’m encountering the following error:
Error: AC650000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:c:wsdepsopensslopensslsslrecordssl3_record.c:355:
{
library: 'SSL routines',
reason: 'wrong version number',
code: 'ESOCKET',
command: 'CONN'
}
Here is my current Nodemailer configuration:
import nodemailer from 'nodemailer';
import dotenv from 'dotenv';
import path from 'path';
// Load environment variables from .env file
dotenv.config({ path: path.resolve('.env') });
console.log('EMAIL_USERNAME:', process.env.EMAIL_USERNAME);
console.log('EMAIL_PASSWORD:', process.env.EMAIL_PASSWORD);
// Create a Nodemailer transporter using SMTP with mail.com
const transporter = nodemailer.createTransport({
host: 'smtp.mail.com',
port: 587, // Use 587 for STARTTLS
secure: false, // Use false for STARTTLS
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD,
},
tls: {
rejectUnauthorized: false, // Allow self-signed certificates if necessary
},
});
export const requestPasswordReset = async (req, res) => {
const { email } = req.body;
try {
const user = await User.findOne({ email });
if (!user) {
return res.status(400).json({ message: 'Utilisateur non trouvé' });
}
const resetToken = crypto.randomBytes(32).toString('hex');
const hashedToken = crypto.createHash('sha256').update(resetToken).digest('hex');
user.resetPasswordToken = hashedToken;
user.resetPasswordExpires = Date.now() + 3600000; // 1 hour
await user.save();
const resetUrl = `http://localhost:3000/reset/${resetToken}`;
const mailOptions = {
to: user.email,
from: process.env.EMAIL_FROM,
subject: 'Réinitialisation du mot de passe',
text: `Vous recevez cet email parce que vous (ou quelqu'un d'autre) avez demandé la réinitialisation du mot de passe de votre compte.nn
Cliquez sur le lien suivant ou copiez-le dans votre navigateur pour compléter le processus :nn
${resetUrl}nn
Si vous n'avez pas demandé cette réinitialisation, veuillez ignorer cet email et votre mot de passe restera inchangé.n`,
};
await transporter.sendMail(mailOptions);
res.status(200).json({ message: 'Email de réinitialisation envoyé' });
} catch (error) {
console.error('Erreur lors de la demande de réinitialisation de mot de passe :', error);
res.status(500).json({ message: 'Erreur lors de la demande de réinitialisation de mot de passe' });
}
};
I’ve verified that my environment variables are set correctly.
I’ve also tried setting secure: true with port 465, but I still encounter the same issue.
What I’ve Tried:
Verified that the email and password are correct.
Ensured the .env file is correctly loaded and variables are accessible.
Tested different combinations of secure and port.
Environment:
Node.js version: 20.15.0
Nodemailer version: 6.9.14
Operating System: Windows 11
What could be causing this error, and how can I resolve it?
Thank you for your help!
1