What is the right way to embed image into email using Rails?

后端 未结 6 1605
后悔当初
后悔当初 2020-12-02 16:23

What is the right way to embed an image into email using Rails?

6条回答
  •  自闭症患者
    2020-12-02 17:21

    I combined the answer from Oksana with a custom helper approach and got the following to work quite nicely.

    app/helpers/email_helper.rb

    module EmailHelper
      def email_image_tag(image, **options)
        attachments[image] = File.read(Rails.root.join("app/assets/images/#{image}"))
        image_tag attachments[image].url, **options
      end
    end
    

    app/mailers/base_mailer.rb

    class BaseMailer < ActionMailer::Base
      add_template_helper(EmailHelper)
    end
    

    app/mailers/my_mailer.rb

    class MyMailer < BaseMailer
    
      def send_my_mail(email)  
        mail to: email, subject: "My Subject"
      end
    end
    

    Then for example where I want to attach the company logo in my email layout file I would use

    app/views/layouts/email.html.erb

    <%= email_image_tag("company_logo.png") %>


    Note the **options makes the tag more extensible but it will only work in ruby >=2. To make this work in ruby < 2 you will have to use the older way of handling key word options.

提交回复
热议问题