如何在Mailer中使用资产? [英] How can I use assets within Mailer?

查看:81
本文介绍了如何在Mailer中使用资产?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无论是Mailer本身还是视图,我都无法在mailer中使用任何形式的资产管道。

I have trouble using any form of the asset pipeline within mailer, wether the Mailer itself or the view.

以下代码会产生空的src图像标记。

The following produces and empty src image tag.

<%= image_tag "emails/header-general.png" %>

空白图片标签如下:

img alt = Header-general

img alt="Header-general"

以下通过模型附加文件并在视图中使用它的形式附加了空图像。

The following form of attaching a file through the model and using it in the view attaches an empty image.

attachments.inline['header.jpg'] = 'emails/header-general.png'
...
<%= image_tag attachments['header.png'] %>

我确实检查了路径,甚至尝试了多条路径等等,但是没有运气。
请帮助。在电子邮件中包括图像的任何形式都将有所帮助。

I did check the path and even tried with multiple paths and so on but with no luck. Please help. Any form of including an image within the email would be helpful.

这里是生产环境。

Xenium::Application.configure do
# Settings specified here will take precedence over those in config/application.rb

# Code is not reloaded between requests
config.cache_classes = true

# Full error reports are disabled and caching is turned on
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true

# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false

# Compress JavaScripts and CSS
config.assets.compress = true

# Choose the compressors to use
config.assets.js_compressor  = :yui
config.assets.css_compressor = :yui

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

# Generate digests for assets URLs
config.assets.digest = true

# Defaults to Rails.root.join("public/assets")
# config.assets.manifest = YOUR_PATH

# Specifies the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
# config.force_ssl = true

# See everything in the log (default is :info)
config.log_level = :fatal

# Use a different logger for distributed setups
# config.logger = SyslogLogger.new

# Use a different cache store in production
config.cache_store = :mem_cache_store

# Enable serving of images, stylesheets, and JavaScripts from an asset server
#config.action_controller.asset_host = "http://asset.xenium.bg"

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
# config.assets.precompile += %w( search.js )

# Disable delivery errors, bad email addresses will be ignored
config.action_mailer.raise_delivery_errors = true
#config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address              => "localhost",
:port                 => 25,
:domain               => 'xenium.bg',
#:user_name            => '<username>',
#:password             => '<password>',
#:authentication       => 'plain',
:enable_starttls_auto => false
}

# Enable threaded mode
# config.threadsafe!

# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation can not be found)
config.i18n.fallbacks = true

# Send deprecation notices to registered listeners
config.active_support.deprecation = :notify
end

谢谢!

推荐答案

根据2.3.3进行内嵌附件部分,要创建内嵌附件,您将执行以下操作

According to the 2.3.3 Making Inline Attachments section, to create an inline attachment you will do as follows

attachments.inline['image.jpg'] = File.read('/path/to/image.jpg')

因此,在您的情况下,应该是

So in your case, it should be

attachments.inline['header.jpg'] = File.read("#{Rails.root}/app/assets/images/emails/header-general.png"

这篇关于如何在Mailer中使用资产?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆