मैं डेविस के साथ ईमेल की पुष्टि कैसे स्थापित करूं?


127

क्या वहाँ एक ट्यूटोरियल है जो बताता है कि कैसे खरोंच (विकास और उत्पादन दोनों में) से डेविस के साइनअप पुष्टिकरण ईमेल को सेट किया जाए, यानी यदि आपके पास एक्शन मेलर सेट अप नहीं है?

Google खोज ने इससे संबंधित अलग-अलग टुकड़ों का एक समूह बना दिया है। कोई भी टुकड़ा पर्याप्त नहीं बताता है, और मुझे यकीन नहीं है कि वे एक साथ कैसे फिट होते हैं। क्या वहाँ एक चरण-दर-चरण स्पष्टीकरण है, या यहां तक ​​कि कुछ भी जो प्रारंभिक चरणों की व्याख्या करता है?


अंत में यह काम कर गया। नीचे दिए गए उत्तर में सभी चरणों का पालन किया, फिर मेरे पर्यावरण में निम्नलिखित को जोड़ा। आरबी फ़ाइल:

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
   :tls => true,
   :address => "smtp.gmail.com",
   :port => 587,
   :domain => "gmail.com",
   :authentication => :login,
   :user_name => "[username]",
   :password => "[password]"
 }

जवाबों:


208

1. सुनिश्चित करें कि आप Model.devise कॉल में पुष्टिकरण को शामिल करते हैं

class User < ActiveRecord::Base
  devise :database_authenticatable, :confirmable ...
end

2. सुनिश्चित करें कि आप उपयोगकर्ता के प्रवास के लिए पुष्टिकरण जोड़ सकते हैं

create_table :users do |t|
  t.database_authenticatable
  t.confirmable
  ...
end

यदि आप डेविस 2.0+ का उपयोग कर रहे हैं तो यह विफल हो जाता है क्योंकि डेविस अब माइग्रेशन हेल्पर्स प्रदान नहीं करता है, और इसलिए t.confirmableत्रुटि उत्पन्न होती है। इसके बजाय, उनके माइग्रेशन गाइड से "पुष्टि योग्य" लेबल वाले ब्लॉक को कॉपी करें ।

3. निम्नलिखित आदेशों में से किसी एक के साथ, डिविज़ के विचार उत्पन्न करें, ताकि आप डेइस मेलर के विचारों को ओवरराइड कर सकें:

rails generate devise:views # global
rails generate devise:views users # scoped

अब आप में मेलर विचारों ओवरराइड कर सकते हैं devise/mailer/confirmation_instructions.html.erbया users/mailer/confirmation_instructions.html.erbअपने सेटअप के आधार पर

4. के लिए विकास के माहौल में निम्नलिखित config पंक्तियाँ जोड़ें/config/environments/development.rb

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {:address => "localhost", :port => 1025}

5. के लिए उत्पादन वातावरण में /config/environments/production.rbआप निम्नलिखित करने के लिए कुछ इसी तरह का उपयोग कर सकते (मान आप स्थानीय होस्ट पर एक एसएमटीपी सर्वर है: 25):

config.action_mailer.default_url_options = {:host => 'yourdomain.com'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address => "127.0.0.1",
  :port    => 25,
  :domain  => 'yourdomain.com'
}

6 विकास में सेटअप का परीक्षण करने के लिए, मेलकैचर मणि स्थापित करें, जिसे आप विकास में SMTP सर्वर के रूप में उपयोग करेंगे, सभी आने वाले मेलों को पकड़ेंगे और उन्हें प्रदर्शित करेंगे http://localhost:1080/:

gem install mailcatcher

एक बार कमांड के साथ मेलकैचर सर्वर शुरू करें:

mailcatcher

एक खिलौना SMTP सर्वर पोर्ट 1025 ईमेल को पकड़ने और HTTP पोर्ट 1080 पर उन्हें विस्थापित करने पर चल रहा होगा।

अब आप एक खाता बना सकते हैं और पुष्टि देख सकते हैं।


वाह, उस अद्भुत व्यापक उत्तर के लिए धन्यवाद। मुझे यह काम कर रहा है जैसे कि मेल पकड़ने वाला ईमेल को पकड़ रहा है, लेकिन कोई भी ईमेल वास्तव में मेरे इनबॉक्स में दिखाई नहीं देता है। मैंने दो अलग-अलग ईमेल पते आज़माए हैं और दोनों में स्पैम फ़ोल्डर की जाँच की है। क्या यहाँ कुछ ऐसा है जो मुझसे छूट रहा है? (मैं विकास मोड में हूं)।
jyli7

1
विकास में आपको वास्तव में ईमेल को पते तक पहुंचाने की आवश्यकता नहीं है। Mailcatcher का लोकलहोस्ट पर एक वेब इंटरफेस है : 1080 जिसे आप कैच किए गए ईमेल खोल सकते हैं और देख सकते हैं - यही वह बिंदु है, जो विकास में आपके लिए सरल बनाता है। हालाँकि उत्पादन में, आप एक वास्तविक SMTP सर्वर (Google Apps, qmail,
पोस्टफ़िक्स

3
और अपने सर्वर को पुनः आरंभ करने के लिए मत भूलना!
मैट बॉन्ड

10
डेविस 2.0 अब माइग्रेशन हेल्पर्स प्रदान नहीं करता है, और इसलिए t.confirmableएक त्रुटि उठाता है। इसके बजाय, उनके माइग्रेशन गाइड से "कन्फर्मेबल" लेबल वाले ब्लॉक को कॉपी करें: github.com/plataformatec/devise/wiki/…
रॉस एलन

1
बहुत बढ़िया ट्यूटोरियल ... साझा करने के लिए धन्यवाद .. +1 .. यह भी देखने के लायक है कि कैसे: जोड़ें: उपयोगकर्ता पृष्ठ के लिए पुष्टि की जाती है
अरूप रक्षित

7

मेरा मानना ​​है कि आपको इसे एक बार फिर से संपादित करना चाहिए ... पोर्ट नं। उद्धरणों में होना चाहिए .. इस तरह: -

:port => "587",

मैं रेल 3.2.0 / रूबी 1.9.2 में एक समस्या का सामना करना पड़ा


सही बात। या "1025"अगर mailcatcher का उपयोग कर रहा है।
एटिने

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.