Как создать встроенное изображение как вложение из строки Base64 - PullRequest
0 голосов
/ 19 апреля 2019

В моей таблице User есть столбец с именем img.Изображение сохраняется в виде строки Base64.Я попытался использовать следующий тег для показа изображения:

<img src="data:image/png;base64,${user.img}" alt="User image" />

Хотя это работает с открывателем писем / режимом предварительного просмотра, похоже, что Gmail не поддерживает это.

Я сейчаспытаюсь создать изображение как встроенное изображение на основе этого поста: https://stackoverflow.com/a/39710468/891359

Я не понимаю, как правильно отобразить изображение.Я попробовал следующую комбинацию:

В моей почтовой программе:

attachments.inline["user.png"] = {
  :data => @user.img,
  :mime_type => "image/png",
  :encoding => "base64"
}

И в моем шаблоне:

= image_tag attachments['user.png'].url

К сожалению, в Gmail это отображается как значок с разорванным изображением,Я делаю что-то неправильно?

1 Ответ

1 голос
/ 19 апреля 2019

Ок, решил сам.Хитрость заключалась в том, чтобы использовать контент вместо данных.Кроме того, в моей кодированной строке Base64 был префикс, который нужно было удалить.Конечным решением было изменение почтовой программы:

attachments.inline["user.png"] = {
  :content => @user.img.remove('data:image/png;base64,'),
  :mime_type => "image/png",
  :encoding => "base64"
}
...