1

Ponyを使用してSinatraでアップロードフォームを機能させようとしています。現在、すべてが正常に機能し、ファイルが読み取られ、電子メールが正常にメールで送信されます。添付ファイルを添付できないようです。ファイルのパスを正しく呼び出していないと思いますか?Ruby / Sinatra / Ponyのシーン全体に慣れていないので、完全にはわかりません。何か助けはありますか?とても有難い!

これが私が今持っているものです:

 post '/upload' do
    unless params[:file] &&
           (tmpfile = params[:file][:tempfile]) &&
           (name = params[:file][:filename])
      @error = "No file selected"
      return :success
    end
    STDERR.puts "Uploading file, original name #{name.inspect}"
    while blk = tmpfile.read(65536)
      # here you would write it to its final location
      STDERR.puts blk.inspect
    end

    logger.info "some"
    Pony.mail(
        :from => params[:uname] + "<" + params[:email] + ">",
        :to => 'example@example.com',
        :subject => "Internship Prospect " + params[:uname] + " has contacted you",
        :body => "Hello,\n\nYou have a new contact request\n\nName: "+params[:uname]+"\nEmail: "+params[:email]+"\n\nMessage:\n"+params[:message]+"\n\nThanks,\The Team",
        :port => '587',
        :via => :smtp,
        :via_options => { 
          :address              => 'smtp.gmail.com', 
          :port                 => '587', 
          :enable_starttls_auto => true, 
          :user_name            => 'name@example.com', 
          :password             => 'password', 
          :authentication       => :plain, 
          :domain               => 'localhost.localdomain',
          :attachments => {params[:file][:filename] => File.read(params[:file][:tempfile])}

        })

  redirect "/success"
  end
4

1 に答える 1

1

:attachmentsキーは最初のハッシュの一部である必要があります。

Pony.mail(
        :from => params[:uname] + "<" + params[:email] + ">",
        :to => 'example@example.com',
        :subject => "Internship Prospect " + params[:uname] + " has contacted you",
        :body => "Hello,\n\nYou have a new contact request\n\nName: "+params[:uname]+"\nEmail: "+params[:email]+"\n\nMessage:\n"+params[:message]+"\n\nThanks,\The Team",
        :attachments => {params[:file][:filename] => File.read(params[:file][:tempfile])}
        :port => '587',
        :via => :smtp,
        :via_options => { 
          :address              => 'smtp.gmail.com', 
          :port                 => '587', 
          :enable_starttls_auto => true, 
          :user_name            => 'name@example.com', 
          :password             => 'password', 
          :authentication       => :plain, 
          :domain               => 'localhost.localdomain',
        })
于 2012-08-27T18:12:41.077 に答える