Rails uygulamasından e-posta gönderirken Net :: SMTPAuthenticationError (hazırlama ortamında)


96

Rails uygulamamdan e-posta gönderiyorum. Geliştirme ortamında iyi çalışır, ancak aşamalandırmada başarısız olur. Aşağıdaki hatayı alıyorum:

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

Aşamam için alan adımın olmadığını unutmayın.

İşte staging.rb'deki ayarlarım

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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => 'login'
}

Lütfen yardım et.

Düzenle.

:tls => trueSeçenek ekledikten sonra alıyorum

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

Ve sonra portu 25 olarak değiştirdim ve şimdi bunu alıyorum (30 saniye gecikmeyle):

Timeout::Error (execution expired)

1
URL'yi yanlışlıkla tarayıcıya kopyaladım (google muhtemelen bizim için önceden düşündü). Şifremi girdim ve panelde sadece güvenilir sitelerden istekte bulunma olasılığını değiştirdim.
zmii

Yanıtlar:


250

Aynı sorunu yaşadım: e-postalar geliştirmeden gönderildi, ancak üretimden değil (aldığım yerden Net::SMTPAuthenticationError). Bu beni, sorunun uygulamamın yapılandırmasında değil, Google'da olduğu sonucuna götürdü.

Nedeni : Google, bilinmeyen konumdan erişimi engelliyordu (uygulama üretimde)

Çözüm : http://www.google.com/accounts/DisplayUnlockCaptcha adresine gidin ve devam et'i tıklayın (bu, yeni uygulamaların kaydedilmesi için 10 dakika süreyle erişim sağlar). Bundan sonra üretimdeki uygulamam e-posta göndermeye başladı;)


3
Aslında sorunu çözmenin doğru yolu budur (ancak hesabınızı riske atabilir). Ama işe yarıyor.
zakelfassi

40
Ayrıca buradan hesap erişimine izin vermeyi unutmayın :: google.com/settings/security/lesssecureapps
Chauskin Rodion

Çok lesssecureappsfaktörlü kimlik doğrulamasını kullanarak ve raylar sunucum için uygulamaya özel bir parola etkinleştirerek bu ayardan kaçınabildim .
Chris Beck

1
Üretim ortamında e-posta göndermek için Mandrill gibi bir hizmeti kullanmak muhtemelen daha iyidir
Codebling

Ben açtınız lesssecureapps ayarı hesabı ve gitti displayunlockcaptcha raylar vasıtasıyla sayfa ve pres OK, gönderdiği e ama aynı hata aldı Net::SMTPAuthenticationError ...ContinueSignIn.... Sonra 10 dakika sonra aynısını yapmaya çalıştım ve çalışmaya başladı.
Lev Lukomsky

25

Bu çözüm benim için çalışıyor:

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 => "xyz@gmail.com",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Google'ın oturum açma girişiminizi engelleyeceği doğrudur, ancak hesabınızın artık modern güvenlik standartlarıyla korunmaması için ayarlarınızı https://www.google.com/settings/security/lesssecureapps adresinden değiştirebilirsiniz .


Bunu yapmanın bir yolu var mı? Örneğin, uygulamanızı google'a kaydettirmek mümkün mü?
jphager2

24

Çözüldü! Ben sadece şifreyi değiştirmiş benim gmail hesabı için ve bir şekilde hataları ortadan kayboldu.

Düzinelerce değişiklikten sonra, son bulduğum son ayarlar:

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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}

1
Teşekkür ederim! Bu sorun bana çok fazla baş ağrısına neden oluyordu ve sonunda yapmam gereken, bu ayarları kullandıktan ve google hesap ayarlarında daha az güvenli uygulamalara izin ver seçeneğini belirledikten sonra google hesabı şifremi değiştirmekti.
Corey

'Daha az güvenli uygulamalara izin ver' ayarını yaptıktan ve google'a cihazıma (sunucunun IP'si) güvenmesini ve 24 saatten fazla beklemesini söyledikten sonra ... basit bir şifre değişikliği gmail kimlik doğrulama sorunlarımı çözdü. google'daki biri muhtemelen bunu düzeltmeli. ;)
Jason R

Ben de aynı sorunla karşı karşıyaydım. Lessecureapps'ı zaten etkinleştirmiştim, ancak düzeltilmeyecek. Şifremi değiştirdim ve bir cazibe gibi çalıştı. :)
Nikhil Sahu



2

Çok sonra, ancak herhangi birine yardımcı olma ihtimaline karşı .. Google Apps Yardım Merkezi'ni aradılar ve daha az güvenli uygulama ayarını (herkes gibi) değiştirme ve aynı zamanda bağlantı noktasını 465 olarak değiştirme talimatı verdiler.

Benim durumumda bu hile yaptı!



0

Merhaba, bu da benim için çalıştı ve bu yüzden birisi hala bir sorun yaşıyorsa bunu deneyin.

Mücevher dosyanızda figaro olduğundan emin olun. Kullanıcı adı ve şifre gibi hassas bilgileri ortam değişkenleri olarak kaydetmek için

gem 'figaro'

Ve config / environment / development.rb dosyanıza, yöntem teslimi olarak smtp kullanarak aşağıdaki kodları yapıştırın

 config.action_mailer.delivery_method = :smtp

Gmail için SMTP ayarları

  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" }

Config dizininizde application.yml adlı bir dosya oluşturun ve aşağıdaki kodları ekleyin.

gmail_username: 'example@gmail.com' 
gmail_password: "your_example_email_password_here"

Dosyada kimlik doğrulama için e-posta adresinizi ve şifrenizi kullanmalısınız.


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

0

Ayrıca sorunla karşılaştım ve Gmail ayarında biraz araştırma yaptıktan sonra çözümü buldum:

  1. Gmail'de ayarlara gidin.

  2. "Yönlendirme ve POP / IMAP" sekmesini seçin.

  3. IMAP erişimi bölümünde, "IMAP'i Etkinleştir" i seçin.


0

Kabul edilen cevap çok eski görünüyor, o sırada aşağıdaki (daha iyi) çözümün mevcut olup olmadığını bilmiyorum:

Artık e-posta göndermek mükemmel bir şekilde çalışıyor!


0

Bu sorunu çözmek için:

  • Eğer görürseniz: Net :: SMTPAuthenticationError (. 535-5.7.8 Kullanıcı adı ve Şifre kabul edilmedi) , o zaman daha az güvenli uygulamaların google hesabını giriş izin vermesi gerekir. Daha az güvenli uygulamaları etkinleştirmek için şu adresi izleyin: https://myaccount.google.com/lesssecureapps? . Ancak tüm uygulamaların giriş yapmasına izin verecek. Özelleştirmek istiyorsanız şu adrese bakın: https://support.google.com/a/answer/6260879?hl=tr

  • O zaman mümkün olabilir, Net :: SMTPAuthenticationError (534-5.7.14) alacaksınız , bu yüzden bunu çözmek için şu adrese başvurun: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Bundan sonra yönlendirildiğiniz sayfadan devam et'i tıklayın. Captcha'nızı doğrulayacak ve uygulamanız, e-posta göndermek için google hesabınızı kullanmak üzere doğrulanacaktır.

NOT: Lütfen gmail hesabınız için doğru kimlik bilgilerini kullandığınızdan emin olun.

Tüm uygulamalara izin vermek istemiyorsanız lütfen şu adrese bakın: https://support.google.com/a/answer/6260879?hl=tr . Bağlantıdan Daha az güvenli uygulamalar için alternatifleri kullan seçeneğine gidin , bu sizi daha Az Güvenli uygulamaların google hesabınıza erişmesine izin vermenin alternatif bir yolunu bulacaktır .


-1

Aynı sorunu yaşadım ve bazı deneme yanılmalarından sonra, google'da etkinleştirilecek bir seçenek olan bu çözüme ulaştım:

Https://www.google.com/settings/u/0/security/lesssecureapps seçeneğini tıklayın.

Smtp yapılandırmasında sağladığınız e-posta adresiyle giriş yaparak "Daha az güvenli uygulamalar için erişim" i buradan etkinleştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.