كيفية إرسال عناوين url في رسائل البريد الإلكتروني الخاصة البيئة ؟

StackOverflow https://stackoverflow.com/questions/662708

  •  20-08-2019
  •  | 
  •  

سؤال

استخدام التعليمات البرمجية التي تم إنشاؤها بواسطة restful_authentication ، ونحن عادة الحصول على 'localhost' كما URL في تسجيل و تفعيل الرسائل.أنا في محاولة لخلق شيء مثل هذا بدلا من ذلك:

def signup_notification(user, host)
  setup_email(user)
  @subject    += 'Please activate your new account'

  @body[:url]  = "http://#{host}/activate/#{user.activation_code}"
end

ومع ذلك ، منذ الفعلية الدعوة إلى تسليم البريد في مراقب, لا أستطيع فعل هذا:

UserMailer.deliver_signup_notification(user, request.host_with_port)

منذ طريقة الطلب غير متوفر في النماذج.ما هي أفضل طريقة للذهاب عن فعل هذا ؟

فكرت في تخزين عناوين المواقع في المجال في YAML الملف ثم تحميلها عند بدء التشغيل ولكن بعد ذلك الموانئ قد تتغير ، لذا فإنه لن يعمل.

بدلا من ذلك, فكرت في خلق فئة ثابتة متغيرة في مكان ما أن يتم تعيين عند تحميل التطبيق ، ولكن لا أعرف كيفية التوجه نحو القيام بذلك.هو طريقة طلب المتاحة المهيآت?

هل كانت مفيدة؟

المحلول

ومحاولة current_request المساعد، وصفت في http://codeshooter.wordpress.com/2009/08/

وعملت بالنسبة لي

نصائح أخرى

وعن طريق ActiveMailer، أنا وضعت هذا في config/envrionments/production.rb

config.action_mailer.default_url_options = { :host => "my.host.com" }

في لapp/models/event_mailer.rb نموذج

def new_event(event)
    recipients  EventMailer::NO_REPLY
    bcc         event.emails('new_event')
    from        EventMailer::FROM_EMAIL
    subject     "#{EventMailer::SUBJECT_HEADER} Event Updated :: #{event.title}"
    content_type    "text/plain"
    body        :event => event
end

وبعد ذلك في الارسال عرض app/views/event_mailer/new_event.rb

You can view the event by going to: <%= url_for(:controller => "events", :action => "show", :id => @event.id, :only_path => false) %>

والذي يولد في البريد:

You can view the event by going to: http://my.host.com/events/11

لدي نفس المشكلة أيضا و هذا ما قمت به

  1. في نموذج المستخدم إضافة :تستضيف attr_accessible ، ثم أضيف هذه الطريقة

    def host=(value)
      write_attribute :host, value
    end
    
  2. في المستخدم التحكم في الأساليب التي ترسل البريد الإلكتروني مثل إنشاء وتفعيل وضعت

    @user.host = request.host_with_port

منذ مازلت مستجد على القضبان لذلك أنا آمل حقا شخص ما سوف يأتي مع أفضل الممارسات حل لهذه المشكلة.

ويتم الوصول إلى اسم المضيف الخادم الخاص بك عن طريق وجدت في رأس المضيف الطلب. يجب أن لا يكون الوصول إليها في النماذج (على افتراض القضبان غير عاقل). ولكن إذا كنت تستطيع الوصول إلى الكائنات طلب في وحدات تحكم يمكنك إدراج تلك القيمة إلى حقل النموذج الخاص بك عند سحب الكائنات نموذج من ديسيبل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top