图片未显示在 Rails 上带有操作邮件的 rask 任务中

images not showing up in rask task with action mailer on Rails

所以我为我的用户创建了一封欢迎邮件。我希望在特定时间发送这封电子邮件,所以我将其嵌套到一个 rake 任务中并将其添加到我的 heroku 调度程序中。

问题是,电子邮件模板有图像。

当我打开控制台并输入 UserMailer.welcome_email(user).deliver_now 时,一切正常。当我收到电子邮件时,图像确实会显示。

但是,当我 运行 rake send_welcome_email 时,电子邮件已发送,但里面显示了 none 的图像。

这是我的 user_mailer.rb:

  def welcome_email(user)
    @user = user
    mail(to: @user.email, subject: 'Welcome !')
  end

我的scheduler.rake:

desc "This task is called by the Heroku scheduler add-on. It aims to send the second of the four welcome emails to new users"
task :send_welcome_email => :environment do
  users = User.find_by(email: "useremail@email.com")
  puts 'Sending welcome email...'
    UserMailer.welcome_email(users).deliver_now
  puts '...Done !'
end

和我的 image_tags 在我的 welcome_email.html.erb 中:

<%= image_tag "myimage.svg" %>
<%= image_tag "email_images/myotherimage.jpg" %>

请注意,我已经尝试过像这样更改相对路径:

问题可能来自哪里?

你可以做的是在邮件程序 (UserMailer) 中明确说明你想要哪些图像,比如

attachments.inline['myimage.svg'] = File.read("#{Rails.root.to_s + '/app/assets/images/myimage.svg'}")

从那里,您可以使用

在邮件程序模板中调用它
<%= image_tag attachments.inline["myimage.svg"].url %>