আমি কীভাবে রেলগুলিতে ইমেলগুলি প্রাকদর্শন করব?


116

এটি মূ question় প্রশ্ন হতে পারে তবে আমি যখন কারাগুলিতে এইচটিএমএল ইমেল একসাথে রাখছি তখন ব্রাউজারে টেমপ্লেটটির পূর্বরূপ দেখার জন্য বিশেষভাবে অন্তর্নিহিত কোনও উপায় আছে বা আমার কী ধরণের কাস্টম নিয়ামক লিখতে হবে যা এটি টানবে? তার মতামত হিসাবে?


2
স্পষ্টত কোনও বোবা প্রশ্ন নেই: ডি
ন্যাগোড

উত্তর:


133

অ্যাকশন মেইলারের এখন রেল ৪.১ এ ইমেলগুলির পূর্বরূপ দেখার ক্ষেত্রে একটি বিল্ট রয়েছে । উদাহরণস্বরূপ, এটি পরীক্ষা করে দেখুন:

# located in test/mailers/previews/notifier_mailer_preview.rb

class NotifierPreview < ActionMailer::Preview
  # Accessible from http://localhost:3000/rails/mailers/notifier/welcome
  def welcome
    Notifier.welcome(User.first)
  end
end

5
@ এন্ড্রেস খুব নিশ্চিত যে এটি ডিজাইনের দ্বারা - আপনি চান না যে ব্যবহারকারীরা আপনার মেইলকে প্রোডাকশন সার্ভারগুলিতে প্রাকদর্শন করুন, এটি কেবল স্থানীয় উন্নয়নের জন্য for
২৪

1
@ পাওয়ার্ড এবং যদি আমি চাই যে ব্যবহারকারীরা যে মেলগুলি প্রেরণ করতে চলেছেন তাদের প্রাকদর্শন / সংশোধন করতে সক্ষম হন? (উদাঃ: একজন পরিচালক কোনও ব্যবহারকারী অ্যাপ্লিকেশন প্রত্যাখ্যান করেছেন, এবং আবেদনকারীকে সতর্ক করার জন্য একটি ইমেল প্রেরণ করা হয়েছে)
সিরিল ডুচন-ডরিস

2
@ ক্যারিলডিডি আপনার নিজের মতো করে কিছু তৈরি করতে হবে, আমি মনে করি না যে এই কাজের জন্য এটি হাতিয়ার হবে।
বেনজামিনজোসেফউ


8
আপনি যদি আরএসপেক ব্যবহার করছেন তবে আপনার পূর্বরূপগুলি যেতে হবেspec/mailers/previews
ড্রু স্টিফেন্স

73

ড্যানিয়েলের উত্তরটি একটি ভাল শুরু, তবে যদি আপনার ইমেল টেমপ্লেটগুলিতে কোনও গতিশীল ডেটা থাকে তবে এটি কার্যকর হবে না। যেমন ধরুন আপনার ইমেলটি অর্ডার রসিদ এবং এর মধ্যে আপনি মুদ্রণ করেছেন @order.total_price- পূর্ববর্তী পদ্ধতিটি ব্যবহার করে @orderচলকটি শূন্য হবে।

এখানে আমি ব্যবহার করি একটি ছোট রেসিপি:

প্রথমত, যেহেতু এই ইমেল প্রাকদর্শন কার্যকারিতাটি কেবলমাত্র অভ্যন্তরীণ ব্যবহারের জন্য, তাই আমি প্রশাসকের নেমস্পেসে কিছু জেনেরিক রুট সেট আপ করেছি:

#routes.rb

MySite::Application.routes.draw do
  namespace :admin do
    match 'mailer(/:action(/:id(.:format)))' => 'mailer#:action'
  end
end

এরপরে, আমি কন্ট্রোলার তৈরি করি। এই নিয়ামকটিতে, আমি প্রতি ইমেল টেমপ্লেটগুলিতে একটি পদ্ধতি তৈরি করি। যেহেতু বেশিরভাগ ইমেলগুলিতে ডায়নামিক ডেটা থাকে তাই আমাদের সদস্য যে পরিবর্তনশীল টেমপ্লেটটি প্রত্যাশা করে তা তৈরি করা দরকার।

এটি ফিক্সচারগুলির সাহায্যে করা যেতে পারে তবে আমি সাধারণত কিছু ছদ্ম-এলোমেলো বাস্তব ডেটা গ্রহণ করতে পছন্দ করি। মনে রাখবেন - এটি কোনও ইউনিট পরীক্ষা নয় - এটি নিখুঁতভাবে একটি উন্নয়ন সহায়তা। এটি প্রতি একক সময় একই ফলাফল উত্পাদন করার প্রয়োজন হয় না - আসলে - এটি না হলে সম্ভবত এটি আরও ভাল!

#app/controllers/admin/mailer_controller.rb
class Admin::MailerController < Admin::ApplicationController

  def preview_welcome()
    @user = User.last
    render :file => 'mailer/welcome.html.erb', :layout => 'mailer'
  end

end

নোট করুন যে আমরা যখন টেম্পলেটটি রেন্ডার করি তখন আমরা ব্যবহার করি layout=>:mailer। এটি আপনার আদর্শ ওয়েব অ্যাপ্লিকেশন বিন্যাসের (উদাহরণস্বরূপ application.html.erb) অভ্যন্তরের পরিবর্তে তৈরি হওয়া HTML ইমেল লেআউটের অভ্যন্তরে আপনার ইমেলের মূল অংশ এম্বেড করে ।

এবং thats প্রায় কাছাকাছি এটি. এখন আমি আমার স্বাগত ইমেল টেমপ্লেটে পরিবর্তনের প্রাকদর্শন করতে http://example.com/admin/mailer/preview_welcome দেখতে যেতে পারি।


এটি আপনার বাস্তব উত্তরটি পড়তে শুরু করার সাথে সাথে ঠিকঠাক পদ্ধতিটিই নিয়েছিলাম - ধন্যবাদ আপনাকে :)
পিটার নিক্সে

দুর্দান্ত উত্তর! ঠিক আমার কী দরকার!
কুলগার

এখন এটি একটি সুস্বাদু রেসিপি! মহান উত্তরের জন্য ধন্যবাদ!
রব কুপার

এটি একটি দুর্দান্ত উত্তর! ধন্যবাদ!
OzBandit

5
রুটের get 'mailer...পরিবর্তে এখনই হওয়া উচিত match
প্যাট্রিক বার্কলে

18

37 সিগন্যালের নিজস্ব মেইল ​​পরীক্ষার মণিও রয়েছে যা মেল_ভিউ বলে । এটা বেশ চমত্কার।


সমস্যা নেই. আপনি কোন উপায়ে ব্যবহার শেষ করেছেন?
মার্ক

ব্যাক যখন আমি এটি পোস্ট করেছি তখন আমি নিজেই লিখেছি এমন একটি কাস্টম নিয়ামক দিয়ে সমস্যাটি সমাধান করেছি তবে খুব শীঘ্রই এটি আবার হিট করতে চলেছে তাই এটি নিয়ে পরীক্ষা-নিরীক্ষা করা হবে
পিটার নিক্সে

16

আমি দেখেছি সবচেয়ে সহজ সেটআপ হ'ল মেলগ্যাচার । সেটআপটি 2 মিনিট সময় নিয়েছে এবং এটি বক্সের বাইরে নতুন মেলারের পক্ষে কাজ করে।


এটি আসলে দুর্দান্ত। সেটআপটি খুব দ্রুত এবং সমস্ত মেলারের পক্ষে কাজ করে! দুর্দান্ত টিপ!
REPT


5

আমি সম্প্রতি ব্রাউজারের মাধ্যমে অ্যাপ্লিকেশন ইমেলগুলির পূর্বরূপ, সম্পাদনা (টেমপ্লেট ফাইল) সরবরাহ করতে এবং মাইলি নামে একটি রত্ন লিখেছি । এটি ডেটা হুক করার একটি বন্ধুত্বপূর্ণ উপায়, একটি নমনীয় অনুমোদন সিস্টেম এবং একটি ন্যূনতম লিখিত UI সরবরাহ করে।

আমি অদূর ভবিষ্যতে নতুন বৈশিষ্ট্য যুক্ত করার পরিকল্পনা করেছি, যেমন:

  • ইমেল প্রতি একাধিক হুক
  • UI- এর মাধ্যমে ইমেলগুলি প্যারামিট্রাইজ করুন (মেলার পদ্ধতির যুক্তি)
  • অনুবাদ কী সহ খেলুন (তালিকা, হাইলাইট, ...)

আমি আশা করি এটি আপনাকে সহায়তা করতে পারে।


4

আপনি রেল ইমেল পূর্বরূপ ব্যবহার করতে পারেন

রেল-ইমেল-প্রাকদর্শন স্ক্রিনশট

REP একটি প্রাকদর্শন এবং পরীক্ষা পাঠাতে ইমেল ইঞ্জিন পাগল, i18n সমর্থন, সহজ premailer ইন্টিগ্রেশন, এবং ঐচ্ছিক, CMS সাথে একসঙ্গে সম্পাদন সাথে আছেন comfortable_mexican_sofa


আরইপি এবং সিএমএস সংহত করার জন্য কীভাবে কোনও নমুনা রয়েছে?
ড্যানিয়েলডেখেয়

আমি কোনও ডেমো অ্যাপ্লিকেশন সম্পর্কে জানি না, তবে উইকিতে
glebm

4

railsআপনি যদি ব্যবহার করেন তবে একটি মেল পূর্বরূপ উত্পন্ন করে rails g mailer CustomMailer। আপনি ফোল্ডারের CustomMailerPreviewভিতরে একটি ফাইল পাবেন spec/mailers/previews

এখানে আপনি আপনার পদ্ধতিটি লিখতে পারেন যা মেলাকে কল করবে এবং এটি একটি পূর্বরূপ তৈরি করবে।

প্রাক্তন জন্য -

class CustomMailerPreview < ActionMailer::Preview
  def contact_us_mail_preview
    CustomMailer.my_mail(user: User.first)
  end
end

সমস্ত ইমেলগুলি HTTP: // লোকালহোস্ট: 3000 / রেল / মেলার / কাস্টম_মেলারে পূর্বরূপ দেখুন


আরএসপেকের সাথে আমার অ্যাপের জন্য আমি যুক্ত করেছি config.action_mailer.preview_path = "#{Rails.root}/spec/mailers/previews"
মাউরো

3

রেলগুলি ইমেল পূর্বরূপ আমাদের দ্রুত ওয়েব ব্রাউজারে ইমেলটি বিকাশ মোডে দেখতে সহায়তা করে।

1) “gem ‘rails_email_preview’, ‘~> 0.2.29’ “জহরত ফাইল যোগ করুন এবং বান্ডিল ইনস্টল।

2) “rails g rails_email_preview:install”এটি কনফিগার ফোল্ডারে আরম্ভের রুটগুলিতে আরম্ভকারী তৈরি করে চালান ।

3) “rails g rails_email_preview:update_previews”অ্যাপ ডিরেক্টরিতে এই ক্রেটগুলি মাইলার_প্রিভিউ ফোল্ডারটি চালান ।

জেনারেটর আপনার ইমেলগুলির প্রতিটিতে একটি স্টাব যুক্ত করবে, তারপরে আপনি মক ডেটার সাহায্যে স্টাবকে তৈরি করুন।

উদা:

class UserMailerPreview
def invitation
UserMailer.invitation mock_user(‘Alice’), mock_user(‘Bob’)
end
def welcome
UserMailer.welcome mock_user
end
private
def mock_user(name = Bill Gates’)
fake_id User.new(name: name, email: user#{rand 100}@test.com”)
end
def fake_id(obj)
obj.define_singleton_method(:id) { 123 + rand(100) }
obj
end
end

৪) অনুসন্ধান ক্যোয়ারীর প্যারামিটারগুলি ক্লাসের পূর্বরূপের জন্য উদাহরণ পরিবর্তনযোগ্য হিসাবে উপলভ্য হবে। উদাহরণস্বরূপ: আমাদের মতো ইউআরএল থাকলে এটির “/emails/user_mailer_preview-welcome?user_id=1” @user_idস্বাগত পদ্ধতিতে সংজ্ঞায়িত করা হয় তবে UserMailerPreviewএটি আমাদের নির্দিষ্ট ব্যবহারকারীর কাছে মেল প্রেরণে সহায়তা করে।

class UserMailerPreview
def welcome
user = @user_id ? User.find(@user_id) : mock_user
UserMailer.welcome(user)
end
end

5) আরইপি ইউআরএল এর মত অ্যাক্সেস করতে

rails_email_preview.rep_root_url
rails_email_preview.rep_emails_url
rails_email_preview.rep_email_url(‘user_mailer-welcome’)

)) আমরা আরইপি এর মাধ্যমে ইমেল প্রেরণ করতে পারি, এটি পরিবেশ মেলারের সেটিংস ব্যবহার করবে। পরীক্ষার পরিবেশে মেইল ​​প্রেরণ নিষ্ক্রিয় করার জন্য এই লাইনটি আরম্ভকারীটিতে মন্তব্য করুন।

config.enable_send_email = false

উত্স: রেলকর্মা ব্লগ : মেল_ভিউ রত্নের সাহায্যে রেল অ্যাপ্লিকেশনগুলিতে ইমেলগুলির পূর্বরূপ


3

আমি অবাক হয়েছি কারও উল্লিখিত চিঠি_পেনার নেই । এটি এমন এক মণি যা যখন কোনও ইমেল ডেভেল হয়ে যায় তখন ব্রাউজার পৃষ্ঠা হিসাবে ইমেলগুলি রেন্ডার করে এবং খুলবে।


1
লেটার_পেনার একটি দুর্দান্ত রত্ন এবং এটি অবশ্যই থাকা উচিত। তবে কখনও কখনও মেলটি সেই বিশেষ ইভেন্ট থেকে শুরু হয় যা আপনি মেলটির এইচটিএমএল / সিএসএস নিখুঁতভাবে পরীক্ষা করতে খেলতে এড়াতে চান।
মাউরো

2

এটিকে সরাসরি মেলারের বাইরে প্রাকদর্শন করার কোনও উপায় নেই। তবে আপনি যেমন লিখেছেন, আপনি একটি কন্ট্রোলারও লিখতে পারেন যা দেখতে এরকম কিছু দেখাচ্ছে।

class EmailPreviewsControllers < ActionController::Base
  def show
    render "#{params[:mailer]}_mailer/#{params[:method]}"
  end
end

তবে আমি মনে করি, ইমেলগুলি সঠিকভাবে দেখলে এটি পরীক্ষা করার সর্বোত্তম উপায় নয়।


3
render "#{params[:mailer]}_mailer/#{params[:method]}", :layout => 'mailer'আপনি নিজের অ্যাপ্লিকেশানের জন্য তৈরি HTML ইমেল বিন্যাসের অভ্যন্তরে ইমেলের মূল অংশ এম্বেড করবেন।
ডেক্সটার

এর জন্য ধন্যবাদ - আমি ব্রাউজারের সামঞ্জস্যতা ডাবল-চেক করতে চাই না, আমি এটি আলাদাভাবে বিবেচনা করব, আমি কেবল জিনিসটি দ্রুত আউট করতে এবং এটির
চেহারাটি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.