2010-07-16 17 views
34

मैं अपने उत्पादन सर्वर पर कंसोल से कुछ मेल भेजने की कोशिश कर रहा हूं, और वे बाहर नहीं जा रहे हैं। मैं क्यों काम नहीं कर सकता। मेरे पास sendmail के साथ सिर्फ आपका मानक ईमेल सेटअप है। जब मैं Mailer.deliver_ विधि कॉल मैं इस वापस पाने:रेल कंसोल से ईमेल भेजें

#<TMail::Mail port=#<TMail::StringPort:id=0x3fe1c205dbcc> bodyport=#<TMail::StringPort:id=0x3fe1c2059e00>> 

संपादित करें: कुछ अधिक जानकारी जोड़ा गया:

तो, उदाहरण के लिए, मैं अपने नियंत्रक जब एक नया उपयोगकर्ता साइन अप में इस लाइन है, उन्हें "स्वागत" ईमेल भेजने के लिए:

Mailer.deliver_signup(@user, request.host_with_port, params[:user][:password]) 

यह ठीक काम करता है। मैंने सोचा था कि मैं कंसोल से एक ही बात करने के लिए सक्षम होना चाहिए, जैसे

user = User.find(1) 
Mailer.deliver_signup(user, "mydomainname.com", "password") 

जब मैं ऐसा करते हैं, मैं Tmail प्राप्त :: StringPort वापस आपत्ति है, लेकिन मेल भेजा नहीं गया लगता है (मैं मैं इसका परीक्षण करने के लिए खुद को ईमेल भेजने की कोशिश कर रहा हूं)।

यदि मदद करता है तो मैं एक उबंटू सर्वर पर हूं। धन्यवाद - अधिकतम

+0

आप इंटरनेट से ई-मेल भेजने का प्रयास करते हैं? – txwikinger

+0

यह डिलीवरी विधि के लिए वापसी मूल्य के लिए बहुत मानक है, शायद आपके प्रेषण या गंतव्य ईमेल में कुछ गड़बड़ है। – Karl

उत्तर

16

रेल कंसोल से ईमेल भेजने के लिए हमें पहले इस सेटिंग को कंसोल में एक्शन मेलर सेटिंग्स के लिए निष्पादित करना होगा।

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: 587, 
    domain: 'gmail.com', 
    authentication: 'plain', 
    enable_starttls_auto: true, 
    user_name: '[email protected]', 
    password: 'yourpassword' 
} 

उसके बाद यदि हम ईमेल भेजने कोड निष्पादित करते हैं तो यह ईमेल वितरित करेगा।

UserMailer.activation_instructions(@user).deliver_now 
0

यदि मैं समझता हूं कि आप क्या करने की कोशिश कर रहे हैं तो मैं 100% नहीं हूं।

यदि आप इंटरनेट पर ई-मेल भेजने का प्रयास करते हैं, तो आपके प्रेषण को उन ई-मेल को उचित ई-मेल सर्वर पर अग्रेषित करने के तरीके से कॉन्फ़िगर किया जाना चाहिए। उबंटू के रिलीज के आधार पर आप इसका उपयोग करने के लिए पैकेज को फिर से कॉन्फ़िगर कर सकते हैं।

आप यह भी सोच सकते हैं कि क्या आप sendmail के बजाय procmail का उपयोग करना चाहते हैं।

आप

dpkg-reconfigure sendmail 
उपयोग procmail के

बजाय यदि आप उस पैकेज का उपयोग के साथ ई-मेल विन्यास को पुन: कॉन्फ़िगर कर सकते हैं। कॉन्फ़िगरेशन संवाद आपको कुछ विकल्प देता है जहां आप सभी मेल को उचित ई-मेल सर्वर पर अग्रेषित करने के लिए कॉन्फ़िगर कर सकते हैं। हालांकि, आपको यह सोचने की आवश्यकता है कि आपको प्रमाणीकरण की आवश्यकता है या यदि वह सर्वर आपके सर्वर से ई-मेल स्वीकार करता है।

UserMailer.activation_instructions(@user) 

यह मैं डेटा दिया था, लेकिन ई-मेल भेजने नहीं किया:

+0

हाय - क्षमा करें, मुझे शायद कुछ और विवरण प्रदान करना चाहिए था। मैंने अपनी मूल पोस्ट संपादित की है। –

45

मैं एक रेल 3 एप्लिकेशन मैं कहाँ बुलाया पर आज सुबह एक ऐसी ही समस्या हुई थी। भेजने के लिए, मैंने फोन किया:

UserMailer.activation_instructions(@user).deliver 

यह चाल है। उम्मीद है कि यह आपके लिए भी काम कर सकता है!

+3

मेरे लिए काम नहीं कर रहा है, क्या आपको रेल env को स्पष्ट रूप से सेट करना है, इसलिए यह सही actiomailer पर्यावरण कॉन्फ़िगरेशन को चुनता है? – Rubytastic

60

तेज संस्करण:

ActionMailer::Base.mail(
    from: "[email protected]", 
    to: "[email protected]", 
    subject: "Test", 
    body: "Test" 
).deliver 
+2

यह बेहतर है, हालांकि 'वितरण 'को बहिष्कृत किया गया है और इसे इसके बजाय' delivery_now' का उपयोग करने के लिए प्रोत्साहित किया जाता है। – iamse7en

+0

हालांकि मैं मौजूदा टेम्पलेट का उपयोग कैसे करूं? UserMailer.account_activation ईमेल की तरह .. – sambehera

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