Saya mencoba menggunakan nodemailer untuk mengimplementasikan formulir kontak menggunakan NodeJS tetapi hanya berfungsi di lokal dan tidak berfungsi di server jarak jauh ...
Pesan kesalahan saya:
[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' }
Pengontrol saya:
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
sumber
sumber
Jawaban:
Saya menyelesaikan ini dengan membuka url berikut (saat terhubung ke google dengan akun tempat saya ingin mengirim email):
https://www.google.com/settings/security/lesssecureapps
Di sana saya mengaktifkan aplikasi yang kurang aman.
Selesai
sumber
Lihat panduan resmi nodemailer untuk menghubungkan Gmail:
https://community.nodemailer.com/using-gmail/
-
Ini bekerja untuk saya setelah melakukan ini:
sumber
Solusi Mudah:
Langkah 1:
buka di sini https://myaccount.google.com/lesssecureapps dan aktifkan untuk aplikasi yang kurang aman. Jika ini tidak berhasil maka
Langkah 2
buka di sini https://accounts.google.com/DisplayUnlockCaptcha dan aktifkan / lanjutkan lalu coba.
bagi saya langkah 1 saja tidak berhasil jadi saya harus pergi ke langkah 2.
saya juga mencoba menghapus paket nodemailer-smtp-transport dan yang mengejutkan saya itu berhasil. tetapi kemudian ketika saya me-restart sistem saya, itu memberi saya kesalahan yang sama, jadi saya harus pergi dan mengaktifkan aplikasi yang kurang aman (saya menonaktifkannya setelah bekerja).
kemudian untuk bersenang-senang saya hanya mencobanya dengan off (aplikasi kurang aman) dan vola itu bekerja lagi!
sumber
Anda harus menggunakan token XOAuth2 untuk terhubung ke Gmail. Jangan khawatir, Nodemailer sudah tahu tentang itu:
Anda harus membuka Google Cloud Console untuk mendaftarkan aplikasi Anda. Kemudian Anda perlu mengambil token akses untuk akun yang ingin Anda gunakan. Anda dapat menggunakan paspor untuk itu.
Begini tampilannya di kode saya:
sumber
passport.authorize
mirip denganpassport.authenticate
kecuali bahwa ia tidak mencoba memperbarui sesi saat ini. Anda harus luluscallbackURL
karena setelah jabat tangan OAuth, Google perlu tahu ke mana harus mengarahkan pengguna sehingga jabat tangan selesai.Saya memiliki masalah yang sama. Mengizinkan "aplikasi yang kurang aman" di setelan keamanan Google saya berhasil!
sumber
Bekerja dengan baik:
1- instal nodemailer , paket jika tidak diinstal (ketik cmd):
npm install nodemailer
2- Buka https://myaccount.google.com/lesssecureapps dan aktifkan Izinkan aplikasi yang kurang aman .
3- tulis kode:
4- nikmati!
sumber
Masalah yang sama terjadi pada saya juga. Saya menguji sistem saya di localhost kemudian disebarkan ke server (yang terletak di negara yang berbeda) kemudian ketika saya mencoba sistem di server produksi saya melihat kesalahan ini. Saya mencoba ini untuk memperbaikinya:
sumber
Bagi saya bekerja dengan cara ini, menggunakan port dan keamanan (saya memiliki masalah untuk mengirim email dari gmail menggunakan PHP tanpa pengaturan keamanan)
Saya berharap akan membantu seseorang.
semua konfigurasi tercantum di sini (termasuk contoh)
sumber
Tidak ada solusi di atas yang berhasil untuk saya. Saya menggunakan kode yang ada dalam dokumentasi NodeMailer . Ini terlihat seperti ini:
sumber
Coba nonaktifkan captcha di akun gmail Anda; mungkin dipicu berdasarkan alamat IP pemohon. Lihat: Cara menggunakan GMail sebagai server SMTP gratis dan mengatasi captcha
sumber
Saya menemukan metode paling sederhana, yang dijelaskan dalam artikel ini yang disebutkan dalam jawaban Greg T , adalah membuat Sandi Aplikasi yang tersedia setelah mengaktifkan 2FA untuk akun tersebut.
myaccount.google.com> Masuk & keamanan> Masuk ke Google> Sandi Aplikasi
Ini memberi Anda kata sandi alternatif untuk akun tersebut, kemudian Anda cukup mengkonfigurasi nodemailer sebagai layanan SMTP biasa.
Meskipun Google merekomendasikan Oauth2 sebagai opsi terbaik, metode ini mudah dan belum disebutkan dalam pertanyaan ini.
Tip tambahan: Saya juga menemukan Anda dapat menambahkan nama aplikasi Anda ke alamat "dari" dan GMail tidak menggantinya hanya dengan email akun seperti jika Anda mencoba menggunakan alamat lain. yaitu.
sumber
Ini diselesaikan menggunakan
nodemailer-smtp-transport
modul di dalam createTransport.sumber
Jika Anda menggunakan Express,
express-mailer
bungkusnodemailer
dengan sangat baik dan sangat mudah digunakan:sumber
semua kodemu baik-baik saja yang tersisa tinggal masuk ke tautan https://myaccount.google.com/security
dan terus gulir ke bawah dan Anda akan menemukan Izinkan aplikasi yang kurang aman: AKTIF dan tetap AKTIF, Anda tidak akan menemukan kesalahan.
sumber
Cukup tambahkan "host" itu akan berhasil.
Kemudian aktifkan "lesssecureapps" dengan mengklik link di bawah ini
https://myaccount.google.com/lesssecureapps
sumber
Untuk beberapa alasan, hanya mengizinkan konfigurasi aplikasi yang kurang aman tidak berfungsi untuk saya bahkan untuk hal captcha. Saya harus melakukan langkah lain yang mengaktifkan konfigurasi IMAP:
Dari halaman bantuan google: https://support.google.com/mail/answer/7126229?p=WebLoginRequired&visit_id=1-636691283281086184-1917832285&rd=3#cantsignin
sumber
Anda harus menambahkan tipe secureConnection di kode Anda.
sumber
Saya menggunakan versi lama nodemailer 0.4.1 dan mengalami masalah ini. Saya memperbarui ke 0,5.15 dan semuanya berfungsi dengan baik sekarang.
Diedit package.json untuk mencerminkan perubahan kemudian
sumber
Hadiri saja: 1- Otentikasi Gmail untuk mengizinkan email tingkat rendah tidak menerima sebelum Anda memulai ulang browser klien 2- Jika Anda ingin mengirim email dengan nodemailer dan Anda tidak ingin menggunakan protokol xouath2 di sana Anda harus menulis sebagai koneksi secureconnection: salah seperti di bawah ini
sumber
pertama instal nodemailer
impor ke file js
bekerja di aplikasi saya
sumber