1

运行 ubuntu 14.04 ruby​​ 2.0 Rails 4 Mail gem 2.5.4

在 Rails 控制台中

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调用中未定义的方法块'

邮件中有一种编码方法。似乎在调用时它只是字符串...

4

2 回答 2

0

Delivery_method 似乎有问题。编码是否在 delivery_method 函数中调用?

于 2014-10-14T10:24:09.400 回答
0

这是 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

我也重命名了邮件参数,但上面应该很清楚。

于 2014-10-15T02:40:51.873 回答