2

UserMailerには、アドレスに電子メールを送信するエクスポート方法があります。このメールには、CSV添付ファイルといくつかのインラインPNG添付ファイルが含まれています。メールを送信するアクションは次のとおりです。

  # user - the user to send the email to.
  # csv_files - an array of hashes which represent CSV files to attach to the email.
  # export_type - the name of the model being exported (either "customer" or "invoice").
  #
  # Examples
  #
  #   UserMailer.export_email(current_user, files, "customer")
  #
  # Returns an email instance.

  def export_email(user, csv_files, export_type)
    @user = user

    from_addy = %|'Exports' <exports@example.com>|
    subject = "Your #{export_type} export files."

    csv_files.each do |file|
      # file[:content] will just be a big CSV string.
      opts = { mime_type: 'text/plain', content: file[:content] }
      attachments[file[:name]] = opts
    end

    # export_email_images is an array of hashes of image information defined elsewhere
    # in the UserMailer class. These images are used in the email body.
    # If I comment out this line and remove the images from my email body
    # then everything works fine.
    export_email_images.each { |opts| attachments.inline[opts[:name]] = opts }

    # I have app/views/user_mailer/customer_export_email view files in both
    # .html.erb and .text.erb formats.
    mail(to: user.email, subject: subject, from: from_addy,
        template_name: "#{export_type}_export_email")
  end

ただし、本番環境でGmailにメールを送信すると、本文が表示されません。

Gmailにメール本文がありません

インライン添付ファイルを削除すると、問題が修正され、電子メールの本文が正しくレンダリングされます(インライン画像がないことは明らかです)。ここで何が間違っている可能性がありますか?

4

0 に答える 0