config.action_mailer.asset_host не обслуживает изображения из облачного фронта CDN - PullRequest
1 голос
/ 08 ноября 2019

У меня есть CloudFront CDN, обслуживающий мои ресурсы рельсов. При просмотре источника ресурсов, обслуживаемых через веб-браузер, он правильно указывает на мой CDN. Однако Action Mailer не использует этот путь при обслуживании своих активов.

Почему это может быть?

Вот мой файл environment / production.rb:

 config.action_mailer.perform_caching = false
  config.action_mailer.default_url_options = { host: 'localhost' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.smtp_settings = {
      :address => "email-smtp.us-east-1.amazonaws.com",
      :port => 587,
      :user_name => Figaro.env.smtp_username, #Your SMTP user
      :password => Figaro.env.smtp_password, #Your SMTP password
      :authentication => :login,
      :enable_starttls_auto => true
  }
  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  config.action_controller.asset_host = Figaro.env.cloudfront_endpoint
  config.action_mailer.asset_host = Figaro.env.cloudfront_endpoint

1 Ответ

1 голос
/ 08 ноября 2019

Кажется, вы не устанавливаете правильное значение для config.action_mailer.default_url_options.

Это то, что говорит документация:

В отличие от контроллеров, почтовикЭкземпляр не имеет контекста о входящем запросе, поэтому вам нужно будет указать параметр :host самостоятельно.

Поскольку :host обычно одинаково для всего приложения, вы можете настроить его глобально в config/application.rb

оно должно быть:

config.action_mailer.default_url_options = { host: Figaro.env.cloudfront_endpoint }

Примечание: убедитесь, что вы используете image_url вместо image_path в ваших почтовых представлениях / шаблонах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...