2009-01-23 4 views
23

आप रेल एप्लिकेशन से ईमेल कैसे बनाते और भेजते हैं, जिसमें छवियां और उचित प्रारूपण शामिल है? जैसे आप फेसबुक से प्राप्त करते हैं और पसंद करते हैं।मैं रेल से सीएसएस और छवियों के साथ ईमेल कैसे बना सकता हूं?

+0

क्या मेरा प्रतिक्रिया आपके प्रश्न का उत्तर देती है? –

+0

@bjeanes - मुझे वास्तव में ऐसा करने का समय नहीं मिला क्योंकि मैं किसी और चीज़ के साथ व्यस्त हूं, लेकिन ऐसा लगता है कि आपका समाधान सही लाइनों पर है। धन्यवाद। कोशिश करेंगे और अपडेट करेंगे। – Akshay

उत्तर

31

मान लें कि एक्शनमेलर का उपयोग करके रेल से सामान्य सादा-पाठ ईमेल कैसे भेजना है, HTML ईमेल प्राप्त करने के लिए आपको अपने ईमेल के लिए सामग्री प्रकार सेट करने की आवश्यकता है।

उदाहरण के लिए, अपने notifer इस प्रकार दिखाई देंगे:

class MyMailer < ActionMailer::Base 
    def signup_notification(recipient) 
    recipients recipient.email_address_with_name 
    subject  "New account information" 
    from   "[email protected]" 
    body   :user => recipient 
    content_type "text/html" 
    end 
end 

नोट content_type "text/html" लाइन। यह एक्शनमेलर को डिफ़ॉल्ट text/plain के बजाय text/html की सामग्री प्रकार के साथ एक ईमेल भेजने के लिए कहता है।

अगला आपको अपने मेलर दृश्य आउटपुट HTML बनाना होगा। उदाहरण के लिए, आपके विचार फ़ाइल app/views/my_mailer/signup_notification.html.erb ऐसा दिखाई दे सकता:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <style type="text/css" media="screen"> 
     h3 { color: #f00; } 
     ul { list-style: none; } 
    </style> 
</head> 
<body> 
    <h3>Your account signup details are below</h3> 
    <ul> 
    <li>Name: <%= @user.name %></li> 
    <li>Login: <%= @user.login %></li> 
    <li>E-mail: <%= @user.email_address %></li> 
    </ul> 
</body> 
</html> 

आप देख सकते हैं HTML दृश्य बुनियादी शैलियों को परिभाषित करने के लिए एक <style> टैग शामिल कर सकते हैं। सभी HTML और CSS समर्थित नहीं हैं, खासकर सभी मेल क्लाइंट में, लेकिन आपको निश्चित रूप से टेक्स्ट शैलियों पर पर्याप्त स्वरूपण नियंत्रण होना चाहिए।

यदि आप संलग्न ईमेल प्रदर्शित करने की योजना बना रहे हैं तो छवियों को एम्बेड करना थोड़ा सा चालक है। यदि आप बाहरी साइटों से ईमेल भी शामिल कर रहे हैं, तो आप आमतौर पर HTML में <img /> टैग का उपयोग कर सकते हैं। हालांकि, कई मेल क्लाइंट इन छवियों को प्रदर्शित होने से अवरुद्ध कर देंगे जब तक कि उपयोगकर्ता इसे अधिकृत न करे। यदि आपको संलग्न छवियों को प्रदर्शित करने की आवश्यकता है, तो रेल प्लग-इन Inline Attachments एक लायक हो सकता है।

रेल मेलिंग समर्थन के बारे में अधिक जानकारी के लिए, ActionMailer documentation एक महान संसाधन

+8

बस एक नोट: जीमेल ** ** बाहरी सीएसएस का समर्थन नहीं करेगा। यदि आप जीमेल में सीएसएस को सही तरीके से प्रदर्शित करना चाहते हैं तो आपको इनलाइन शैलियों जैसे '

text
' का उपयोग करना होगा। – sscirrus

+2

आप रोडी का उपयोग करके शैलियों को स्वचालित रूप से इनलाइन कर सकते हैं: https://github.com/Mange/roadie –

+1

प्रीमेलर मणि इनलाइनिंग के लिए भी बहुत अच्छा है शैलियों। इनलाइन_css नामक एक मणि भी है जो प्रीमेलर का उपयोग करता है ताकि इसे आपके ईमेल टेम्पलेट्स/लेआउट में उपयोग करना बहुत आसान हो सके। – scottwb

1

है छवियों के लिए आप बस सामान्य image_tag सहायक का उपयोग कर सकते करने के बाद आप ActionMailer::Base.asset_host = 'http://www.your-domain.com'

मैं पेपरक्लिप का उपयोग अपनी छवियों को स्टोर करने को परिभाषित किया है इसलिए मेरे मामले में मैं इसका उपयोग कर एक ईमेल में एक छवि जोड़ सकता हूं।

image_tag result.photo.url(:small) 
+0

यह अब 'config.action_mailer.asset_host' है – elsurudo

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