将文件附加到电子邮件而不将内容保存到本地文件

时间:2018-06-13 19:33:07

标签: email elixir

我使用elixir Bamboo发送电子邮件

我有一些二进制内容,并希望附加到电子邮件

简单的方法是:

content = <<binary-content>>
File.write("/tmp/myfile.pdf", content )
data = new_email()
  |> to(email)
  |> from( "email.com")
  |> subject("subject")
  |> put_attachment("/tmp/myfile.pdf")
  |> put_header("Reply-To", "email.com")
  |> html_body(html_body)
File.rm("/tmp/myfile.pdf", content )

有没有办法附加文件而不在本地保存? 类似的东西:

content = <<binary-content>>
data = new_email()
  |> to(email)
  |> from( "email.com")
  |> subject("subject")
  |> put_attachment(content)
  |> put_header("Reply-To", "email.com")
  |> html_body(html_body)

1 个答案:

答案 0 :(得分:4)

你打赌,打赌。它包含在1.0版本之前。您可以将数据作为of this PR直接附加到结构。

您只需要将put_attachment传递给Bamboo Attachment结构,并填充数据字段,因此:

content = <<binary-content>>
data = new_email()
  |> to(email)
  |> from( "email.com")
  |> subject("subject")
  |> put_attachment(%Bamboo.Attachment{filename: "filename.example", data: content})
  |> put_header("Reply-To", "email.com")
  |> html_body(html_body)

以下是该功能的主题:https://github.com/thoughtbot/bamboo/issues/286