Почтовый объект 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?

Другие вопросы по тегам