Rails - ActionMailer - How to send an attachment that you create?

后端 未结 2 849
春和景丽
春和景丽 2020-12-25 12:31

In rails3 w ActionMailer, I want to send a .txt file attachment. The challenge is this txt file does not exist but rather I want to create the txt file given a large block o

相关标签:
2条回答
  • 2020-12-25 13:14

    It's described for files in the API documentation of ActionMailer::Base

    class ApplicationMailer < ActionMailer::Base
      def welcome(recipient)
        attachments['free_book.pdf'] = File.read('path/to/file.pdf')
        mail(:to => recipient, :subject => "New account information")
      end
    end
    

    But that doesn't have to be a File, it can be a string too. So you could do something like (I'm also using the longer Hash-based form where you can specify your own mimetype too, you can find documentation for this in ActionMailer::Base#attachments):

    class ApplicationMailer < ActionMailer::Base
      def welcome(recipient)
        attachments['filename.jpg'] = {:mime_type => 'application/mymimetype',
                                       :content => some_string }
        mail(:to => recipient, :subject => "New account information")
      end
    end
    
    0 讨论(0)
  • 2020-12-25 13:15

    First the method to send email

    class ApplicationMailer < ActionMailer::Base
       def welcome(user, filename, path)
          attachments[filename] = File.read(path)
          mail(:to => user.email, :subject => "New account information")
       end
    end
    

    Call the method with the params

    UserMailer.welcome(user, filename, path).deliver
    
    0 讨论(0)
提交回复
热议问题