RUby - amazon S3 for remote url attachments - OpenURI::HTTPError: 403 Forbidden
RUby - amazon S3 for remote url attachments - OpenURI::HTTPError: 403 Forbidden
我知道这个问题已经被问过好几次了,但是 none 提供的解决方案对我有用。
我正在使用带有 open-uri 的 Ruby 版本 2.2.1 并尝试为我的电子邮件附件添加远程 url。
我有的是:
@filename = "#{@doc.id}-#{@company.subdomain}-#{@doc.doc_number}-#{@doc.created_at.strftime("%Y-%m-%d")}.pdf"
@file_path = "https://mybucket.s3.amazonaws.com/docs/doc_#{@doc.id}/#{@doc.filename}"
attachments[@filename] = open(URI.parse("#{@file_path}")).read
我也用过
1. File.read(open("#{@file_path}")
2. open(Net::HTTP.get(URI.parse("#{@file_path}"))
3. Added User-Agent
我删除了 URI.parse,尝试使用实例变量但没有字符串插值。什么都不管用。如果我在浏览器上访问一个文件路径,它确实有效,但当我在我的邮件程序中调用它时却无效。
如有任何帮助,我们将不胜感激。
编辑:
如果我只是将工作 url(无字符串插值)硬编码为文件附件,它就可以正常工作。
好吧,这是一个简单的修复,但有点不相关。
我的代码中的其他地方有一个拼写错误,这使得文件名与我用来测试的 url 有点不同。
当我将以下内容用于 file_path 时,我意识到了这一点,并且它立即适用于:
file_path = @doc.filename.url
attachments[@file_name] = open(URI.parse("#{file_path}")).read
我知道这个问题已经被问过好几次了,但是 none 提供的解决方案对我有用。 我正在使用带有 open-uri 的 Ruby 版本 2.2.1 并尝试为我的电子邮件附件添加远程 url。
我有的是:
@filename = "#{@doc.id}-#{@company.subdomain}-#{@doc.doc_number}-#{@doc.created_at.strftime("%Y-%m-%d")}.pdf"
@file_path = "https://mybucket.s3.amazonaws.com/docs/doc_#{@doc.id}/#{@doc.filename}"
attachments[@filename] = open(URI.parse("#{@file_path}")).read
我也用过
1. File.read(open("#{@file_path}")
2. open(Net::HTTP.get(URI.parse("#{@file_path}"))
3. Added User-Agent
我删除了 URI.parse,尝试使用实例变量但没有字符串插值。什么都不管用。如果我在浏览器上访问一个文件路径,它确实有效,但当我在我的邮件程序中调用它时却无效。
如有任何帮助,我们将不胜感激。
编辑: 如果我只是将工作 url(无字符串插值)硬编码为文件附件,它就可以正常工作。
好吧,这是一个简单的修复,但有点不相关。 我的代码中的其他地方有一个拼写错误,这使得文件名与我用来测试的 url 有点不同。
当我将以下内容用于 file_path 时,我意识到了这一点,并且它立即适用于:
file_path = @doc.filename.url
attachments[@file_name] = open(URI.parse("#{file_path}")).read