【问题标题】:Can I include a button to download an attachment within an email?我可以在电子邮件中包含一个下载附件的按钮吗?
【发布时间】:2017-08-09 19:24:36
【问题描述】:

我正在开发一个 Rails 应用程序并使用 ActionMailer 向用户发送电子邮件。我知道如何在每封电子邮件中包含附件。但我想知道是否可以在邮件视图中提供一个按钮来显式下载特定附件作为用户界面改进。

更新:

老实说,我忘了提一些重要的事情。为了从电子邮件中下载文件,我需要构建的最终端点需要通过 Authorization 标头进行身份验证,它的值是使用 base64 的编码令牌。我不知道通过在电子邮件中发送此令牌是否存在漏洞。

【问题讨论】:

  • 我认为在电子邮件中发送授权令牌与在明信片上发送密码几乎相同。如果您通过电子邮件发送链接,为什么下载 URL 需要授权?为什么首先登录(在下载之前)不是一个选项?令牌有多合理,是一次性令牌还是有人可以将令牌重用于其他请求?
  • 流程如下:用户使用从 Android 应用程序到我正在构建的 Rails 服务器的端点。作为响应,包含敏感信息的报告(CSV 文件)通过电子邮件发送给用户。因此,端点需要身份验证。所以,我正在考虑创建其他直接响应 CSV 文件的端点,但它也必须经过身份验证。令牌可以重复用于其他请求。
  • 另一种选择是创建指向附件 CSV 文件的链接,但我不知道是否可行
  • 恕我直言,如果您的 Android 应用程序(已经过身份验证)询问 Rails 应用程序报告是否已完成并初始化下载,而不是在电子邮件中发送身份验证令牌,那么整个过程会更加安全。
  • @spickermann 非常感谢您的意见。

标签: ruby-on-rails ruby actionmailer


【解决方案1】:

route.rb 中执行此操作

get "controller/action" , as: :download

在邮件视图中,添加这个

<%= link_to "DOWNLOAD", download_path %>

在你的控制器中做类似的事情

def download
    send_file 'path_to_your_file',:type=>"application/extension_of_your_file", :x_sendfile=>true 
end

另一种方式

您可以简单地将文件放在公共文件夹中,然后在您的邮件视图中放置一个下载链接,例如:

<%= link_to 'name of button', 'http:// your_website / your_file_name' %>

另外,下次请务必在您的问题中添加一些代码,说明您已经尝试过什么或打算实现什么。

【讨论】:

    【解决方案2】:

    当然。该按钮可以链接到您的 Rails 应用程序中的控制器操作,该操作将文件向下发送给用户,就像用户在浏览您的应用程序时单击下载它一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2012-02-15
      相关资源
      最近更新 更多