Я пытаюсь использовать nodemailer для реализации контактной формы с помощью NodeJS, но он работает только на локальном компьютере, он не работает на удаленном сервере ...
Мое сообщение об ошибке:
[website.fr-11 (out) 2013-11-09T15:40:26] { [AuthError: Invalid login - 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvlX
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 V-dFQLgb7aRCYApxlOBuha5ESrQEbRXK0iVtOgBoYeARpm3cLZuUS_86kK7yPis7in3dGC
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 N1sqhr3D2IYxHAN3m7QLJGukwPSZVGyhz4nHUXv_ldo9QfqRydPhSvFp9lnev3YQryM5TX
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 XL1LZuJL7zCT5dywMVQyWqqg9_TCwbLonJnpezfBLvZwUyersknTP7L-VAAL6rhddMmp_r
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 A_5pRpA> Please log in via your web browser and then try again.
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787
[website.fr-11 (out) 2013-11-09T15:40:26] 534 5.7.14 54 fr4sm15630311wib.0 - gsmtp]
[website.fr-11 (out) 2013-11-09T15:40:26] name: 'AuthError',
[website.fr-11 (out) 2013-11-09T15:40:26] data: '534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvlX\r\n534-5.7.14 V-dFQLgb7aRCYApxlOBuha5ESrQEbRXK0iVtOgBoYeARpm3cLZuUS_86kK7yPis7in3dGC\r\n534-5.7.14 N1sqhr3D2IYxHAN3m7QLJGukwPSZVGyhz4nHUXv_ldo9QfqRydPhSvFp9lnev3YQryM5TX\r\n534-5.7.14 XL1LZuJL7zCT5dywMVQyWqqg9_TCwbLonJnpezfBLvZwUyersknTP7L-VAAL6rhddMmp_r\r\n534-5.7.14 A_5pRpA> Please log in via your web browser and then try again.\r\n534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787\r\n534 5.7.14 54 fr4sm15630311wib.0 - gsmtp',
[website.fr-11 (out) 2013-11-09T15:40:26] stage: 'auth' }
Мой контроллер:
exports.contact = function(req, res){
var name = req.body.name;
var from = req.body.from;
var message = req.body.message;
var to = '*******@gmail.com';
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "******@gmail.com",
pass: "*****"
}
});
var mailOptions = {
from: from,
to: to,
subject: name+' | new message !',
text: message
}
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
res.redirect('/');
}
});
}
javascript
node.js
nodemailer
tonymx227
источник
источник
Ответы:
Я решил это, перейдя по следующему URL-адресу (при подключении к Google с учетной записью, с которой я хочу отправлять почту):
https://www.google.com/settings/security/lesssecureapps
Там я включил менее безопасные приложения.
Готово
источник
См. Официальное руководство nodemailer по подключению Gmail:
https://community.nodemailer.com/using-gmail/
-
У меня это работает после этого:
источник
Простое решение:
Шаг 1:
перейдите сюда https://myaccount.google.com/lesssecureapps и включите менее безопасные приложения. Если это не сработает, тогда
Шаг 2
перейдите сюда https://accounts.google.com/DisplayUnlockCaptcha и включите / продолжите, а затем попробуйте.
для меня только шаг 1 не сработал, поэтому мне пришлось перейти к шагу 2.
Я также попытался удалить пакет nodemailer-smtp-transport, и, к моему удивлению, он работает. но затем, когда я перезапустил свою систему, у меня возникла такая же ошибка, поэтому мне пришлось пойти и включить менее безопасное приложение (я отключил его после работы).
затем для удовольствия я просто попробовал выключить (менее безопасное приложение), и он снова заработал!
источник
Вы должны использовать токен XOAuth2 для подключения к Gmail. Не беспокойтесь, Nodemailer уже знает об этом:
Вам нужно будет перейти в Google Cloud Console, чтобы зарегистрировать приложение. Затем вам нужно получить токены доступа для учетных записей, которые вы хотите использовать. Вы можете использовать для этого паспортные данные .
Вот как это выглядит в моем коде:
источник
passport.authorize
аналогичен, заpassport.authenticate
исключением того, что не пытается обновить текущий сеанс. Вам нужно пройти,callbackURL
потому что после рукопожатия OAuth Google должен знать, куда перенаправить пользователя, чтобы рукопожатие было завершено.У меня такая же проблема. Разрешение "менее безопасных приложений" в моих настройках безопасности Google заставило его работать!
источник
Работали нормально:
1- установить nodemailer , если пакет не установлен (введите cmd):
npm install nodemailer
2- перейдите на https://myaccount.google.com/lesssecureapps и включите Разрешить менее безопасные приложения .
3- написать код:
4- наслаждайтесь!
источник
Та же проблема случилась и со мной. Я протестировал свою систему на локальном хосте, затем развернул ее на сервере (который находится в другой стране), а затем, когда я попробовал систему на производственном сервере, я увидел эту ошибку. Я попробовал это исправить:
источник
Для меня работает так, используя порт и безопасность (у меня были проблемы с отправкой писем из Gmail с использованием PHP без настроек безопасности)
Надеюсь кому то поможет.
здесь перечислены все конфигурации (включая примеры)
источник
Ни одно из вышеперечисленных решений не помогло мне. Я использовал код, который есть в документации NodeMailer . Выглядит это так:
источник
Попробуйте отключить капчи в своей учетной записи Gmail; вероятно, запускается на основе IP-адреса запрашивающей стороны. Смотрите: Как использовать GMail в качестве бесплатного SMTP-сервера и преодолеть капчу
источник
Я обнаружил, что самый простой метод, описанный в этой статье, упомянутой в ответе Грега Т , - это создать пароль приложения, который будет доступен после включения 2FA для учетной записи.
myaccount.google.com> Вход и безопасность> Вход в Google> Пароли приложений
Это дает вам альтернативный пароль для учетной записи, после чего вы просто настраиваете nodemailer как обычную службу SMTP.
Хотя Google рекомендует Oauth2 как лучший вариант, этот метод прост и еще не упоминался в этом вопросе.
Дополнительный совет: я также обнаружил, что вы можете добавить свое имя приложения к адресу «от», и GMail не заменяет его только адресом электронной почты учетной записи, как это происходит, если вы пытаетесь использовать другой адрес. т.е.
источник
Это решается с помощью
nodemailer-smtp-transport
модуля внутри createTransport.источник
Если вы используете Express,
express-mailer
обертыванияnodemailer
очень красиво и очень проста в использовании:источник
весь ваш код в порядке, осталось только перейти по ссылке https://myaccount.google.com/security
и продолжайте прокручивать вниз, и вы найдете Разрешить менее безопасные приложения: ВКЛЮЧИТЬ и удерживайте ВКЛ, вы не найдете ошибок.
источник
Просто добавь «хост», все заработает.
Затем включите «менее безопасные приложения», щелкнув ссылку ниже
https://myaccount.google.com/lesssecureapps
источник
По какой-то причине просто разрешить менее безопасную конфигурацию приложения у меня не сработало, даже с капчей. Мне пришлось сделать еще один шаг, который включает конфигурацию IMAP:
Со страницы справки Google: https://support.google.com/mail/answer/7126229?p=WebLoginRequired&visit_id=1-636691283281086184-1917832285&rd=3#cantsignin
источник
Вы должны добавить в свой код тип secureConnection.
источник
Я использовал старую версию nodemailer 0.4.1 и столкнулся с этой проблемой. Я обновился до 0.5.15, и теперь все работает нормально.
Отредактировал package.json, чтобы отразить изменения, затем
источник
Просто обратите внимание на них: 1 - Аутентификация Gmail для разрешения низкоуровневых электронных писем не принимает перед перезапуском клиентского браузера 2 - Если вы хотите отправлять электронную почту с помощью nodemailer, и вы не хотите использовать протокол xouath2, вы должны написать как secureconnection: false, как показано ниже
источник
сначала установите nodemailer
импортировать в файл js
работаю в моем приложении
источник