Net :: SMTPAuthenticationError เมื่อส่งอีเมลจากแอป Rails (ในสภาพแวดล้อมการจัดเตรียม)


96

ฉันกำลังส่งอีเมลจากแอปพลิเคชัน Rails ของฉัน ทำงานได้ดีกับสภาพแวดล้อมการพัฒนา แต่ล้มเหลวในการจัดเตรียม ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

โปรดทราบว่าฉันไม่มีชื่อโดเมนสำหรับการจัดเตรียมของฉัน

นี่คือการตั้งค่าของฉันใน 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'
}

กรุณาช่วย.

แก้ไข.

หลังจากเพิ่ม:tls => trueตัวเลือกที่ฉันได้รับ

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

จากนั้นฉันเปลี่ยนพอร์ตเป็น 25 และตอนนี้ฉันได้รับสิ่งนี้ (ด้วยความล่าช้า 30 วินาที):

Timeout::Error (execution expired)

1
ฉันคัดลอก URL ที่ผิดพลาด (Google อาจคิดล่วงหน้าสำหรับเรา) ไปยังเบราว์เซอร์ ป้อนรหัสผ่านของฉันและในแผงควบคุมที่ฉันเห็นว่าเปลี่ยนความเป็นไปได้ในการร้องขอไม่เพียง แต่จากไซต์ที่เชื่อถือ
zmii

คำตอบ:


250

ฉันมีปัญหาเดียวกัน: อีเมลถูกส่งจากการพัฒนา แต่ไม่ได้มาจากการผลิต (ที่ฉันได้รับNet::SMTPAuthenticationError) สิ่งนี้ทำให้ฉันสรุปได้ว่าปัญหาไม่ได้อยู่ที่การกำหนดค่าแอปของฉัน แต่เกิดจาก Google

เหตุผล : Google ปิดกั้นการเข้าถึงจากตำแหน่งที่ไม่รู้จัก (แอปอยู่ระหว่างการผลิต)

วิธีแก้ไข : ไปที่http://www.google.com/accounts/DisplayUnlockCaptchaและคลิกดำเนินการต่อ (จะให้สิทธิ์เข้าถึง 10 นาทีสำหรับการลงทะเบียนแอปใหม่) หลังจากนี้แอพของฉันในการผลิตเริ่มส่งอีเมล;)


3
นั่นเป็นวิธีที่ถูกต้องในการแก้ปัญหา (แม้ว่าอาจทำให้บัญชีของคุณตกอยู่ในความเสี่ยง) แต่มันได้ผล
zakelfassi

40
อย่าลืมอนุญาตการเข้าถึงบัญชีที่นี่ :: google.com/settings/security/lesssecureapps
Chauskin Rodion

ฉันสามารถหลีกเลี่ยงการlesssecureappsตั้งค่านี้ได้โดยใช้การพิสูจน์ตัวตนแบบหลายปัจจัยและเปิดใช้งานรหัสผ่านเฉพาะแอปสำหรับเซิร์ฟเวอร์รางของฉัน
Chris Beck

1
น่าจะดีกว่าถ้าใช้บริการเช่นMandrillในการส่งอีเมลในสภาพแวดล้อมการใช้งานจริง
Codebling

ผมได้เปิดlesssecureappsบัญชีการตั้งค่าและไปDisplayUnlockCaptchaหน้าและกดตกลงอีเมลที่ส่งผ่านทางรถไฟ Net::SMTPAuthenticationError ...ContinueSignIn...แต่ได้รับข้อผิดพลาดเดียวกัน จากนั้นฉันก็ลองทำแบบเดียวกันหลังจากผ่านไป 10 นาทีและมันก็เริ่มทำงาน
Lev Lukomsky

25

วิธีนี้ใช้ได้ผลสำหรับฉัน:

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 จะบล็อกความพยายามในการลงชื่อเข้าใช้ของคุณ แต่คุณสามารถเปลี่ยนการตั้งค่าได้ที่https://www.google.com/settings/security/lesssecureappsเพื่อให้บัญชีของคุณไม่ได้รับการคุ้มครองตามมาตรฐานความปลอดภัยสมัยใหม่อีกต่อไป


มีวิธีการทำเช่นนี้หรือไม่? เป็นไปได้ไหมที่จะลงทะเบียนแอปกับ Google
jphager2

24

แก้ไขแล้ว! ฉันเพิ่งเปลี่ยนรหัสผ่านสำหรับบัญชี gmail ของฉันและข้อผิดพลาดก็หายไป

หลังจากการเปลี่ยนแปลงหลายสิบครั้งการตั้งค่าสุดท้ายที่ฉันได้รับคือ:

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
ขอบคุณ! ปัญหานี้ทำให้ฉันปวดหัวมากและในที่สุดสิ่งที่ฉันต้องทำคือเปลี่ยนรหัสผ่านบัญชี Google ของฉันหลังจากใช้การตั้งค่าเหล่านี้และตั้งค่าตัวเลือกอนุญาตแอปที่มีความปลอดภัยน้อยในการตั้งค่าบัญชี Google
Corey

หลังจากตั้งค่า 'อนุญาตแอปที่มีความปลอดภัยน้อยกว่า' และแจ้งให้ Google เชื่อถืออุปกรณ์ของฉัน (IP ของเซิร์ฟเวอร์) และรอนานกว่า 24 ชั่วโมง ... การเปลี่ยนรหัสผ่านง่ายๆช่วยแก้ปัญหาการตรวจสอบสิทธิ์ Gmail ของฉัน ใครบางคนที่ Google น่าจะแก้ไขได้ ;)
Jason R

ฉันประสบปัญหาเดียวกัน ฉันได้เปิดใช้งานแอป lessecure แล้ว แต่มันไม่สามารถแก้ไขได้ ฉันเพิ่งเปลี่ยนรหัสผ่านและมันก็ใช้งานได้เหมือนมีเสน่ห์ :)
Nikhil Sahu


13

วิธีแก้ปัญหาข้างต้นให้การตั้งค่าที่ถูกต้อง (ซึ่งฉันมีอยู่แล้ว) แต่ไม่สามารถแก้ปัญหาได้ หลังจากพยายามอย่างต่อเนื่องฉันยังคงได้รับข้อผิดพลาดเดิม ปรากฎว่าฉันต้อง "ล้าง CAPTCHA" จากเว็บ ดูรายละเอียดในเอกสารประกอบของ Gmail

นอกจากนี้คุณยังสามารถกระโดดสิทธิที่จะ "ล้าง CAPTCHA หน้า" ที่นี่


1
ลิงก์โดยตรงไปยังหน้า "ล้าง CAPTCHA": accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

ในภายหลัง แต่เผื่อว่าจะช่วยใครได้ .. เพิ่งโทรไปที่ศูนย์ช่วยเหลือของ Google Apps และพวกเขาสั่งให้เปลี่ยนการตั้งค่า lesssecureapps (เหมือนคนอื่น ๆ ) แต่ให้เปลี่ยนพอร์ตเป็น 465 ด้วย

ในกรณีของฉันนั่นเป็นเคล็ดลับ!



0

สวัสดีสิ่งนี้ใช้ได้กับฉันเช่นกันดังนั้นหากใครยังคงมีปัญหาอยู่ลองใช้วิธีนี้

ตรวจสอบให้แน่ใจว่าคุณมี figaro ใน gemfile ของคุณ เพื่อบันทึกข้อมูลที่ละเอียดอ่อนเช่นชื่อผู้ใช้และรหัสผ่านเป็นตัวแปรสภาพแวดล้อม

gem 'figaro'

และใน config / environment / development.rb ของคุณให้วางโค้ดด้านล่างโดยใช้ smtp เป็นวิธีการจัดส่ง

 config.action_mailer.delivery_method = :smtp

การตั้งค่า SMTP สำหรับ 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" }

ในไดเร็กทอรี config ของคุณให้สร้างไฟล์ชื่อ application.yml และเพิ่มโค้ดด้านล่าง

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

คุณต้องใช้อีเมลและรหัสผ่านสำหรับการตรวจสอบสิทธิ์ในไฟล์


config.action_mailer.default_url_options = {โฮสต์: "localhost: 3000"}
cooxy

0

ฉันประสบปัญหาเช่นกันและหลังจากการวิจัยในการตั้งค่า Gmail ฉันพบวิธีแก้ปัญหา:

  1. ใน gmail ไปที่การตั้งค่า

  2. เลือกแท็บ "การส่งต่อและ POP / IMAP"

  3. ในส่วนการเข้าถึง IMAP ให้เลือก "เปิดใช้งาน IMAP"


0

คำตอบที่ได้รับการยอมรับดูเหมือนจะเก่ามากฉันไม่รู้ว่าในเวลานั้นมีโซลูชัน followin (ดีกว่า) อยู่หรือไม่:

  • ไปที่https://myaccount.google.com/u/0/apppasswords
  • สร้างรหัสผ่านใหม่สำหรับแอปของคุณ
  • แทนที่รหัสผ่านส่วนตัวด้วยรหัสผ่านที่สร้างขึ้นใน config.action_mailer.smtp_settings

ตอนนี้การส่งอีเมลทำงานได้อย่างสมบูรณ์แบบ!


0

ในการแก้ไขปัญหานี้:

  • หากคุณเห็น: Net :: SMTPAuthenticationError (ไม่ยอมรับชื่อผู้ใช้และรหัสผ่าน 535-5.7.8) แสดงว่าคุณต้องอนุญาตให้แอปที่มีความปลอดภัยน้อยเข้าสู่ระบบบัญชี Google ของคุณ หากต้องการเปิดใช้งานการเข้าสู่ระบบแอปที่มีความปลอดภัยน้อยให้ทำตาม: https://myaccount.google.com/lesssecureapps? . แต่จะอนุญาตให้แอปทั้งหมดเข้าสู่ระบบ. หากคุณต้องการปรับแต่งโปรดดู: https://support.google.com/a/answer/6260879?hl=th

  • จากนั้นอาจเป็นไปได้ที่คุณจะได้รับNet :: SMTPAuthenticationError (534-5.7.14)ดังนั้นเพื่อแก้ไขการอ้างอิงนี้: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha หลังจากนั้นคลิกดำเนินการต่อจากหน้าที่คุณได้รับการเปลี่ยนเส้นทาง มันจะตรวจสอบCaptchaของคุณและแอปของคุณจะได้รับการยืนยันเพื่อใช้บัญชี Google ของคุณในการส่งอีเมล

หมายเหตุ:โปรดตรวจสอบว่าคุณใช้ข้อมูลรับรองบัญชี Gmail ที่ถูกต้อง

หาก you'r ไม่เต็มใจที่จะช่วยให้ปพลิเคชันทั้งหมดโปรดดูที่: https://support.google.com/a/answer/6260879?hl=en จากลิงก์ไปที่ใช้ทางเลือกอื่นไปยังแอปที่มีความปลอดภัยน้อยซึ่งจะแนะนำวิธีอื่นในการอนุญาตให้แอปที่ปลอดภัยน้อยเข้าถึงบัญชี Google


-1

ฉันมีปัญหาเดียวกันและหลังจากการทดลองและข้อผิดพลาดมาถึงการแก้ปัญหานี้ซึ่งเป็นตัวเลือกที่จะเปิดใช้งานใน Google:

คลิกhttps://www.google.com/settings/u/0/security/lesssecureapps

เปิดใช้งาน 'การเข้าถึงแอปที่มีความปลอดภัยน้อย' ที่นี่โดยเข้าสู่ระบบด้วยที่อยู่อีเมลที่คุณระบุไว้ในการกำหนดค่า smtp

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.