Carbon SendGrid Adapter
Integration for Lucky's Carbon email library and SendGrid.
Installation
- 
Add the dependency to your
shard.yml:dependencies: carbon_sendgrid_adapter: github: luckyframework/carbon_sendgrid_adapter - 
Run
shards install 
Usage
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
Sending Dynamic Template emails
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.
Contributing
- 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
 
Contributors
- Matthew McGarvey - maintainer