Я плохо знаком с направляющими и направляющими использования 2.3.5 и рубиновыми 1.8.7. Вот моя notifier.rb модель:
# app/models/notifier.rb
class Notifier < ActionMailer::Base
default_url_options[:host] = "foo.com"
#This method sends an email with token to users who request a new password
def password_reset_instructions(user)
subject "Password Reset Instructions"
from "Support Team<support@foo.com>"
recipients user.email
sent_on Time.now
body :edit_password_reset_url =>
edit_password_reset_url(user.perishable_token)
end
end
Когда я называю этот метод, я получаю следующую ошибку:
Net::SMTPFatalError in Password resetsController#create
555 5.5.2 Syntax error. 36sm970138yxh.13
Я нашел статью, в которой было сказано, что проблемой была ошибка в рубиновых 1.8.4 и что фиксация должна удалить угловые скобки из: от поля. Конечно же, если я просто использую "support@foo.com" вместо "Поддержки Team<support@foo.com>", все хорошо работает.
Однако нет никакой ссылки на эту проблему или в направляющих 2.3.5 API или в руководстве направляющих Основ ActionMailer, и на самом деле оба шоу "имя <почтовый адрес>" в их примерах установки actionmailer. Кто-либо знает то, что я делаю неправильно?
Rails / ActionMailer нарушил это:
https://rails.lighthouseapp.com/projects/8994/tickets/2340
И поскольку критические ошибки, подобные этой, не получают высокого приоритета или промежуточных выпусков для их исправления в проекте Rails вы должны либо исправить это самостоятельно, либо ждать очень долго, чтобы исправить это. Точно так же, как эта безумно плохая ошибка, появившаяся в Rails 2.3.4, которая сделала Rails полностью непригодным для использования с Ruby 1.9: https://rails.lighthouseapp.com/projects/8994/tickets/3144-undefined-method-for- строка-рор-234 . Потребовались месяцы, чтобы исправить это.
Судя по тикету, на который ссылался Трэвис, похоже, что вы можете возможно, избежать проблемы с помощью:
def password_reset_instructions(user)
subject "Password Reset Instructions"
from "Support Team<support@foo.com>"
+ headers "return-path" => 'support@foo.com'
recipients user.email
sent_on Time.now
body :edit_password_reset_url =>
edit_password_reset_url(user.perishable_token)
end
В противном случае вы можете получить один из патчей, указанных в заявке, или дождаться 2.3.6 или 3.x