Tento usar o nodemailer para implementar um formulário de contato usando NodeJS, mas funciona apenas no local, não funciona em um servidor remoto ...
Minha mensagem de erro:
[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' }
Meu controlador:
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
fonte
fonte
Respostas:
Resolvi isso acessando o seguinte url (enquanto conectado ao google com a conta da qual desejo enviar e-mails):
https://www.google.com/settings/security/lesssecureapps
Lá eu habilitei aplicativos menos seguros.
Feito
fonte
Consulte o guia oficial do nodemailer para conectar o Gmail:
https://community.nodemailer.com/using-gmail/
-
Funciona para mim depois de fazer isso:
fonte
Solução fácil:
Passo 1:
vá aqui https://myaccount.google.com/lesssecureapps e habilite para aplicativos menos seguros. Se isso não funcionar, então
Passo 2
vá aqui https://accounts.google.com/DisplayUnlockCaptcha e ative / continue e tente.
para mim, a etapa 1 sozinha não funcionou, então tive que ir para a etapa 2.
Também tentei remover o pacote nodemailer-smtp-transport e, para minha surpresa, funcionou. mas quando reiniciei meu sistema deu-me o mesmo erro, então eu tive que ir e ligar o aplicativo menos seguro (eu desativei depois do meu trabalho).
em seguida, para me divertir, eu apenas tentei com off (app menos seguro) e vola funcionou novamente!
fonte
Você deve usar um token XOAuth2 para se conectar ao Gmail. Não se preocupe, o Nodemailer já sabe disso:
Você precisará acessar o Google Cloud Console para registrar seu aplicativo. Em seguida, você precisa recuperar tokens de acesso para as contas que deseja usar. Você pode usar passaportes para isso.
Veja como fica no meu código:
fonte
passport.authorize
é semelhante a,passport.authenticate
exceto que não tenta atualizar a sessão atual. Você precisa passarcallbackURL
porque, após o handshake do OAuth, o Google precisa saber para onde redirecionar o usuário para que o handshake seja concluído.Eu tive o mesmo problema. Permitir "aplicativos menos seguros" nas configurações de segurança do Google funcionou!
fonte
Funcionou bem:
1- instale o nodemailer , pacote se não estiver instalado (digite cmd):
npm install nodemailer
2- vá para https://myaccount.google.com/lesssecureapps e ative Permitir aplicativos menos seguros .
3- escrever o código:
4- divirta-se!
fonte
O mesmo problema aconteceu comigo também. Testei meu sistema no localhost e depois implantei no servidor (que está localizado em um país diferente) e, ao tentar o sistema no servidor de produção, vi este erro. Tentei estes para consertar:
fonte
Para mim está funcionando dessa forma, usando porta e segurança (tive problemas para enviar e-mails do gmail usando PHP sem configurações de segurança)
Espero ajudar alguém.
todas as configurações estão listadas aqui (incluindo exemplos)
fonte
Nenhuma das soluções acima funcionou para mim. Usei o código que existe na documentação do NodeMailer . Se parece com isso:
fonte
Tente desativar captchas em sua conta do gmail; provavelmente sendo disparado com base no endereço IP do solicitante. Veja: Como usar o GMail como um servidor SMTP gratuito e superar o captcha
fonte
Descobri que o método mais simples, descrito neste artigo mencionado na resposta de Greg T , era criar uma senha de app que fica disponível após a ativação do 2FA para a conta.
myaccount.google.com> Login e segurança> Login no Google> Senhas de app
Isso lhe dá uma senha alternativa para a conta, então você apenas configura o nodemailer como um serviço SMTP normal.
Embora o Google recomende Oauth2 como a melhor opção, esse método é fácil e não foi mencionado nesta pergunta ainda.
Dica extra: também descobri que você pode adicionar o nome do seu aplicativo ao endereço "de" e o GMail não o substitui apenas pelo e-mail da conta, como faria se você tentar usar outro endereço. ie.
fonte
Ele é resolvido usando o
nodemailer-smtp-transport
módulo dentro de createTransport.fonte
Se você usar Express,
express-mailer
envolvenodemailer
muito bem e é muito fácil de usar:fonte
todo o seu código está bom, apenas o que resta é apenas acessar o link https://myaccount.google.com/security
e mantenha a rolagem para baixo e você encontrará Permitir aplicativos menos seguros: LIGADO e mantenha LIGADO, você não encontrará nenhum erro.
fonte
Basta adicionar "host" e ele funcionará.
Em seguida, habilite "lesssecureapps" clicando no link abaixo
https://myaccount.google.com/lesssecureapps
fonte
Por algum motivo, apenas permitir uma configuração de aplicativo menos segura não funcionou para mim, nem mesmo a coisa do captcha. Tive que realizar outra etapa que é habilitar a configuração IMAP:
Na página de ajuda do google: https://support.google.com/mail/answer/7126229?p=WebLoginRequired&visit_id=1-636691283281086184-1917832285&rd=3#cantsignin
fonte
Você deve adicionar o tipo secureConnection em seu código.
fonte
Eu estava usando uma versão antiga do nodemailer 0.4.1 e tive esse problema. Eu atualizei para 0.5.15 e tudo está funcionando bem agora.
Editou package.json para refletir as mudanças então
fonte
Apenas atenda a estes: 1- A autenticação do Gmail para permitir e-mails de baixo nível não aceita antes de reiniciar o navegador do cliente 2- Se você deseja enviar e-mail com o nodemailer e não gostaria de usar o protocolo xouath2, você deve escrever como secureconnection: false como abaixo
fonte
primeiro instale o nodemailer
importar para o arquivo js
trabalhando em meu aplicativo
fonte