Net :: SMTPAuthenticationError khi gửi email từ ứng dụng Rails (trên môi trường dàn dựng)


95

Tôi đang gửi email từ ứng dụng Rails của mình. Nó hoạt động tốt trên môi trường phát triển, nhưng không thành công trên hệ thống. Tôi nhận được lỗi sau đây:

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

Lưu ý rằng tôi không có tên miền cho dàn của tôi.

Đây là cài đặt của tôi trong 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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => 'login'
}

Xin vui lòng giúp đỡ.

Biên tập.

Sau khi thêm :tls => truetùy chọn, tôi nhận được

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

Và sau đó tôi đã thay đổi cổng thành 25 và bây giờ tôi nhận được điều này (với độ trễ 30 giây):

Timeout::Error (execution expired)

1
Tôi đã sao chép url do nhầm lẫn (có lẽ google đã nghĩ trước cho chúng tôi) vào trình duyệt. Nhập mật khẩu của tôi và trong bảng điều khiển mà tôi thấy đã chuyển khả năng thực hiện yêu cầu không chỉ từ các trang web đáng tin cậy.
zmii

Câu trả lời:


249

Tôi gặp vấn đề tương tự: email được gửi từ bộ phận phát triển, nhưng không phải từ bộ phận sản xuất (nơi tôi nhận được Net::SMTPAuthenticationError). Điều này khiến tôi kết luận rằng vấn đề không phải do cấu hình ứng dụng của tôi mà là do Google.

Lý do : Google đã chặn quyền truy cập từ vị trí không xác định (ứng dụng đang sản xuất)

Giải pháp : Truy cập http://www.google.com/accounts/DisplayUnlockCaptcha và nhấp vào tiếp tục (thao tác này sẽ cấp quyền truy cập trong 10 phút để đăng ký ứng dụng mới). Sau đó, ứng dụng của tôi trong quá trình sản xuất bắt đầu gửi email;)


3
Đó thực sự là cách chính xác để giải quyết nó (mặc dù nó có thể khiến tài khoản của bạn gặp rủi ro). Nhưng nó đã có tác dụng.
zakelfassi

40
Cũng đừng quên cho phép truy cập tài khoản tại đây :: google.com/settings/security/lesssecureapps
Chauskin Rodion

Tôi có thể tránh lesssecureappscài đặt này bằng cách sử dụng xác thực đa yếu tố và bật mật khẩu dành riêng cho ứng dụng cho máy chủ rails của mình.
Chris Beck

1
Có lẽ tốt hơn nên sử dụng một dịch vụ như Mandrill để gửi email trong môi trường sản xuất
Codebling

Tôi đã bật cài đặt tài khoản lesssecureapps và vào trang DisplayUnlockCaptcha và nhấn OK, gửi email qua đường ray nhưng gặp lỗi tương tự Net::SMTPAuthenticationError ...ContinueSignIn.... Sau đó, tôi cố gắng làm như vậy sau 10 phút và nó bắt đầu hoạt động.
Lev Lukomsky

25

Giải pháp này đang làm việc cho tôi:

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
  }

Đúng là Google sẽ chặn nỗ lực đăng nhập của bạn nhưng Bạn có thể thay đổi cài đặt của mình tại https://www.google.com/settings/security/lesssecureapps để tài khoản của bạn không còn được bảo vệ bởi các tiêu chuẩn bảo mật hiện đại.


Có một cách để làm điều này? Chẳng hạn, có thể đăng ký ứng dụng của bạn với google không?
jphager2

24

Đã giải quyết! Tôi chỉ đơn giản là thay đổi mật khẩu cho tài khoản gmail của mình và bằng cách nào đó các lỗi đã biến mất.

Sau hàng tá thay đổi, cài đặt cuối cùng mà tôi kết thúc là:

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
Cảm ơn bạn! Vấn đề này khiến tôi rất đau đầu và cuối cùng điều tôi cần làm là thay đổi mật khẩu tài khoản google sau khi sử dụng các cài đặt này và đặt tùy chọn cho phép ứng dụng kém an toàn hơn trong cài đặt tài khoản google.
Corey

Sau khi đặt 'cho phép các ứng dụng kém an toàn hơn' và yêu cầu google tin tưởng thiết bị của tôi (IP của máy chủ) và đợi hơn 24 giờ ... một sự thay đổi mật khẩu đơn giản đã khắc phục sự cố xác thực Gmail của tôi. ai đó ở google có lẽ nên sửa điều đó. ;)
Jason R

Tôi đã phải đối mặt với cùng một vấn đề. Tôi đã bật ứng dụng lessecure nhưng nó sẽ không sửa được. Tôi chỉ đơn giản là thay đổi mật khẩu của mình và nó hoạt động như một sự quyến rũ. :)
Nikhil Sahu


13

Giải pháp trên đã cung cấp các cài đặt chính xác (mà tôi đã có) nhưng không giải quyết được sự cố. Sau những lần thử tiếp tục, tôi vẫn gặp lỗi tương tự. Hóa ra, tôi đã phải "xóa CAPTCHA" khỏi web. Xem tài liệu gmail để biết chi tiết.

Bạn cũng có thể chuyển ngay đến trang "xóa CAPTCHA" tại đây .


1
Liên kết trực tiếp tới "xóa CAPTCHA" page: accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

Rất nhiều sau đó nhưng chỉ trong trường hợp nó giúp ích cho bất kỳ ai .. Chỉ cần gọi Trung tâm trợ giúp của Google Apps và họ đã hướng dẫn thay đổi cài đặt lesssecureapps (như mọi người khác) nhưng cũng thay đổi cổng thành 465.

Trong trường hợp của tôi, đó đã là một mẹo nhỏ!



0

Xin chào, điều này cũng làm việc cho tôi và vì vậy nếu ai đó vẫn gặp sự cố, hãy thử điều này.

Đảm bảo rằng bạn có figaro trong tệp gem của mình. Để lưu thông tin nhạy cảm như tên người dùng và mật khẩu làm biến môi trường

gem 'figaro'

Và trong cấu hình / môi trường / phát triển.rb của bạn, hãy dán các mã bên dưới bằng cách sử dụng smtp làm phương thức phân phối

 config.action_mailer.delivery_method = :smtp

Cài đặt SMTP cho 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" }

Trong thư mục cấu hình của bạn, hãy tạo một tệp có tên application.yml và thêm các mã bên dưới.

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

Bạn phải sử dụng email và mật khẩu của mình để xác thực trong tệp.


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

0

Tôi cũng phải đối mặt với vấn đề và sau một số nghiên cứu trong cài đặt Gmail, tôi đã tìm ra giải pháp:

  1. Trong gmail, hãy chuyển đến cài đặt.

  2. Chọn tab "Chuyển tiếp và POP / IMAP".

  3. Trong phần truy cập IMAP, chọn "Bật IMAP".


0

Câu trả lời được chấp nhận có vẻ rất cũ, tôi không biết liệu tại thời điểm đó giải pháp tiếp theo (tốt hơn) có tồn tại hay không:

Bây giờ, gửi email hoạt động hoàn hảo!


0

Để giải quyết vấn đề này:

  • Nếu bạn thấy: Net :: SMTPAuthenticationError (535-5.7.8 Tên người dùng và Mật khẩu không được chấp nhận.) , Thì bạn cần cho phép các ứng dụng kém an toàn hơn đăng nhập tài khoản google của mình. Để bật đăng nhập ứng dụng kém an toàn, hãy làm theo: https://myaccount.google.com/lesssecureapps? . Nhưng sẽ cho phép tất cả các ứng dụng đăng nhập. Nếu bạn muốn tùy chỉnh nó, hãy tham khảo: https://support.google.com/a/answer/6260879?hl=vi

  • Sau đó, có thể bạn sẽ nhận được Net :: SMTPAuthenticationError (534-5.7.14) , vì vậy, để giải quyết vấn đề này, hãy tham khảo: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Sau đó, nhấp vào tiếp tục từ trang bạn được chuyển hướng. Nó sẽ xác minh Captcha của bạn và ứng dụng của bạn sẽ được xác minh để sử dụng tài khoản google của bạn để gửi email.

GHI CHÚ: Hãy đảm bảo rằng bạn đang sử dụng thông tin đăng nhập chính xác của tài khoản gmail của mình.

Nếu bạn không sẵn sàng cho phép tất cả các ứng dụng, vui lòng tham khảo: https://support.google.com/a/answer/6260879?hl=vi . Từ liên kết, hãy chuyển đến Sử dụng các lựa chọn thay thế cho các ứng dụng kém an toàn hơn , điều này sẽ hướng dẫn bạn một cách thay thế để Cho phép các ứng dụng kém An toàn hơn truy cập vào tài khoản google của bạn.


-1

Tôi đã gặp vấn đề tương tự và sau một số thử nghiệm và lỗi, đã đi đến giải pháp này, đây là một tùy chọn được kích hoạt trong google:

Nhấp vào https://www.google.com/settings/u/0/security/lesssecureapps

Bật 'Quyền truy cập cho các ứng dụng kém an toàn hơn' tại đây bằng cách đăng nhập bằng địa chỉ email bạn đã cung cấp trong cấu hình smtp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.