2009-03-09 11 views
6

मैं अपने जीमेल ऐप्स के लिए डोमेन खाते के लिए मानक स्वचालित ईमेल (उपयोगकर्ता साइनअप, पासवर्ड भूल गया, नई टिप्पणी के व्यवस्थापक को सूचित करने आदि) के लिए अपने रेल आवेदन के भीतर ईमेल भेजने के लिए उपयोग कर रहा हूं, लेकिन मैं प्रति दिन 500 ईमेल के बारे में चिंतित हूं Google द्वारा निर्धारित सीमा।मैं जीमेल की एसएमटीपी आउटबाउंड भेजने की सीमा के साथ/कैसे काम कर सकता हूं?

Google कई उपयोगकर्ता खातों का उपयोग करने के लिए सीमा को दूर करने का एक तरीका सुझाता है।

इसलिए, मैंने 10 अतिरिक्त जीमेल उपयोगकर्ता खाते (noreply1, noreply2, noreply3, आदि) सेट अप किए हैं - मैं ट्रैक करना चाहता हूं कि इनमें से किसी भी खाते ने 24 घंटे की अवधि में 500 ईमेल भेजे हैं और निष्क्रिय खाते का उपयोग करते हैं तदनुसार।

ActionMailer::Base.smtp_settings में :user_name मान गतिशील रूप से सेट कैसे करें?

यहाँ मेरी मौजूदा सेटअप है - नोट: इस "noreply1" हर बार से भेजता है, भले ही मैं स्पष्ट रूप से सेट कर रहा हूं: user_name और:

--- development.rb --- 
    ActionMailer::Base.delivery_method = :smtp 
    ActionMailer::Base.smtp_settings = { 
     :address => "smtp.gmail.com", 
     :port => "587", 
     :domain => "mydomain.com", 
     :authentication => :plain, 
      :user_name => "[email protected]", 
     :password => "password" 
    } 

--- account.rb --- (MODEL, called via a callback) 
after_create :send_welcome_email 
... 
def send_welcome_email 
    #ActionMailer::Base.smtp_settings[:user_name] = '[email protected]' 
    ActionMailer::Base.smtp_settings.merge!({:user_name => "[email protected]"}) 
    SubscriptionNotifier.deliver_welcome(self) 
end 

--- subscription_notifier.rb --- (MODEL) 
class SubscriptionNotifier < ActionMailer::Base 
    def welcome(account)  
    @sent_on = Time.now 
    @subject = "Welcome to the App" 
    @recipients = account.email 
    @from = "[email protected]" 
    @body = { :account => account } 
    end 
end 
+0

मुझे लगता है कि ActionMailer :: Base.smtp_settings हैश को बदलने का काममाड 3 का विचार सही ट्रैक पर है, मैं सिर्फ यह नहीं समझ सकता कि मेरे गतिशील रूप से सेट किए गए हैश के मानों को फिर से लोड करने के लिए रेल कैसे प्राप्त करें: user_name कुंजी। –

+0

आप रेल का किस संस्करण का उपयोग कर रहे हैं? एक्शनमेलर बदलना :: Base.smtp_settings [: user_name] गतिशील रूप से एक नियंत्रक कार्रवाई में 2.3.2 में मेरे लिए काम करता है। (कम से कम, हैश बदलता है। मैंने मेल भेजने का प्रयास नहीं किया।) –

+0

यह अजीब बात है - हैश कुंजी मान में परिवर्तन होता है, लेकिन ईमेल मूल का उपयोग करके भेजा जाता है: user_name जो मेरे विकास में था। आरबी फ़ाइल –

उत्तर

9

आप अपने सर्वर पर एक एमटीए भी सेट कर सकते हैं और मेल भेजने के लिए इसका उपयोग कर सकते हैं।

हम यही करते हैं।

आपको स्पैम के रूप में चिह्नित होने से बचने के लिए अपने डोमेन के एसपीएफ़ रिकॉर्ड में ईमेल भेजने के लिए एक वैध व्यक्ति के रूप में अपने सर्वर का आईपी जोड़ना होगा।

इसका एक अन्य लाभ यह है कि यदि आप ऐसा करते हैं, तो आप ईमेल के प्रेषक: ईमेल को अपने उपयोगकर्ताओं में से एक के रूप में सेट कर सकते हैं, जिसे आप जीमेल के साथ नहीं कर सकते हैं।

+0

जब कोई आपके द्वारा जीमेल में पंजीकृत "से" पते के साथ भेजे गए ईमेल का जवाब देता है, तो आपको Google से कोई स्पैम समस्या नहीं आ रही है? – pbz

+0

हम्म ... मैंने इसके साथ कोई समस्या नहीं देखी है। हमने एसपीएफ़ में हमारे मेल सर्वर के रूप में आपके डोमेन के लिए Google Apps पंजीकृत किया और फिर एक वैध प्रेषक के रूप में एक और आईपी पता (हमारा सर्वर) भी पंजीकृत किया। –

+0

कृपया इसे कैसे किया जाए इसके बारे में अधिक जानकारी दे सकती है। – Deekor

3

स्टोर एक में उपलब्ध उपयोगकर्ता नाम: "noreply2" से 'अंतिम-संशोधित', 'अंतिम-रीसेट' और एक भेजी गई गणना के साथ डेटाबेस में तालिका। इसके बाद आप वर्तमान में कम से कम उपयोग किए गए ईमेल पते को ढूंढने के लिए ईमेल भेजते समय यह पूछ सकते हैं। फिर भेजे गए गिनती और अंतिम-संशोधित खाते में वृद्धि करें। 'अंतिम-रीसेट' मान का उपयोग आपके क्लीनअप कोड के लिए किया जा सकता है ताकि आप प्रत्येक 24 घंटे की अवधि को गिनती कर सकें।

यह नए ईमेल खातों को जोड़ने, उन खातों को रिटायर करना आसान बनाता है जिन्हें आप अब उपयोग नहीं कर रहे हैं, एक अलग ऐप में लागू करें, क्योंकि यह केवल डेटाबेस तालिका में है जिसे आप आवश्यकतानुसार बदल सकते हैं।

+1

यदि आप इसे लिखते हैं तो एक अच्छी रेल प्लगइन की तरह लगता है! –

+0

धन्यवाद, ईमेल खातों को ट्रैक करने के लिए बहुत उपयोगी तकनीक है, लेकिन मैं विशेष रूप से कोड को सेट करने के लिए कोड ढूंढ रहा था: user_name तत्व एक सामान्य रेल smtp config हैश में। –

+0

ओह, प्रश्न को ठीक से नहीं पढ़ा। मैं वास्तविक समस्या के लिए जो काम करता हूं उसके साथ एक दूसरी प्रतिक्रिया जोड़ूंगा :) @kyle: मैं ऐसा कर सकता हूं ... ऐसा लगता है कि मुझे बहुत आश्चर्यजनक लगता है कि इन लाइनों के साथ पहले से ही कुछ उपलब्ध नहीं है – workmad3

2

आप स्थापित करने के लिए सक्षम होना चाहिए: यद्यपि यह एक मजबूर करने के लिए कुछ अतिरिक्त कोड की आवश्यकता हो सकती

ActionMailer::Base.smtp_settings[:user_name] = 'new_user_name' 

: हैश में user_name तत्व, विन्यास में के रूप में एक ही फैशन में मेलर में अर्थात् करके किसी भी आंतरिक क्रिया मेलर कॉन्फ़िगरेशन का पुनः लोड (यह स्वयं परीक्षण नहीं किया गया)

+0

मैं अंत में इसका परीक्षण करने के लिए चारों ओर मिल गया, लेकिन मैं इसे काम नहीं कर सकता। एक्शनमेलर :: बेस.smtp_settings [: user_name] = 'new_user_name' को नियंत्रक विधि में सेट करना हैश को प्रभावित नहीं करता है। हैश को फिर से लोड करने का कोई विचार है? –

0

टिप्पणी बॉक्स मेरे प्रश्नों के लिए बहुत ही सीमित हो रहा था। ActionMailer::Base.smtp_settings बदलना हैश गतिशील रूप से मेरे लिए अपेक्षित काम करता है, इसलिए मुझे संदेह है कि यहां खेलने पर कुछ और कारक है। कोशिश करने के लिए कुछ चीजें:

  1. क्या आप एक टीएलएस प्लगइन का उपयोग कर रहे हैं? मैंने रेल 2.3.2 और रुबी 1.8.6 के साथ action_mailer_optional_tls का उपयोग किया।
  2. लॉग/कंसोल पर क्या लिखा जा रहा है?
  3. आप उपयोगकर्ता नाम बदल रहे हैं लेकिन पासवर्ड नहीं: क्या सभी नोरली खातों में एक ही पासवर्ड है?

संपादित करें: अधिक चीजों की कोशिश करने

मुझे लगता है कि smtp_tls.rb टिप्पणी में उल्लेख किया है यकीन है कि कुछ भी नहीं करने के लिए फ़ाइल अच्छी तरह से देखने होगा हार्ड-कोडेड है। या इसे हटा दें और ऊपर लिंक किए गए प्लगइन को आजमाएं। इसका उपयोग करने के लिए, आपको smtp_settings हैश में :tls => true जोड़ने की आवश्यकता है।

+0

1. मैं अपनी lib निर्देशिका में smtp_tls.rb का उपयोग कर रहा हूं, लेकिन मुझे ईमानदारी से याद नहीं है कि मुझे कहां से मिला, लेकिन यह जीमेल जुर्माना के साथ मेल भेजता है। मैं action_mailer_optional_tls कोशिश करूंगा - हाँ, रेल 2.3.2, रुबी 1.86 पैच lvl 111 2. कंसोल noreply1 से भेजे गए ईमेल को लॉगिंग कर रहा है 3. हां, सभी पासवर्ड समान हैं –

+0

क्या आप मेरे लिए समान कोड का उपयोग कर रहे हैं? किसी ने हैश को "पुनः लोड करने" का सुझाव दिया, लेकिन मुझे नहीं पता कि यह कैसे करना है। क्या आप सीधे मूल्य निर्धारित कर रहे हैं या मर्ज का उपयोग कर रहे हैं! –

+0

लगभग समान कोड। मैंने मूल्य को सेट करने के साथ-साथ मर्ज करने की कोशिश की !, और दोनों काम करते थे। आपको हैश को "पुनः लोड" करने की आवश्यकता नहीं है: ActionMailer आपके द्वारा प्रदान की जाने वाली एक ही smtp_settings हैश का उपयोग करता है - इसमें कोई आंतरिक कैश नहीं है। –

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