繁体   English   中英

Rails Action Mailer:电子邮件中的图像

[英]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_hostconfig.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

我希望这有帮助。

我不是铁路大师,但我找到了这个:

  1. 把你的图片email-logo.png放在rails项目的公共文件夹中;
  2. 在您的电子邮件中(例如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM