Ответ 1
попробовать
<div class="image">
<%= image_tag('email-logo.png') %>
</div>
Убедитесь, что вы установили config.action_controller.asset_host
и config.action_mailer.asset_host
Я пытаюсь вставить изображения в электронную почту. Проблема заключается в том, что сообщения электронной почты отправляются без изображений внутри
development.rb
config.action_mailer.default_url_options = {
:host => 'localhost:3000',
:only_path => false
}
config.action_mailer.raise_delivery_errors = false
config.action_mailer.asset_host = 'http://localhost:3000'
просмотреть файл:
<div class="image">
<%= image_tag image_path('email-logo.png') %>
</div>
Где я совершил ошибку? Пожалуйста, спросите, нужна ли вам дополнительная информация.
попробовать
<div class="image">
<%= image_tag('email-logo.png') %>
</div>
Убедитесь, что вы установили config.action_controller.asset_host
и config.action_mailer.asset_host
Вы отправляете электронные письма с localhost:3000
, который не является общедоступным (и ограничен только вашей машиной).
Вы должны разоблачить локальную среду, чтобы изображения могли быть загружены в ваш почтовый клиент.
Используйте сервис, например ngrok, чтобы открыть свой локальный домен.
После выполнения обязательно замените
config.action_mailer.asset_host = 'http://localhost:3000'
с URL-адресом ngrok (что-то вроде config.action_mailer.asset_host = 'http://<xxx>.ngrok.com'
)
Кроме того, в вашем файле просмотра вам необходимо будет указать абсолютный URL-адрес для изображения (а не только относительный путь). Вы можете узнать больше об этом здесь: Как получить абсолютный URL-адрес для ресурса в Rails 3.1?
Если вы используете
image_url('e-mail-logo.png')
вместо
image_path()
он отобразит абсолютный путь к изображению, который должен работать. Внутренний путь к изображению не имеет смысла в контексте сообщения.
Я согласен с Утсавом Кешарвани. Я недавно столкнулся с той же проблемой. Поскольку localhost не является общедоступным, вы не можете получить доступ к изображениям localhost.
Итак, одним из практических решений этой проблемы может быть загрузка изображений в облако и доступ к ним, когда вы хотите отображать эти изображения.
Я лично предпочитаю Cloudinary - облачный сервис, предоставляющий комплексное решение для управления изображениями, включая загрузку, хранение, манипуляции, оптимизация и доставка.
Вы можете сослаться на документацию CloudLine для рельсов: http://cloudinary.com/documentation/rails_integration#getting_started_guide
Надеюсь, это поможет.