Как мне настроить Rails, чтобы отключить отправку реальных писем во время постановки? - PullRequest
8 голосов
/ 17 июня 2010

Я на Heroku, и письма не отправляются в процессе разработки, а отправляются должным образом в процессе производства. Я хотел бы запустить отдельную инсценировку на Heroku, но не хочу, чтобы электронные письма отправлялись (просто в журнал).

Ответы [ 7 ]

17 голосов
/ 17 июня 2010

Эта строка в test.rb указывает ActionMailer не отправлять электронные письма:

config.action_mailer.delivery_method = :test

Вместо этого они накапливаются в массиве ActionMailer :: Base.deliveries.

Вам потребуется настроить промежуточную среду для вашего приложения и настроить Heroku для использования этой среды в вашем промежуточном экземпляре.

12 голосов
/ 09 февраля 2012

Приложения, использующие гем Mail (включая проекты rails> = 3.0), могут использовать гем safety_mailer.Укажите домен (или набор доменов, или магическое слово в адресе электронной почты), на который разрешено отправлять электронную почту, и электронная почта на все остальные домены автоматически отбрасывается.

https://github.com/cluesque/safety_mailer

Добавьтеgem к вашему Gemfile, указав группы (вероятно, не производственные) для включения в него.

gem "safety_mailer", :group => :development

Не забудьте bundle install установить

В вашем файле среды config/environments/development.rb настройте его и некоторые регулярные выражения.

config.action_mailer.delivery_method = :safety_mailer
config.action_mailer.safety_mailer_settings = {
  allowed_matchers: [ /mydomain.com/, /mytestacct@gmail.com/, /super_secret_test/ ],
  delivery_method: :smtp,
  delivery_method_settings: {
    :address => "smtp.mydomain.com",
    :port => 25,
    :domain => "mydomain.com",
    :authentication => :plain,
    :user_name => "mydomain_mailer@mydomain.com",
    :password => "password"
  }
}

... и теперь отправьте электронное письмо на адрес any@mydomain.com, mytestacct@gmail.com, bob+super_secret_test@yahoo.com и отправьте их по электронной почте.другим получателям (например, реальным пользователям в производственной базе данных, скопированной на тестовый сервер), подавляется.

11 голосов
/ 23 августа 2012

Возможно, вас заинтересует mailtrap.io ( отказ от ответственности: Я связан с этим продуктом).Это идеальный инструмент для проверки доставки электронной почты при разработке и производстве.Все, что вам нужно сделать, это установить mailtrap.io в качестве сервера smtp в конфигурации промежуточной среды:

  config.action_mailer.smtp_settings = {
   :address => "mailtrap.io",
   :port => 2525,
   :authentication => :plain,
   :user_name => "LOGIN",
   :password => "PASSWORD"
  }

После этого все ваши тестовые электронные письма, отправленные в промежуточной среде, будут сохраняться в mailtrap для просмотра и обмена.Но ни один из них не будет отправлен на реальные адреса.Вы также можете использовать его в разработке.И, кстати - это абсолютно бесплатно!

6 голосов
/ 17 июня 2010

поместите это в файл environment.rb

config.action_mailer.delivery_method = :test

Он должен прекратить отправку почты на почтовый сервер, я думаю, что есть опция: log, но я не пробовал.

4 голосов
/ 20 апреля 2014

Я вижу, что люди предлагают использовать Mailtrap.io. Хорошая альтернатива - Debug Mail . Использование довольно просто.

0 голосов
/ 12 января 2017

В зависимости от вашего выбора

  • Если вам нужен удобный способ получения писем для отладки и т. Д., Я рекомендую https://github.com/fgrehm/letter_opener_web, который будет сохранять письма локально и предоставлять URL-адрес дляпросмотреть электронные письма, которые были отправлены.Наружное письмо не отправляется, и вы можете очень удобно просмотреть вывод в своем браузере

  • Если вы хотите иметь возможность открывать файлы электронной почты с помощью своих почтовых клиентов, вам следует выбрать :file адаптер для ActionMailer (настроить в config/environments/your_env.rb)

  • Если вы хотите создать настоящую производственную среду, я бы предложил настроить перехватчик электронной почты, который бы переписывал TO / CC /BCC для реального почтового ящика на ваш выбор, таким образом вы можете сохранить и протестировать свой оригинальный адаптер ActionMailer

    if Rails.env.staging?
      class TestEmailsInterceptor
        def self.delivering_email(mail)
          mail.to = ['My Test Box <test-box@example.com>']
          # remove bcc, cc, etc.
        end
      end
      ActionMailer::Base.register_interceptor(TestEmailsInterceptor)
    end
    
0 голосов
/ 07 января 2017

Мы используем maildev , который вы можете установить локально. Отлично подходит для сред разработки и промежуточной среды, легко устанавливается в различные технологические стеки.

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