2013-02-13 49 views
1

我想從我的sinatra應用程序發送電子郵件。由sinatra app發送小馬文件 - 丟失文件

下面是代碼:

require 'pony' 
    class Cms < Application 

     get "/mail" do 
     Pony.mail :to => '[email protected]', 
      :from => "[email protected]", 
      :subject => "Thanks for signing my guestbook!", 
      :via => :sendmail, 
      :via_options => { 
       :address  => 'smtp.gmail.com', 
       :port  => '587', 
       :user_name  => '[email protected]', 
       :pass  => 'pass', 
       :enable_starttls_auto => false 
      }, 
      :body => erb(:"cms/mail") 
     redirect '/' 
     end 

    end` 

瘦是沒有錯誤啓動應用程序,但是當我要求myapp.local /郵件我有一個錯誤:

LoadError - no such file to load -- mail/network/delivery_methods/smtp: 
     /var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/configuration.rb:31:in lookup_delivery_method' 
     /var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/configuration.rb:25:in delivery_method' 
     /var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/mail.rb:111:in delivery_method' 
     /var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/message.rb:116:in initialize' 
     /var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/mail.rb:50:in new' 
     /var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/mail.rb:50:in new' 
     /var/lib/gems/1.8/gems/pony-1.4/lib/pony.rb:174:in build_mail' 
     /var/lib/gems/1.8/gems/pony-1.4/lib/pony.rb:138:in mail' 
     ./app/controllers/cms.rb:8:in GET /mail' 

文件/var/lib/gems/1.8/gems/mail-2.4.4/lib/mail/network/delivery_methods/smtp.rb存在。

回答

0

我得到當我使用郵件創業板的串列式結構同樣的錯誤:卸下第一線,和移動配置立即固定它的郵件寶石的裝載以下

mail.delivery_method :sendmail 
mail.deliver! 

無論在你的應用程序,你require 'mail'只是立即對其進行配置:

require 'mail' 
Mail.defaults do 
    delivery_method :sendmail 
end 

更新:這工作了一段時間......但後來由於某種原因,我開始看到了這個錯誤: rbenv/versions/1.8.7-p374/lib/ruby/gems/1.8/gems/mail-2.5.4/lib/mail/fields/common/common_address.rb:9:in `parse': no such file to load -- mail/elements/address_list (LoadError)

UPDATE2:看起來這些故障是隨機發生的。關於自動加載在Ruby 1.8.7-p374中的工作方式導致它無法找到實際存在的文件。另外,我正在使用slimgems而不是rubygems。

這是我不得不到目前爲止實現用郵件與多部分電子郵件和sendmail的交付方法,黑客:

require 'mail' 
require 'mail/network/delivery_methods/sendmail' 
require 'mail/elements/address_list' 
require 'mail/fields/common/common_address' 
require 'mail/elements/content_type_element' 
require 'mail/elements/address' 
require 'mail/elements/content_transfer_encoding_element' 

Mail.defaults do 
    delivery_method :sendmail 
end