【问题标题】:Upload file form with Pony in Sinatra在 Sinatra 中使用 Pony 上传文件表单
【发布时间】:2012-08-28 02:12:41
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: ruby sinatra email-attachments pony


    【解决方案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',
            })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多