Ответ 1
Я думаю, что лучший вариант - использовать такую службу, как mailtrap.io: http://mailtrap.io или камень gc: https://rubygems.org/gems/mailcatcher
В моей среде разработки я использую копию производственной базы данных при локальном тестировании. По причинам как для тестирования, так и для защиты от отправки тестовых/dev-писем реальным пользователям, какой лучший способ переопределить адрес почты в режиме разработки?
Я знаю, что могу писать логику в каждом почтовом ящике, но у меня их несколько, и было бы неплохо положить все это на место. Могу ли я переопределить метод mail()
каким-либо образом, чтобы параметр :to
всегда указывал на указанный вами адрес электронной почты?
Я думаю, что лучший вариант - использовать такую службу, как mailtrap.io: http://mailtrap.io или камень gc: https://rubygems.org/gems/mailcatcher
Я использую перехватчик ActionMailer, поэтому все письма, отправленные в процессе разработки или тестирования, отправляются на тот же адрес. Вот так:
# config/initializers/override_mail_recipient.rb
if Rails.env.development? or Rails.env.test?
class OverrideMailRecipient
def self.delivering_email(mail)
mail.to = '[email protected]'
end
end
ActionMailer::Base.register_interceptor(OverrideMailRecipient)
end
Мне нравится делать настройку action mailer в среде разработки для использования mailtrap.
Вы могли бы выполнить значение по умолчанию
class UserMailer < ActionMailer::Base
default :to=> "[email protected]"
end
И затем сделайте адрес опцией в методах. Таким образом, он будет установлен по умолчанию для :to
. Еще одна идея, которая у меня была, была немного больше:
class UserMailer < ActionMailer::Base
attr_accessor :email_address
def initialize
if RAILS_ENV == "development"
@email_address = "[email protected]"
end
end
end
Для этого вам потребуется указать новый адрес в коде, но он будет перезаписываться каждый раз в разделе "Разработка".