Cells::Mailer
Provides mail functionality for Cells via the Mail gem.
Installation
Add this line to your application's Gemfile:
gem 'cells-mailer'And then execute:
$ bundle
Configuration
Global configuration
Cell::Mailer.configure do
to "nick@trailblazer.to"
from "timo@schilling.io"
subject "Nick ruls!"
mail_options deliver_method: :smtp
endmail_options will be passed to the Mail gem, for details take a look on the Mail gem.
Context configuration
See next chapter.
Usage
class UserNotificationCell < Cell::ViewModel
include Cell::Mailer
property :user_name
def show
"Hello #{user_name}"
end
end
UserNotificationCell.(user).deliver(from: "foo@example.com", to: user.email, subject: "Hello")Body
Equal to Cells, you can deliver (render) different states of your Cell:
class UserNotificationCell < Cell::ViewModel
include Cell::Mailer
property :user_name
def welcome
"Hello #{user_name}"
end
end
UserNotificationCell.(user).deliver(..., method: :welcome)I don't know why you should use it, but you can also pass in a body as argument.
UserNotificationCell.(user).deliver(..., body: "Hello user")Instance method arguments
You can use instance methods to receive the value for to, from and subject.
class UserNotificationCell < Cell::ViewModel
include Cell::Mailer
property :user_name
def subject
"Hello #{user_name}"
end
end
UserNotificationCell.(user).deliver(..., subject: :subject)Class level configurations
You can use class level configurations for to, from, subject and mail_options.
mail_options are passed to Mail, could be used to configure Mail#delivery_method per Cell class.
class UserNotificationCell < Cell::ViewModel
include Cell::Mailer
mailer do
from "nick@trailblazer.to"
subject "nick loves good code!"
mail_options delivery_method: :smtp
format :html # or :text
end
end
UserNotificationCell.(user).deliver(to: "timo@schilling.io")This configurations will be inherited.
Roadmap
- multipart emails
- attachments