Net :: SMTPAuthenticationError podczas wysyłania wiadomości e-mail z aplikacji Rails (w środowisku pomostowym)

95

Wysyłam e-mail z mojej aplikacji Railsowej. Działa dobrze w środowisku programistycznym, ale nie działa w przemieszczaniu. Otrzymuję następujący błąd:

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

Zwróć uwagę, że moja nie mam nazwy domeny dla mojej przejściówki.

Oto moje ustawienia w 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'
}

Proszę pomóż.

Edytować.

Po dodaniu :tls => trueopcji otrzymuję

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

A potem zmieniłem port na 25 i teraz mam to (z 30-sekundowym opóźnieniem):

Timeout::Error (execution expired)
eagor
źródło
1
Skopiowałem omyłkowo adres URL (prawdopodobnie Google pomyślał o tym wcześniej) do przeglądarki. Podałem swoje hasło iw panelu, który widziałem, przełączyłem możliwość wysyłania zapytań nie tylko z zaufanych stron.
zmii

Odpowiedzi:

249

Miałem ten sam problem: e-maile były wysyłane z dewelopera, ale nie z produkcji (skąd dostawałem Net::SMTPAuthenticationError). To doprowadziło mnie do wniosku, że problem nie dotyczył konfiguracji mojej aplikacji, ale Google.

Powód : Google blokował dostęp z nieznanej lokalizacji (aplikacja w produkcji)

Rozwiązanie : przejdź do http://www.google.com/accounts/DisplayUnlockCaptcha i kliknij Kontynuuj (umożliwi to 10 minut dostępu do rejestracji nowych aplikacji). Po tym moja aplikacja w produkcji zaczęła wysyłać e-maile;)

Gee-Bee
źródło
3
W rzeczywistości jest to właściwy sposób rozwiązania tego problemu (chociaż może to narazić Twoje konto na ryzyko). Ale to działa.
zakelfassi
40
Nie zapomnij także zezwól na dostęp do konta tutaj: google.com/settings/security/lesssecureapps
Chauskin Rodion
Udało mi się uniknąć tego lesssecureappsustawienia, używając uwierzytelniania wieloskładnikowego i włączając hasło specyficzne dla aplikacji dla mojego serwera Rails.
Chris Beck
1
Prawdopodobnie lepiej jest korzystać z usługi takiej jak Mandrill do wysyłania e-maili w środowisku produkcyjnym
Codebling
Mam włączone lesssecureapps konto ustawiania i udał się do DisplayUnlockCaptcha stronie i nacisnął przycisk OK, wysłany e-mail za pośrednictwem szyny ale otrzymał ten sam błąd Net::SMTPAuthenticationError ...ContinueSignIn.... Potem spróbowałem zrobić to samo po 10 minutach i zaczęło działać.
Lev Lukomsky
25

To rozwiązanie działa dla mnie:

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
  }

To prawda, że ​​Google zablokuje Twoją próbę logowania, ale możesz zmienić ustawienia na https://www.google.com/settings/security/lesssecureapps , aby Twoje konto nie było już chronione przez nowoczesne standardy bezpieczeństwa.

AHK
źródło
Czy można to obejść? Czy można na przykład zarejestrować swoją aplikację w Google?
jphager2
24

Rozwiązany! Po prostu zmieniłem hasło do mojego konta Gmail i jakoś zniknęły błędy.

Po kilkunastu zmianach ostateczne ustawienia, z którymi się skończyłem, to:

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
źródło
1
Dziękuję Ci! Ten problem powodował wiele bólu głowy, a na koniec musiałem zmienić hasło do konta Google po użyciu tych ustawień i ustawić opcję zezwalania na mniej bezpieczne aplikacje w ustawieniach konta Google.
Corey
Po ustawieniu `` zezwalaj na mniej bezpieczne aplikacje '' i powiedz Google, aby zaufało mojemu urządzeniu (adresowi IP serwera) i odczekaniu ponad 24 godzin ... prosta zmiana hasła rozwiązała moje problemy z uwierzytelnianiem w Gmailu. ktoś z google powinien prawdopodobnie to naprawić. ;)
Jason R
Miałem ten sam problem. Włączyłem już lessecureapps, ale to nie naprawi. Po prostu zmieniłem hasło i działało jak urok. :)
Nikhil Sahu
13

Powyższe rozwiązanie zapewniło prawidłowe ustawienia (które już miałem), ale nie rozwiązało problemu. Po kolejnych próbach wciąż otrzymywałem ten sam błąd. Okazało się, że musiałem „wyczyścić CAPTCHA” z sieci. Więcej informacji znajdziesz w dokumentacji Gmaila .

Możesz także przejść bezpośrednio do strony „wyczyść CAPTCHA” tutaj .

Sorry-Im-a-N00b
źródło
1
Bezpośredni link do strony „wyczyść CAPTCHA”: accounts.google.com/DisplayUnlockCaptcha
tmr08c
2

Dużo później, ale na wszelki wypadek, gdyby to komukolwiek pomogło ... Zadzwoniłem do Centrum pomocy Google Apps i poinstruowano, aby zmienić ustawienie lesssecureapps (tak jak wszyscy), ale także zmienić port na 465.

W moim przypadku to załatwiło sprawę!

Alejandro Sherwell
źródło
0

Witam, to też działało dla mnie, więc jeśli ktoś nadal ma problem, wypróbuj to.

Upewnij się, że masz figaro w swoim pliku gem. Aby zapisać poufne informacje, takie jak nazwa użytkownika i hasło, jako zmienne środowiskowe

gem 'figaro'

A w pliku config / environment / development.rb wklej poniższe kody, używając smtp jako metody dostarczania

 config.action_mailer.delivery_method = :smtp

Ustawienia SMTP dla Gmaila

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

W katalogu konfiguracyjnym utwórz plik o nazwie application.yml i dodaj poniższe kody.

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

Musisz użyć swojego adresu e-mail i hasła do uwierzytelnienia w pliku.

cooxy
źródło
config.action_mailer.default_url_options = {host: "localhost: 3000"}
cooxy
0

Zmierzyłem się też z problemem i po kilku badaniach w ustawieniach Gmaila znalazłem rozwiązanie:

  1. W Gmailu przejdź do ustawień.

  2. Wybierz kartę „Przekazywanie i POP / IMAP”.

  3. W sekcji Dostęp IMAP wybierz „Włącz IMAP”.

Shrinivas
źródło
0

Przyjęta odpowiedź wydaje się bardzo stara, nie wiem, czy w tamtym czasie istniało następujące (lepsze) rozwiązanie:

Teraz wysyłanie e-maili działa doskonale!

ubugnu
źródło
0

Aby rozwiązać ten problem:

  • Jeśli zobaczysz: Net :: SMTPAuthenticationError (535-5.7.8 Nazwa użytkownika i hasło nie zostały zaakceptowane) , musisz zezwolić mniej bezpiecznym aplikacjom na logowanie się do Twojego konta Google. Aby włączyć mniej bezpieczne logowanie do aplikacji, wykonaj: https://myaccount.google.com/lesssecureapps? . Ale pozwoli wszystkim aplikacjom na logowanie. Jeśli chcesz go dostosować, zobacz: https://support.google.com/a/answer/6260879?hl=en

  • Wtedy może być możliwe, że otrzymasz Net :: SMTPAuthenticationError (534-5.7.14) , więc aby rozwiązać ten problem: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Następnie kliknij kontynuuj na stronie, na którą zostaniesz przekierowany. Zweryfikuje Twój Captcha, a Twoja aplikacja zostanie zweryfikowana, aby używać Twojego konta Google do wysyłania e-maili.

UWAGA: upewnij się, że używasz poprawnych danych logowania do konta Gmail.

Jeśli nie chcesz zezwalać na wszystkie aplikacje, odwiedź: https://support.google.com/a/answer/6260879?hl=en . Z linku przejdź do Użyj alternatyw dla mniej bezpiecznych aplikacji , to poprowadzi Cię do alternatywnego sposobu Zezwalania mniej bezpiecznym aplikacjom na dostęp do Twojego konta Google.

Yash Dubey
źródło
-1

Miałem ten sam problem i po kilku próbach i błędach doszedłem do takiego rozwiązania, które jest opcją do włączenia w google:

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

Włącz tutaj „Dostęp do mniej bezpiecznych aplikacji”, logując się za pomocą adresu e-mail podanego w konfiguracji smtp.

Mirza Vu
źródło