MailSafe Sendgrid

MailSafe Sendgrid adds Sendgrid support to Mail Safe by extending MailSafe::AddressReplacer to check for addresses included in the Sendgrid X-SMTPAPI headers. It automatically removes any offending (i.e., non-internal) addresses and removes the corresponding entries from any Sendgrid substitutions. The addresses that are removed are also passed to Mail Safe's postscript message (along with any :to, :cc, and :bcc addresses that were removed by Mail Safe itself).

Basic usage

If you always want Mail Safe turned on, simply add mail_safe-sendgrid to your Gemfile immediately following mail_safe.

Conditional usage

For a more complicated usage case (i.e., you only want mail_safe turned on in demo environments and not in production) make sure to add

gem "mail_safe", :require => nil
gem "mail_safe-sendgrid", :require => nil

to your Gemfile and then manually require mail_safe and mail_safe-sendgrid after you do your environment checks

module MailSafeFilter
  def self.filter_email_addresses(environment = ['development', 'demo', 'staging'])
    if environment.include? Rails.env
      require 'mail_safe'
      require 'mail_safe-sendgrid'
      default_internal_address = /.*@internal\.com/i

      if defined?(MailSafe::Config)
        MailSafe::Config.internal_address_definition = lambda { |addr|
          addr =~ default_internal_address
        }
        MailSafe::Config.replacement_address = "#{Rails.env}[email protected]"
      end
    end
  end
end
MailSafeFilter.filter_email_addresses

Tests

All code is tested with RSpec. To run the specs, clone the repository, install the dependencies with bundle install, and then run rake.

Issues

If you have any problems or suggestions for the project, please open a GitHub issue.

License

MailSafe Sendgrid is available under the included MIT license.

Acknowledgements

Thank you to Change.org for sponsoring the project.