SendPulse SMTP — Implementation

Scope: SendPulse SMTP for transactional email delivery in production Tests: All passing (0 failures, 0 errors)


1. Configuration Files

Modified: config/environments/production.rb

SendPulse SMTP settings:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: Rails.application.credentials.dig(:sendpulse, :smtp_address) || "smtp-pulse.com",
  port: Rails.application.credentials.dig(:sendpulse, :smtp_port) || 587,
  user_name: Rails.application.credentials.dig(:sendpulse, :smtp_username),
  password: Rails.application.credentials.dig(:sendpulse, :smtp_password),
  authentication: "plain",
  enable_starttls_auto: true
}

Default URL Options:

config.action_mailer.default_url_options = { host: ENV.fetch("APP_HOST", "example.com"), protocol: "https" }

2. Initializers

Modified: config/initializers/devise.rb

Mailer sender: Now reads from ENV["MAILER_SENDER"] with fallback to settings.yml:

config.mailer_sender = ENV.fetch("MAILER_SENDER") {
  settings.dig("mailer", "from") || "[email protected]"
}

3. Summary of Files

Modified Files (2)

File Changes
config/environments/production.rb SendPulse SMTP settings, default URL options
config/initializers/devise.rb ENV-based mailer_sender with fallback

Note: No new gems, models, or controllers are needed. SendPulse SMTP is purely a configuration change. Development continues to use letter_opener or the default local delivery.