Добавить изображение в поле электронной почты от

В odoo 13 у меня есть пример поля:

birthday_picture = fields.Image(string='Birthday Picture')

Я хочу добавить birthday_picture изображение, которое будет добавлено в шаблон электронной почты, который я объявил в xml, я добавил тег <img> и добавил, что изображение не отражается ниже, я поделился строкой

<div>
    <img src = "${'/birthday_picture.png=%s' % object.birthday_picture}" style = "width: 60px; height: 60px"/><br/>
</div>

Пожалуйста, дайте мне знать, где я делаю неправильно

Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
1
0
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если birthday_picture должен быть динамическим (это означает, что один и тот же шаблон электронной почты может отображать разные изображения), вам следует рассмотреть возможность использования fields.Binary

Fields.Binary сохраняет двоичный файл в odoo filesystem и возвращает строку в кодировке base64.

birthday_picture = fields.Binary(string='Birthday Picture')
<img src = "${'data:image/png;base64,%s' % object.birthday_picture}" style = "width: 60px; height: 60px"/>

В случае, если birthday_picture всегда один и тот же (поэтому он статичен), лучшим решением будет создать ir.attachment, установить его как общедоступный и отобразить в src его URL-адрес.

Другой вариант — вручную преобразовать ваш файл в base64 с помощью онлайн-инструмента и заменить значение src закодированной строкой.

Да, брат, я хочу, чтобы изображение было динамическим, и, как вы сказали выше, я попробовал это, но все еще не возвращает изображение, которое я предоставляю в двоичном поле.

Sidharth Panda 11.01.2023 03:41

Можете ли вы отладить необработанное тело электронной почты, чтобы понять, что оно печатает вместо строки base64? Также вы уверены, что модель, выбранная в mail.template, является той же моделью, в которой вы добавили поле birthday_picture? Попробуйте напечатать object.birthday_picture в шаблоне электронной почты для дальнейшего изучения

icra 11.01.2023 20:03

Да, я уверен, что birthday_picture находится в той же модели, что и в mail.template, также я уже проверил, что печатается вместо строки base64, это печатает двоичный формат изображения.

Sidharth Panda 12.01.2023 03:14

Это означает, что двоичные данные должны быть сначала преобразованы в base64. Вы можете использовать вспомогательные функции image_data_uri или to_text qweb, чтобы получить это. Например: ${'data:image/png;base64,%s' % image_data_uri(object.birthday_picture)}

icra 12.01.2023 20:18

Нет, я все еще не вижу шаблон, чтобы отразить изображение, но я уже решил это

Sidharth Panda 13.01.2023 08:31
Ответ принят как подходящий

На самом деле я добавил это:

<p>
    <img src = "/web/image/birthday.reminder/${object.id}/birthday_picture/"/>
</p>

Который не отражает изображение в шаблоне, но когда я искал недоставленное письмо от techncal > email. удалив force_send из кода, я смогу увидеть свое отражение в нем.

Однако я уже искал, что электронная почта не поддерживает base64 изображения, но для этого также есть настройка. вот ссылка которая описывает твик

Другие вопросы по теме