2015-06-23 19 views
7

मेरे प्रशिक्षण के दौरान, मैं एक वेबसाइट पर काम कर रहा हूं और हम रूबी पर रूबी का उपयोग करते हैं। हमें उपयोगकर्ताओं को मेल भेजने की जरूरत है इसलिए मैंने एक मेलर बनाया।कनेक्शन से इनकार कर दिया - "लोकलहोस्ट" पोर्ट के लिए कनेक्ट (2) 25 रेल

मैं दोनों development.rb और environment.rb

config.action_mailer.default_url_options = {host: '0.0.0.0:3000'} 
config.action_mailer.default charset: 'utf-8' 
config.action_mailer.delivery_method = 'smtp' 
config.action_mailer.perform_deliveries = true 
config.action_mailer.smtp_settings = { 
    adress: $SMTP_SERVER, 
    port: $PORT, 
    from: $MAIL, 

    enable_starttls_auto: true 
    #authentication: 'login' 
} 

यह मुझसे कहता है कि त्रुटि इस विधि लाइन 6

def create 
    @user = User.new(user_params) 

    respond_to do |format| 
    if @user.save 
     # Tell the UserMailer to send a welcome Email after save 
     UserMailer.welcome_email(@user).deliver_now 

     format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
     format.json { render :json => @user, :status => :created, :location => @user } 
    else 
     format.html { render :action => "new" } 
     format.json { render :json => @user.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

मैं 587 लेकिन करने के लिए बंदरगाह की स्थापना की है से आता है में smtp डाल करने की कोशिश की है मुझे त्रुटि मिल रही है:

Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 25

ऐसा लगता है कि एक और फाइल मेरी सेटिंग्स को ओवरराइट कर रही थी। मैंने यह भी देखा कि यह मेरे एसएसएच कुंजी से संबंधित हो सकता है जो सर्वर द्वारा अधिकृत नहीं है।

पता है कि क्या गलत है?

अग्रिम

उत्तर

8

सबसे पहले धन्यवाद, जब पर विकासशील स्थानीय होस्ट, यह आम नहीं करने के लिए वास्तव में, मेल बाहर भेजने के बजाय इलाज के लिए है कि एक तैनाती विस्तार के रूप में और रेल डिफ़ॉल्ट व्यवहार थूक करने के लिए है, जिसके साथ चिपके रहते हैं कंसोल STDOUT में मेल हेडर और सामग्री को बाहर निकालें (जहां आप सत्यापित कर सकते हैं कि टेक्स्ट सही दिखता है)। क्या कोई विशिष्ट कारण है कि आपको देव पर्यावरण में संदेश भेजने का परीक्षण करने की आवश्यकता क्यों है?

दूसरा, आपने बताया कि आपने SMTP सेटिंग्स को develop.rb और environment.rb दोनों में सेट किया है। आपको इन सेटिंग्स को दो बार सेट करने की आवश्यकता नहीं है; सामान्य रूप से मैं देव पर्यावरण के लिए विशिष्ट सेटिंग्स के लिए development.rb का उपयोग करता हूं, और केवल environment.rb केवल उन सेटिंग्स के लिए उपयोग करता हूं जो हमेशा सभी वातावरण (देव, परीक्षण, और लाइव तैनात सर्वर पर) पर लागू होते हैं। तो यदि आप विकास.आरबी और पर्यावरण.आरबी दोनों में एक ही सेटिंग सेट कर रहे हैं, तो मैं एक या दूसरे को हटाकर शुरू करूंगा; अनावश्यकता केवल आपके काम को सड़क से कड़ी कर देगी।

अंत में, समस्या निवारण के लिए मैं रेल से पूछता हूं कि मेल डिलीवरी विफल होने की प्रतीक्षा करने के बजाय इसकी सेटिंग्स क्या हैं। निम्नलिखित का प्रयास करें:

  • प्रारंभ अप rails console
  • Rails.configuration.action_mailer.smtp_settings दर्ज करें और अपनी उम्मीदों के खिलाफ जिसके परिणामस्वरूप हैश की तुलना करें। इस हैश में पोर्ट और डोमेन सेटिंग्स शामिल होनी चाहिए जो सभी मेल (वर्तमान वातावरण में) भेजते समय उपयोग की जाती हैं, इसलिए यदि एक्शनमेलर गलत पोर्ट का प्रयास कर रहा है तो मुझे उम्मीद है कि बंदरगाह भी गलत हो जाएगा।

आप कहाँ $SMTP_SERVER, $PORT और $MAIL की स्थापना कर रहे हैं? क्या कोई कारण है कि आप पर्यावरण चर के लिए रेल के सम्मेलन का उपयोग नहीं कर रहे हैं, ENV['SMTP_SERVER'] इत्यादि?

आशा है कि इनमें से कुछ मदद करता है। सौभाग्य!

+0

अपने जवाब के लिए धन्यवाद का प्रतीक है। मैं यह समझने के लिए संदेशों को भेजने का परीक्षण करना चाहता हूं कि यह कैसे काम करता है (मैं रेल पर रूबी के साथ नया हूं) और मैं यह सुनिश्चित करना चाहता हूं कि यह सही तरीके से काम करे क्योंकि मैं इस परियोजना पर अकेला नहीं हूं और मैं सब कुछ तोड़ना नहीं चाहता हूं। मुझे पता चला कि समस्या विश्वविद्यालय के वाईफाई से आई है जिसने मुझे एसएमटीपी तक पहुंचने की अनुमति नहीं दी। – TheLittleBibi

+0

ठीक है, ठीक लगता है। लेकिन बस स्पष्ट होने के लिए, मेरी धारणा रेल है मानती है कि आपको विकास मोड में संदेश भेजने की परवाह नहीं है; यह संदेश की सामग्री को सत्यापित करना आसान बनाता है लेकिन एसएमटीपी कनेक्शन से कम रोकता है, जिसे आमतौर पर तैनाती और सर्वर कॉन्फ़िगरेशन विवरण के रूप में माना जाता है (रेल ऐप कोड का हिस्सा नहीं)। –

+1

मेरी समस्या अब हल हो गई है, प्रभारी व्यक्ति ने वाईफाई तय की है और फिर मुझे एक और त्रुटि मिली क्योंकि मैंने 'smtp'' 'smtp 'लिखा था। – TheLittleBibi

1

config.action_mailer.delivery_method = 'smtp' 

की जगह

config.action_mailer.delivery_method = :smtp 

के साथ अपने Rails.configuration.action_mailer.smtp_settings सुनिश्चित कुंजी

+0

या इसे पूरी तरह से हटाएं ': smtp' अब डिफ़ॉल्ट है – lulalala

संबंधित मुद्दे

 संबंधित मुद्दे