[英]Rails Action Mailer: images in emails
我正在尝试将图像粘贴到电子邮件中。 问题是电子邮件内部没有图像
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'
使用ngrok URL(类似于config.action_mailer.asset_host = 'http://<xxx>.ngrok.com'
)
此外,在视图文件中,您必须确保为图像指定绝对URL(而不仅仅是相对路径)。 您可以在此处阅读更多内容: 如何在Rails 3.1中获取资产的绝对URL?
如果你使用
image_url('e-mail-logo.png')
代替
image_path()
它将呈现图像的绝对路径,这应该起作用。 在消息的上下文中,图像的内部路径是没有意义的。
我赞同Utsav Kesharwani。 我最近遇到了同样的问题。 由于localhost不公开,因此您无法访问localhost的映像。
因此,解决此问题的一个实际解决方案是将图像上传到云端,并在要显示这些图像时访问它们。
我个人更喜欢Cloudinary--一种基于云的服务,提供端到端的图像管理解决方案,包括上传,存储,操作,优化和交付。
您可以参考有关rails的Cloudinary文档: http ://cloudinary.com/documentation/rails_integration#getting_started_guide
我希望这有帮助。
我不是铁路大师,但我找到了这个:
在您的电子邮件中(例如views / devise / mailer / my_email.html.erb,设置如下图像标记:
<%= image_tag("http://#{ActionMailer::Base.default_url_options[:host]}:#{ActionMailer::Base.default_url_options[:port]}/email-logo.png") %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.