Используя nodejs
и nodemailer
на моем localhost
я могу отправить почту, но обратный вызов никогда не вызывается до истечения времени ожидания. Информация об отладке не предоставлена (без трассировки стека), также nodemailer
игнорирует настройку socketTimeout
config. Таймаут должен составлять 5000 мс, но зависает слишком долго.
Примечание. Проблемы, не связанные с ошибками, закрыты по умолчанию. Если у вас есть вопросы о поддержке, перейдите в раздел Stack Overflow: https://stackoverflow.com/search?q=nodemailer
[ ] Нет
Примечание. Если вы не можете войти в Gmail, значит, Gmail блокирует вас. По умолчанию эти вопросы закрыты.
[x] Нет
Примечание. Скорее всего, вы пытаетесь подключиться к серверу с самоподписанным сертификатом или сертификатом с истекшим сроком действия, или сервер поддерживает только старые шифры, или вы используете антивирус, который перехватывает ваше интернет-соединение. Такие вопросы закрыты по умолчанию.
Примечание. Скорее всего, вы отключены от сервера брандмауэром. Такие вопросы закрыты по умолчанию.
Примечание. Вы используете слишком старую версию Node.js, обновите ее. Такие вопросы закрыты по умолчанию.
4.6.0
...
node -v
чтобы увидеть ее, например v5.5.0)v8.9.4
...
Windows 10
...
const transporter = nodemailer.createTransport({
service: 'gmail',
host: 'smtp.gmail.com',
port: 465,
secure: true,
socketTimeout: 5000,
logger: true,
auth: {
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASSWORD
}
});
...
transporter.verify(function (error, success) {
if (error) {
console.log(error);
} else {
console.log('Server is ready to take our messages');
}
});
const mailOptions = {
to: user.email,
from: process.env.MAIL_USER,
subject: 'Account Activation',
text: 'hello'
};
transporter.sendMail(mailOptions).then((sentMessage) => {
console.log(sentMessage);
}, (error) => {
console.log(error);
});
...
Спасибо!
Не могу подтвердить. Вот что я вижу при запуске примера сценария:
[2018-03-17 10:03:28] DEBUG Creating transport: nodemailer (4.6.3; +https://nodemailer.com/; SMTP/4.6.3[client:4.6.3])
[2018-03-17 10:03:28] DEBUG Sending mail using SMTP/4.6.3[client:4.6.3]
[2018-03-17 10:03:29] INFO [eH7FPchPnoc] Secure connection established to 173.194.222.108:465
[2018-03-17 10:03:29] INFO [syLy5C7WFlc] Secure connection established to 173.194.222.108:465
[2018-03-17 10:03:29] DEBUG [eH7FPchPnoc] SMTP handshake finished
[2018-03-17 10:03:29] DEBUG [syLy5C7WFlc] SMTP handshake finished
[2018-03-17 10:03:29] INFO [eH7FPchPnoc] User "[email protected]" authenticated
Server is ready to take our messages
[2018-03-17 10:03:29] INFO [syLy5C7WFlc] User "[email protected]" authenticated
[2018-03-17 10:03:29] INFO Sending message <[email protected]> to <[email protected]>
[2018-03-17 10:03:29] DEBUG [eH7FPchPnoc] Closing connection to the server using "end"
[2018-03-17 10:03:29] INFO [eH7FPchPnoc] Connection closed
[2018-03-17 10:03:30] INFO [syLy5C7WFlc] <276 bytes encoded mime message (source size 273 bytes)>
[2018-03-17 10:03:31] DEBUG [syLy5C7WFlc] Closing connection to the server using "end"
{ accepted: [ '[email protected]' ],
rejected: [],
envelopeTime: 815,
messageTime: 1127,
messageSize: 276,
response: '250 2.0.0 OK 1521281011 t68-v6sm91451lfe.59 - gsmtp',
envelope: { from: '[email protected]', to: [ '[email protected]' ] },
messageId: '<[email protected]>' }
[2018-03-17 10:03:31] INFO [syLy5C7WFlc] Connection closed
Пожалуйста, повторно откройте заявку, если вы найдете дополнительную информацию о причинах сбоя сценария на вашей стороне.
Спасибо @andris9 , попробую копнуть глубже ...
У меня такая же проблема при тестировании с помощью Jest, даже если письмо отправлено правильно:
const mailConfig = {
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'user',
pass: 'pass',
},
},
test('production', (done) => {
const transporter = nodemailer.createTransport(mailConfig);
mailOptions.subject = 'Test production e-mail ✔';
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log(error);
throw new Error('failed');
}
expect(info.accepted.length).toBe(1);
expect(info.accepted[0]).toEqual(recipient);
expect(info.response).toEqual('250 Great success');
expect(info.envelope.from).toEqual('[email protected]');
// console.log(info);
done();
});
}, 10000);
В итоге получаю Timeout - Async callback was not invoked within the 10000ms timeout specified by jest.setTimeout.
. Это не тот случай, когда я тестирую его с помощью MailGun.
Журналы:
console.log node_modules/nodemailer/lib/shared/index.js:369
[2018-06-11 16:22:55] INFO [OAz0YIaTUc] <658 bytes encoded mime message (source size 655 bytes)>
console.log node_modules/nodemailer/lib/shared/index.js:369
[2018-06-11 16:22:56] DEBUG [OAz0YIaTUc] S: 250 2.0.0 OK 1528734176 132-v6sm16324480wmr.33 - gsmtp
console.log node_modules/nodemailer/lib/shared/index.js:369
[2018-06-11 16:22:56] DEBUG [OAz0YIaTUc] Closing connection to the server using "end"
console.log node_modules/nodemailer/lib/shared/index.js:369
[2018-06-11 16:22:56] ERROR Callback error for <[email protected]>: expect(received).toEqual(expected)
Привет, пожалуйста, помогите мне, у меня проблема с nodemailer.
подключить ETIMEDOUT 108.177.97.109:465
Ошибка: подключить ETIMEDOUT 108.177.97.109:465
в Object._errnoException (util.js: 992: 11)
в _exceptionWithHostPort (util.js: 1014: 20)
в TCPConnectWrap.afterConnect [как при завершении] (net.js: 1186: 14)
Та же проблема, есть какое-то решение?
У меня странная ошибка, из-за которой transporter.sendmail не работает, несмотря на включение менее безопасного подключения приложений в Gmail. Он работал раньше, но внезапно перестал работать, несмотря на то, что ничего не менял. Я бы хотел помочь прямо сейчас
@okabamac Та же проблема, у кого-нибудь есть работа? Работает, вдруг нет.
Запрос не завершится через 2 минуты.
{ Error: Connection timeout
at SMTPConnection._formatError (/sites/project/production/active/web/backend/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
at SMTPConnection._onError (/sites/project/production/active/web/backend/node_modules/nodemailer/lib/smtp-connection/index.js:579:20)
at Timeout._connectionTimeout.setTimeout (/sites/project/production/active/web/backend/node_modules/nodemailer/lib/smtp-connection/index.js:261:18)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5) code: 'ETIMEDOUT', command: 'CONN' }
Получение такой же проблемы! Не изменилось ни капли. Вдруг перестал работать. Пожалуйста помоги!
@RohitGalgali Привет, спасибо за поддержку в этой теме, лол.
Я провел обширное исследование этой проблемы для своего случая, и она на стороне Google, и они не говорят, почему это может быть что-то вроде того, как ваши электронные письма каким-то образом обнаруживаются как спам. Я переключился на mailgun и использовал этот пакет: nodemailer-mailgun-transport в качестве быстрой альтернативы. Их служба бесплатна до определенного количества электронных писем.
Честно говоря, у меня раньше была эта проблема с сервером laravel и postfix, это всегда сторона Google, и я собираюсь избегать использования Gmail в качестве SMTP.
Самый полезный комментарий
Та же проблема, есть какое-то решение?