Почтовый объект ruby превращается в строку перед отправкой в exim
Запуск ubuntu 14.04 ruby 2.0 Rails 4 Mail gem 2.5.4
В рельсах консоли
mail = Mail.new do
*> from 'me@test.com'
*> to 'mbennon@gmail.com'
*> subject 'Here is the image you wanted'
*> body 'this is a test'
*>end
> mail.delivery_method :exim, :location => "/usr/sbin/exim"
> mail deliver
Я получаю следующую ошибку (до того, как она попадет в exim)
NoMethodError: неопределенный метод
encoded' for #<String:0x0000000947f9d8> from /home/mark/.rvm/gems/ruby-2.0.0-p247/gems/mail 2.5.4/lib/mail/network/delivery_methods/exim.rb:46:in
блокировать в вызове
Есть метод, закодированный в почте. Кажется, что это просто строка во время вызова...
2 ответа
Это ошибка в Mail::Exim . ошибка возникает при доставке вызова. Он пытается декодировать почтовое сообщение дважды, один раз при проверке параметров, и другой раз перед тем, как он переходит к IO.
Мое исправление для версии, которую я сейчас имею в exim.rb
def self.call(path, arguments, destinations, mail)
popen "#{path} #{arguments}" do |io|
io.puts mail.encoded.to_lf
io.flush
end
end
менять
io.puts mail.encoded.to_lf
в
io.puts mail.to_lf
Я также переименовал почтовый параметр, но вышесказанное должно быть ясным.
Кажется, есть проблема с delivery_method. Вызывается ли закодированное внутри функции delivery_method?