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)
endSendGrid 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"
endNOTE: 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