2016-05-26 5 views
2

私はBase64でエンコードされたPDFデータを持っており、それをActionMailerを使ってメールへの添付ファイルとして設定したいと考えています。Ruby on Railsでは、Base64でエンコードされた文字列をPDF添付ファイルとして設定する方法はありますか?

私は(Base64でエンコードされたPDFデータがbase64_encoded_stringであると仮定)、次のように試してみました:

attachments['attachment.pdf'] = { 
    mime_type: 'application/pdf', 
    encoding: 'base64', 
    content: base64_encoded_string 
} 

をしかし、私は受け取った電子メールに添付PDFファイルを開くと、ファイルが壊れています。

私はBase64をエンコードするためにActionMailerを残すためにBase64文字列をあらかじめデコードしており、問題なく動作します。

attachments[File.basename('attachment.pdf')] = Base64.decode64(base64_encoded_string) 

Base64でエンコードされた文字列をPDFのattachemntとして直接設定するにはどうすればよいですか? Railsのdocumentから

+0

gifで同じ問題が発生した場合は、この問題の回答が見つかったことがありますか? (Base64でエンコードされたコンテンツであっても、電子メールで壊れています) – Maxence

答えて

0

メールは自動的にBase64では、添付ファイルをエンコードします。 を別のものにしたい場合は、コンテンツをエンコードし、エンコードされた のコンテンツとエンコーディングをハッシュ(添付ファイル)メソッドで渡します。

エンコードを指定せずにbase64文字列としてコンテンツを設定するだけです。それは動作します、これは私のプロジェクトで行ったことです:

attachments['attachment.pdf'] = { 
    mime_type: 'application/pdf', 
    content: base64_encoded_string 
} 
+0

ありがとうございました。あなたが書きましたが、添付のPDFファイルを開くことはできません。たぶん私はチェックバイナリ自体のようなもので問題を調査する必要があります。 – 5t111111

0

私は解決策を見つけたようです。 base64文字列をコンテンツとして提供する場合は、必ずエンコーディングを指定してください。さもなければ、Railsはすでにエンコードされた文字列を2回目にエンコードします。

attachments['base64_file.pdf'] = { 
    mime_type: 'application/pdf', 
    encoding: 'base64', 
    content: base64_string 
} 
関連する問題