【问题标题】:Send byte slice in inline attachment with Mailgun使用 Mailgun 在内联附件中发送字节切片
【发布时间】:2020-12-31 23:56:40
【问题描述】:

我在 Go 中使用 Mailgun package,并希望使用 cid 发送内联图像。在我的mailgun html 模板中,我设置了正确的cid:qr-code.png。但是,我必须使用 qr 代码在我的电子邮件中添加内联附件。我使用this方法生成二维码:

code, err := qrcode.Encode(data, qrcode.Medium, 256) // code is a []byte

现在我需要将此代码作为内联附件添加到我的电子邮件中,并将 cid 属性设置为 qr-code.png

message.AddBufferAttachment("qr-code.png", code) 正确附加了图像,但没有内联它,因为我无法设置 cid 属性。

现在我知道这可以通过 mailgun 实现,因为 .js 中的以下代码可以使用 mailgun 完成。

mg.Attachment({
  data: base64Buffer,
  filename: "qr-code.png",
  cid: "cid:qr-code.png",
}),

我似乎无法用 go Mailgun 包做到这一点。 注意:我无法将图像写入文件和操作系统上,然后附加它。

【问题讨论】:

  • 你试过message.AddReaderInline(filename string, readCloser io.ReadCloser) 吗?
  • @Tyger 是的,但我不知道如何将 []bytes 转换为 io.ReadCloser。 bytes.NewReader 转换为 io.Reader 而不是 io.ReadCloser
  • 您可以将其转换为io.Reader,然后再转换为io.ReadCloser,例如ioutil.NopCloser(bytes.NewReader(code))
  • @Tyger 成功了!!如果您添加答案,我会接受。
  • 听起来不错。确保彻底测试我以前从未真正使用过mailgun

标签: go mailgun


【解决方案1】:

你可以使用AddReaderInline函数

message.AddReaderInline(filename, readCloser)

由于您需要将[]bytes 转换为io.ReadCloser,您可以转换为io.Reader,然后再转换为io.ReadCloser

ioutil.NopCloser(bytes.NewReader(code))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2012-02-17
    • 1970-01-01
    • 2014-11-27
    • 2016-10-22
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多