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

shu*_*dim 2 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 )
Run Code Online (Sandbox Code Playgroud)

有没有办法附加文件而不将其保存在本地?就像是:

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)
Run Code Online (Sandbox Code Playgroud)

The*_*sor 6

你打赌。它是在 1.0 版本之前包含的。从本 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)
Run Code Online (Sandbox Code Playgroud)

这是有关该功能的线程:https://github.com/thoughtbot/bamboo/issues/286