私は自分のレールアプリケーションの1つでpdf添付ファイルを送信しようとしていますが、添付ファイルは適切なpdfファイルではなくテキストとして提供されます。Rails ActionMailerの添付ファイルが文字化けして表示される
class Notifications < ActionMailer::Base
def contact(email_params, sent_at = Time.now)
subject "" << email_params[:subject]
recipients "" << email_params[:client]
from "#{email_params[:name]} <#{email_params[:address]}>"
attachments['invoice.pdf'] = File.read("#{Rails.root.to_s}/public#{email_params[:attach]}") unless email_params[:attach].blank?
sent_on sent_at
body :message => email_params[:body], :sender_name => email_params[:name]
end
end
そして、私は私のメールの受信トレイに取得:
私のメーラーは、このようになります任意の添付ファイルなしのASCII文字
の非常に長い文字列が続く
--
Date: Thu, 23 Feb 2012 13:50:58 -0800
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <[mailserver]>
Message Body
--
Date: Thu, 23 Feb 2012 13:50:58 -0800
Mime-Version: 1.0
Content-Type: application/pdf;
charset=UTF-8;
filename=invoice.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename=invoice.pdf
Content-ID: <[mailserver]>
、そのヘッダー情報は送信されません。受信トレイに「メッセージ本文」の部分が表示されます。私はmailer.rb内の添付ファイル行のFile.read()部分が何らかの原因であると思われますが、私のブラウザからアクセスできる私のサーバー上の有効なpdfファイルを指しています。ログでは、メールが正しいパラメータで送信されたとしか言いませんが、プレーンテキストエディタでPDFを開いた場合、デコンパイルされたテキストのように表示されます。
メールプログラムビューcontact.html.erbは、単純に:<%= @message %>
です。
私は間違っていると思いますか?
ありがとうございました。
更新:
どうやら、私はcontact.erbだけでなく、私の見解ディレクトリ内contact.html.erbの両方を必要としていました。ファイルをコピーして名前を変更するだけです。ただし、メッセージ本文は空白になりました。添付ファイルのみが表示されます。
これは役に立ちます。 http://stackoverflow.com/questions/4610689/email-attachments#comment42373470_4610864 –