2014-09-16 15 views
39

Próbuję utworzyć formularz kontaktowy w Rails 4. Zrobiłem tu trochę kopania i udało mi się uzyskać większość rzeczy do pracy. (po tym @ praca sethfri tutaj Contact Form Mailer in Rails 4)Rails 4, jak poprawnie skonfigurować ustawienia SMTP (Gmail)

W tej chwili jestem w stanie wypełnić moje pole formularza i hit wysłać. W moim serwerze railsowym jest napisane, że poczta była wychodząca na mój adres e-mail, ale nie otrzymuję niczego w moim oknie Gmail, więc myślę, że moje ustawienia smtp nie są poprawne. Moje ustawienia SMTP to:

... config/środowiska/development.rb

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.perform_deliveries = true 

    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :address => "smtp.gmail.com", 
    :port => "587", 
    :domain => "mydomain.net", 
    :user_name => "[email protected]", 
    :password => "myGmailPassword", 
    :authentication => "plain", 
    :enable_starttls_auto => true 
    } 

także dodałem w .../config/inicjalizatory/smtp_settings.rb

ActionMailer::Base.smtp_settings = { 
    :address => "smtp.gmail.com", 
    :port => "587", 
    :domain => "mydomain.net", 
    :user_name => "[email protected]", 
    :password => "gmailPassword", 
    :authentication => "plain", 
    :enable_starttls_auto => true 
} 

Czego mi brakuje/robię źle? Grałem z kilkoma rzeczami (zmieniłem default_url na port 1025, zmieniono: port => "587" na: port => 587) bez powodzenia.

Dzięki za pomoc!

+1

Czy sprawdziłeś folder ze spamem na koncie Gmail? –

+0

Najpierw sprawdź folder wysłany na koncie Gmaila. – fengd

+0

Hej, tak, sprawdziłem folder wysłany i foldery ze spamem zarówno w wysyłce e-maili, jak i w e-mailach odbierających (także w koncie gmail). – ResrieC

Odpowiedz

46

Musisz poprawnie ustawić domenę. Obecnie w kodzie zamieszczono jego "mydomain.net". Zmień go na gmail.com, jeśli chcesz go wysłać za pośrednictwem Gmaila.

config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'gmail.com', 
    user_name:   '[email protected]', 
    password:    'yourpassword', 
    authentication:  :plain, 
    enable_starttls_auto: true 
} 
+1

Hej, zrobiłem to, próbowałem z portem 587 w cudzysłowach i bez cytatów, a żadne z nich nie działa. – ResrieC

+10

Zmień wartość klucza ': authentication' z': plain' na ': login'. To zadziałało właśnie dla mnie, używając szyn 4. – Throoze

+0

domena oczywiście definiuje nazwę domeny, której możesz użyć wewnątrz lub swojej poczty do połączenia z klientem wysyłającym! Ta odpowiedź powinna zostać poprawiona lub usunięta! – wegginho

0

Google zaleca stosowanie protokołu OAuth 2.0 dla procesu logowania. Ta konfiguracja jest "nie tak bezpieczna" dla Google, ale ją toleruje. Musisz zezwolić na "mniej bezpieczne połączenia" w ustawieniach swojego konta Google lub korzystać z metody OAuth.

Ich biblioteka ruby ​​wciąż jest alfą. Wydaje się, że istnieją pewne klejnoty rozszerzające ActionMailer dla OAuth, ale nigdy ich nie używałem.

+2

Autor mówi o wysyłaniu e-maili za pośrednictwem serwera SMTP Gmaila, wiesz? To nie ma nic wspólnego z OAuth. – idmean

+0

I wciąż odpowiedź jest trafna. Aby móc korzystać z SMTP, musisz skonfigurować, aby włączyć "mniej bezpiecznych klientów". Alternatywą (z punktu widzenia googles) jest wcale nie używanie SMTP. Wydaje się, że głównym celem autora jest zapewnienie działania poczty e-mail. SMTP to po prostu chcieć * wydaje się być koniecznym. – NobodysNightmare

29

Jeśli napotkasz błędy takie jak: Net :: SMTPAuthenticationError podczas korzystania z Gmaila do wysyłania wiadomości e-mail (wspólne dla kont Google Apps), odwiedź numer gmail settings i włącz mniej bezpieczne aplikacje, aby aplikacja działała.

+0

Dzięki za tę sugestię. Google włączył to na moim koncie, a e-maile natychmiast przestały płynąć. To rozwiązało problem. – CodeSmith

+0

Mam włączone mniej bezpieczne hasła i zrobiłem również https://accounts.google.com/b/0/DisplayUnlockCaptcha opcję. Moja aplikacja do produkcji nadal odrzuca poświadczenia. Przełączyłem się z Linode na Heroku i ten problem pojawił się, gdy dokonano zmiany. Jakieś pomysły na to, dlaczego nadal będzie występować po włączeniu mniej bezpiecznych aplikacji i korzystaniu z DisplayUnlockCaptcha? – Matt

3

Po kilku godzinach szukania, jak sprawić, żeby to działało, znajdę sposób, żeby to zadziałało. Dla siebie musiałem wprowadzić weryfikację dwuetapową i użyć hasła do aplikacji Gmail:

Po włączeniu weryfikacji dwuetapowej (zwanej również uwierzytelnianiem dwuskładnikowym) dodaje się dodatkową warstwę zabezpieczeń do konta. Logujesz się, korzystając z czegoś, co znasz (twoje hasło) i czegoś, co masz (kod wysłany do twojego telefonu).

Konfigurowanie 2-Step Weryfikacja

  1. Przejdź do strony 2-Step Verification. Być może musisz zalogować się na swoje konto Google.
  2. W polu "Weryfikacja dwuetapowa" po prawej stronie wybierz opcję Rozpocznij konfigurację.
  3. Skorzystaj z procesu instalacji krok po kroku.

Hasło do aplikacji to 16-cyfrowe hasło, które daje aplikacji lub urządzeniu uprawnienia dostępu do konta Google. Jeśli korzystasz z weryfikacji dwuetapowej i podczas próby uzyskania dostępu do konta Google pojawia się komunikat "Nieprawidłowe hasło", hasło do aplikacji może rozwiązać problem. Przez większość czasu, trzeba tylko wpisać hasło App raz na aplikacji lub urządzenia, więc nie martw się o zapamiętanie go

Jak wygenerować hasło do aplikacji

  1. Wizyta swoją stronę App passwords. Możesz zostać poproszony o zalogowanie się na swoje konto Google.
  2. U dołu kliknij Wybierz aplikację i wybierz aplikację, której używasz.
  3. Kliknij Wybierz urządzenie i wybierz urządzenie, którego używasz.
  4. Wybierz opcję Wygeneruj.
  5. Postępuj zgodnie z instrukcjami, aby wprowadzić hasło do aplikacji (16-znakowy kod na żółtym pasku) na urządzeniu.
  6. Wybierz Gotowe
Powiązane problemy