如何从Rails应用程序创建和发送包含图像和正确格式的电子邮件?就像你从facebook那样得到的.
将我的项目更新到 Rails 6.1 后,我收到此错误:
NoMethodError:
undefined method `add_template_helper' for ApplicationMailer:Class
Run Code Online (Sandbox Code Playgroud)
在文档中似乎没有被弃用。
我有rails 4.1.6邮件程序预览的问题.
我希望在预览模式下看到附加的图像,但它不起作用.我认为这是不正确的
有我的代码:
邮件文件
class AppMailer < ActionMailer::Base
default from: "robot@mysite.com"
# AppMailer.test_mail.deliver
def test_mail
attachments.inline['rails.png'] = File.read(Rails.root.join('app', 'assets', 'images', 'rails.png'))
mail(
to: 'my-email@gmail.com',
subject: "test letter",
template_path: "mailers",
template_name: "test"
)
end
end
Run Code Online (Sandbox Code Playgroud)
预览文件
class MailerPreview < ActionMailer::Preview
def app_mailer
AppMailer.test_mail
end
end
Run Code Online (Sandbox Code Playgroud)
模板文件
%p Hello, World!
%p= image_tag attachments['rails.png'].url
Run Code Online (Sandbox Code Playgroud)
当我去
/rails/mailers/mailer/app_mailer
Run Code Online (Sandbox Code Playgroud)
我看到预览页面,但图像不起作用.结果是html代码
<p>Hello, World!</p>
<p><img src="cid:544d1354a8aa0_fda8082dbf8258ca@admins-air.mail"></p>
Run Code Online (Sandbox Code Playgroud)
所以.我想,我应该找到一种方法来获取路径/到/文件而不是预览模式下的CID
(当我把信寄到我的邮箱时 - 信看起来不错)
我在预览模式下做错了什么?
有谁能指出我的问题?
我在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)
我省略了细节以使其更简单.
我究竟做错了什么?
我正在尝试发送一封包含Rails 3和Action Mailer的电子邮件.电子邮件很好,但我希望它是HTML格式的一些基本样式,包括背景图像.我知道图像可能会被阻止,直到用户允许它们显示,但我仍然认为最好链接到我的Web服务器上的图像.
名为registration_confirmation.html.erb的电子邮件模板如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
body {
background: url(/images/mainbg_repeat.jpg) top repeat-x #cfcfcf;
margin: 0px 0px 0px 0px;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #565656;
}
Run Code Online (Sandbox Code Playgroud)
获取背景图像的url链接以包含完整主机以使背景显示在电子邮件中的最佳方法是什么?