#go #mailgun
# #Вперед #mailgun
Вопрос:
Я использую пакет Mailgun для Go и хотел бы отправить встроенное изображение с помощью cid. В моем html-шаблоне для mailgun у меня правильная cid:qr-code.png
настройка. Однако я должен добавить встроенное вложение в свое электронное письмо с qr-кодом. Я использую этот метод для генерации QR-кода:
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. Примечание: я не могу записать изображение в файл и в ОС, а затем прикрепить его.
Комментарии:
1. Вы пробовали
message.AddReaderInline(filename string, readCloser io.ReadCloser)
?2. @Tyger Да, но я не могу понять, как преобразовать [] байты в io.ReadCloser.
bytes.NewReader
преобразуется вio.Reader
не anio.ReadCloser
.3. Вы можете преобразовать его в
io.Reader
, а затем вio.ReadCloser
, как этоioutil.NopCloser(bytes.NewReader(code))
4. @Tyger Это сработало!! Если вы добавите ответ, я его приму.
5. Звучит неплохо. Обязательно тщательно протестируйте его, я никогда раньше не использовал mailgun
Ответ №1:
Вы можете использовать AddReaderInline
функцию
message.AddReaderInline(filename, readCloser)
Поскольку вам нужно преобразовать []bytes
в io.ReadCloser
, вы можете преобразовать в io.Reader
, а затем в io.ReadCloser
ioutil.NopCloser(bytes.NewReader(code))