A library to send emails from your Crystal application.
Add this to your application's shard.yml
:
dependencies:
quartz_mailer:
github: amberframework/quartz-mailer
require "quartz_mailer"
The mailer has the ability to set the from
, to
, cc
, bcc
, and subject
as well as both text
and html
body formats. You can also add custom headers using header
method.
A render
helper provides friendly markup rendering with jeromegn/kilt.
class WelcomeMailer < Quartz::Composer
def sender
address email: "info@amberframework.org", name: "Amber"
end
def initialize(name : String, email : String)
to name: name, email: email # Can be called multiple times to add more recipients
subject "Welcome to Amber"
header "X-Custom-Header", "value" # Can be called multiple times to add more custom headers
text render("mailers/welcome_mailer.text.ecr")
html render("mailers/welcome_mailer.html.slang", "mailer-layout.html.slang")
end
end
To deliver a new email:
WelcomeMailer.new(name, email).deliver
To remove a recipient:
remove_to_recipient email: "to@foobar.com"
remove_cc_recipient email: "cc@foobar.com"
remove_bcc_recipient email: "bcc@foobar.com"
class MultipleRecipientMailer < Quartz::Composer
def sender
address email: "info@amberframework.org", name: "Amber"
end
def initialize(to_emails : Array(String), cc_emails = [] of String, bcc_emails = [] of String, headers = {} of String => String)
to_emails.each do |email|
to email
end
cc_emails.each do |email|
cc email
end
bcc_emails.each do |email|
bcc email
end
headers.each do |name, value|
header name, value
end
subject "Welcome to Amber"
text render("mailers/welcome_mailer.text.ecr")
html render("mailers/welcome_mailer.html.slang", "mailer-layout.html.slang")
end
end
MultipleRecipientMailer.new(email_addrs, cc_email_addrs, bcc_email_addrs).deliver
- Fork it ( https://github.com/amber-crystal/quartz-mailer/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request