Net :: SMTPAuthenticationError saat mengirim email dari aplikasi Rails (di lingkungan pementasan)

95

Saya mengirim email dari aplikasi Rails saya. Ini bekerja dengan baik di lingkungan pengembangan, tetapi gagal dalam pementasan. Saya mendapatkan kesalahan berikut:

Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6)

Perhatikan, bahwa saya, saya tidak memiliki nama domain untuk pementasan saya.

Berikut adalah pengaturan saya di staging.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here:80" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80'
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => 'login'
}

Tolong bantu.

Edit.

Setelah menambahkan :tls => trueopsi saya dapatkan

OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?)

Dan kemudian saya mengubah port menjadi 25 dan sekarang saya mendapatkan ini (dengan penundaan 30 detik):

Timeout::Error (execution expired)
eagor
sumber
1
Saya telah menyalin url karena kesalahan (google mungkin memikirkan sebelumnya untuk kami) ke browser. Memasukkan kata sandi saya dan di panel yang saya lihat beralih kemungkinan untuk membuat permintaan tidak hanya dari situs tepercaya.
zmii

Jawaban:

249

Saya memiliki masalah yang sama: email dikirim dari pengembangan, tetapi bukan dari produksi (tempat saya mendapatkannya Net::SMTPAuthenticationError). Hal ini mendorong saya untuk menyimpulkan bahwa masalahnya bukan pada konfigurasi aplikasi saya, tetapi pada Google.

Alasan : Google memblokir akses dari lokasi yang tidak diketahui (aplikasi dalam produksi)

Solusi : Buka http://www.google.com/accounts/DisplayUnlockCaptcha dan klik lanjutkan (ini akan memberikan akses selama 10 menit untuk mendaftarkan aplikasi baru). Setelah ini aplikasi saya dalam produksi mulai mengirim email;)

Astaga
sumber
3
Itu sebenarnya adalah cara yang benar untuk menyelesaikannya (meskipun itu dapat membahayakan akun Anda). Tapi itu berhasil.
zakelfassi
40
Juga jangan lupa izinkan akses akun di sini :: google.com/settings/security/lesssecureapps
Chauskin Rodion
Saya dapat menghindari lesssecureappspengaturan dengan menggunakan otentikasi multifaktor dan mengaktifkan kata sandi khusus aplikasi untuk server rel saya.
Chris Beck
1
Mungkin lebih baik menggunakan layanan seperti Mandrill untuk mengirim email di lingkungan produksi
Codebling
Saya telah mengaktifkan pengaturan akun lesssecureapps dan pergi ke halaman DisplayUnlockCaptcha dan menekan OK, mengirim email melalui rel tetapi menerima kesalahan yang sama Net::SMTPAuthenticationError ...ContinueSignIn.... Kemudian saya mencoba melakukan hal yang sama setelah 10 menit dan itu mulai bekerja.
Lev Lukomsky
25

Solusi ini berhasil untuk saya:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host:'localhost', port: '3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'localhost:3000',
      :user_name => "[email protected]",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Memang benar Google akan memblokir upaya masuk Anda, tetapi Anda dapat mengubah pengaturan di https://www.google.com/settings/security/lesssecureapps sehingga akun Anda tidak lagi dilindungi oleh standar keamanan modern.

AHK
sumber
Apakah ada cara untuk melakukan ini? Apakah mungkin untuk mendaftarkan aplikasi Anda ke Google, misalnya?
jphager2
24

Terpecahkan! Saya hanya mengubah kata sandi untuk akun gmail saya dan entah bagaimana kesalahan menghilang.

Setelah lusinan perubahan, pengaturan terakhir yang saya hasilkan adalah:

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80',
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}
eagor
sumber
1
Terima kasih! Masalah ini membuat saya sangat pusing, dan pada akhirnya yang perlu saya lakukan adalah mengubah kata sandi akun google saya setelah menggunakan pengaturan ini dan mengatur opsi izinkan aplikasi yang kurang aman di pengaturan akun google.
Corey
Setelah mengatur 'izinkan aplikasi yang kurang aman' dan beri tahu google untuk mempercayai perangkat saya (IP server) dan menunggu lebih dari 24 jam ... perubahan kata sandi sederhana memperbaiki masalah otentikasi gmail saya. seseorang di google mungkin harus memperbaikinya. ;)
Jason R
Saya menghadapi masalah yang sama. Saya sudah mengaktifkan aplikasi lessecure tetapi tidak bisa diperbaiki. Saya hanya mengubah kata sandi saya dan itu bekerja seperti pesona. :)
Nikhil Sahu
13

Solusi di atas memberikan pengaturan yang benar (yang sudah saya miliki) tetapi tidak menyelesaikan masalah. Setelah mencoba terus, saya terus mendapatkan kesalahan yang sama. Ternyata, saya harus "menghapus CAPTCHA" dari web. Lihat dokumentasi gmail untuk detailnya.

Anda juga dapat langsung menuju ke halaman "hapus CAPTCHA" di sini .

Maaf-Im-a-N00b
sumber
1
Tautan langsung ke laman "hapus CAPTCHA": accounts.google.com/DisplayUnlockCaptcha
tmr08c
2

Banyak kemudian tetapi untuk berjaga-jaga jika itu membantu siapa saja .. Baru saja menelepon Pusat Bantuan Google Apps dan mereka menginstruksikan untuk mengubah setelan aplikasi yang kurang aman (seperti orang lain) tetapi juga untuk mengubah porta ke 465.

Dalam kasus saya, itu berhasil!

Alejandro Sherwell
sumber
0

Halo, ini juga berhasil untuk saya, jadi jika seseorang masih mengalami masalah, coba ini.

Pastikan Anda memiliki figaro di file gemfile Anda. Untuk menyimpan informasi sensitif seperti nama pengguna dan kata sandi sebagai variabel lingkungan

gem 'figaro'

Dan di config / environment / development.rb Anda, tempel kode di bawah ini menggunakan smtp sebagai metode pengiriman

 config.action_mailer.delivery_method = :smtp

Pengaturan SMTP untuk gmail

  config.action_mailer.smtp_settings =
  {
    :address=> "smtp.gmail.com",
    :port => 587,
    :user_name => ENV['gmail_username'],
    :password=> ENV['gmail_password'],
    :authentication=> "plain",
    :enable_starttls_auto=>true
  }


config.action_mailer.default_url_options = { host: "locahost:3000" }

Di direktori config Anda, buat file bernama application.yml dan tambahkan kode di bawah ini.

gmail_username: '[email protected]' 
gmail_password: "your_example_email_password_here"

Anda harus menggunakan email dan kata sandi Anda untuk otentikasi dalam file.

cooxy
sumber
config.action_mailer.default_url_options = {host: "localhost: 3000"}
cooxy
0

Saya juga menghadapi masalah, dan setelah beberapa penelitian di pengaturan Gmail, saya menemukan solusinya:

  1. Di gmail, buka pengaturan.

  2. Pilih tab "Penerusan dan POP / IMAP".

  3. Di bagian akses IMAP, pilih "Aktifkan IMAP".

Shrinivas
sumber
0

Jawaban yang diterima sepertinya sangat tua, saya tidak tahu apakah pada saat itu solusi berikut (lebih baik) sudah ada:

Sekarang, mengirim email bekerja dengan sempurna!

ubugnu
sumber
0

Untuk mengatasi masalah ini:

  • Jika Anda melihat: Net :: SMTPAuthenticationError (535-5.7.8 Nama pengguna dan Kata Sandi tidak diterima.) , Anda perlu mengizinkan aplikasi yang kurang aman untuk masuk ke akun Google Anda. Untuk mengaktifkan login aplikasi yang kurang aman ikuti: https://myaccount.google.com/lesssecureapps? . Tetapi akan memungkinkan semua aplikasi untuk masuk. Jika Anda ingin menyesuaikannya lihat: https://support.google.com/a/answer/6260879?hl=id

  • Maka mungkin saja Anda akan mendapatkan Net :: SMTPAuthenticationError (534-5.7.14) , jadi untuk mengatasi ini lihat: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Setelah itu klik lanjutkan dari halaman Anda dialihkan. Ini akan memverifikasi Captcha Anda dan aplikasi Anda akan diverifikasi untuk menggunakan akun Google Anda untuk mengirim email.

CATATAN: Harap pastikan Anda menggunakan kredensial yang benar dari akun gmail Anda.

Jika Anda tidak ingin mengizinkan semua aplikasi, harap lihat: https://support.google.com/a/answer/6260879?hl=id . Dari tautan ke Gunakan alternatif untuk aplikasi yang kurang aman , ini akan memandu Anda ke cara alternatif untuk Izinkan aplikasi yang Kurang Aman akses ke akun Google Anda.

Yash Dubey
sumber
-1

Saya memiliki masalah yang sama dan setelah beberapa percobaan dan kesalahan, telah mencapai resolusi ini yang merupakan opsi untuk diaktifkan di google:

Klik https://www.google.com/settings/u/0/security/lesssecureapps

Aktifkan 'Akses untuk aplikasi yang kurang aman' di sini dengan masuk menggunakan alamat email yang Anda berikan di konfigurasi smtp.

Mirza Vu
sumber