Integration for Lucky's Carbon email library and SendGrid.
-
Add the dependency to your
shard.yml
:dependencies: carbon_sendgrid_adapter: github: luckyframework/carbon_sendgrid_adapter
-
Run
shards install
Create an environment variable called SEND_GRID_KEY
with your SendGrid api key.
Update your config/email.cr
file to use SendGrid
require "carbon_sendgrid_adapter"
BaseEmail.configure do |settings|
if LuckyEnv.production?
send_grid_key = send_grid_key_from_env
settings.adapter = Carbon::SendGridAdapter.new(api_key: send_grid_key)
else
settings.adapter = Carbon::DevAdapter.new
end
end
private def send_grid_key_from_env
ENV["SEND_GRID_KEY"]? || raise_missing_key_message
end
private def raise_missing_key_message
puts "Missing SEND_GRID_KEY. Set the SEND_GRID_KEY env variable to 'unused' if not sending emails, or set the SEND_GRID_KEY ENV var.".colorize.red
exit(1)
end
SendGrid allows you to use Dynamic Transactional Templates when sending your emails. These templates are designed and created inside of the SendGrid website.
Define a template_id
, and dynamic_template_data
method in your
email class to use the dynamic template.
- Login to SendGrid
- Select Email API > Dynamic Templates
- Create a new template
- Copy the "Template-ID" value for that template.
- Update your email class
# Using built-in templates
class WelcomeEmail < BaseEmail
def initialize(@user : User)
end
to @user
subject "Welcome - Confirm Your Email"
templates html, text
end
# Using dynamic templates
class WelcomeEmail < BaseEmail
def initialize(@user : User)
end
# This must be the String value of your ID
def template_id
"d-12345abcd6543dcbaffeedd1122aabb"
end
# This is optional. Define a Hash with your
# custom handlebars variables
def dynamic_template_data
{
"username" => @user.username,
"confirmEmailUrl" => "https://myapp.com/confirm?token=..."
}
end
to @user
subject "Welcome - Confirm Your Email"
end
NOTE: SendGrid requires you to either define template_id
or use the templates
macro
to generate an email body content.
- Fork it (https://github.com/luckyframework/carbon_sendgrid_adapter/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
- Matthew McGarvey - maintainer