rom*_*man 6 ruby gmail ruby-on-rails actionmailer
有谁能指出我的问题?
我在rails 3.1应用程序邮件程序中使用内联附件.该信还包含存储在amazon w3服务器上的图像.
问题是gmail没有正确显示字母.我在信中有内联附件.但Gmail会将这些文件显示为附加文件.这封信还包含一个附加的html页面,其中包含字母本身.所有gmail显示都是一组符号,我想这是一个附加图像的base64版本.
查看截图.
由于缺乏必要的评级,我无法发布图片,所以我在这里发布.
这是我的邮件中的代码:
attachments.inline['blank'] = File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}")
attachments.inline['discount-deal-triangle'] = File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}")
mail(:to => @subscriber.email, :subject => subject)
Run Code Online (Sandbox Code Playgroud)
以下是视图文件中的代码:
-if @image_url
= image_tag( attachments['offer_image'].url, :id => 'offer_image', :width => "320", :height => "320")
-elsif @offer.image.nil?
= image_tag( attachments['blank'].url, :id => 'offer_image', :width => "320", :height => "320")
Run Code Online (Sandbox Code Playgroud)
我省略了细节以使其更简单.
我究竟做错了什么?
rom*_*man 12
毕竟我找到了一个解决方案:您需要做的就是设置附件的mime类型和编码.
attachments.inline['blank'] = {
:data => File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}"),
:mime_type => "image/png",
:encoding => "base64"
}
attachments.inline['discount-deal-triangle'] = {
:data => File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}"),
:mime_type => "image/png",
:encoding => "base64"
}
Run Code Online (Sandbox Code Playgroud)
这对我有用.
在内联数组中使用文件扩展名.例:
attachments.inline['blank.png'] =
File.read(Rails.root.join('app', 'assets', 'images', 'blank_500x500.png')
Run Code Online (Sandbox Code Playgroud)
这样Rails会猜测文件mime_type和encoding.至少Rails 4.2会这样做.
您也可以参考/sf/answers/1806710741/,在那里您可以找到邮件内嵌图像的好帮手方法.
| 归档时间: |
|
| 查看次数: |
6414 次 |
| 最近记录: |