#ruby-on-rails #email #gmail #email-attachments
#ruby-на-рельсах #Адрес электронной почты #gmail #вложения электронной почты #ruby-on-rails
Вопрос:
Я сохранил подпись, которая имеет вид uri данных изображения в формате png и хранится в моей базе данных в виде строки.
При отправке электронного письма я хочу прикрепить его встроенным, но изображение продолжает отображаться как не работающее в Gmail. Вот мой код:
Почтовая программа:
attachments.inline['signature'] = {
content: @project_addition.signature.split(',')[1],
mime_type: 'image/png',
encoding: 'base64'
}
Вид:
<%= image_tag attachments.inline['signature'].url, width: '25%' %>
Первые несколько символов строки:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABowAAAC4CA....
Комментарии:
1. Какую ошибку вы получаете от gmail
2. @CdotStrifeVII ошибки нет, просто изображение не отображается (только поле с вопросительным знаком посередине, в котором gmail сообщает, что не может понять вложение)
3. Удалось ли вам заставить это работать?
Ответ №1:
если у вас нет uri данных изображения, другое решение приведено ниже в вашем помощнике
приложение / помощники /email_helper.rb
def email_data_uri(image, **options)
code = File.open("#{Rails.root}/app/assets/images/#{image}", 'r').read
data = Base64.strict_encode64(code)
type = image.split('.')[-1]
name = image.split('/')[-1]
attachments.inline[name] = {
content: Base64.decode64(data),
mime_type: "image/#{type}"
}
image_tag attachments.inline[name].url, **options
end
приложение / просмотр / campaign_mailer
= email_data_uri 'email/livechat-logo.png', style: 'width: 34px'
добавление параметров стиля
Ответ №2:
Вам нужно вызвать Base64.decode64
для декодирования содержимого, закодированного в base64, без указания кодировки
attachments.inline['signature'] = {
content: Base64.decode64(@project_addition.signature.split(',')[1]),
mime_type: 'image/png'
}