2011-07-16 6 views
0

私は電子メール全体とその部分が正しい順序で生成されているところにあります。 :part_containerパラメータは、BELOWの代わりにtext/htmlの部分の上にインラインアタッチメントを挿入します。上の場合、Thunderbirdは何も表示せず、メールに2つの外部添付ファイルがあると表示されます。電子メールを手作業で編集して、text/html部分の下のインライン部分を移動すると、完全に表示されます。Rails 2.3 "inline_attachment" gemインラインアタッチメントの配置が正しくない

part :content_type => 'multipart/alternative' do |copy| 
    copy.part :content_type => 'text/plain' do |plain| 
     plain.body = render(
      :file => "main.text.plain", 
      :body => { 
        :user => @user, 
        :text => docParse.to_plain_text 
        } 
      ) 
    end 
    copy.part :content_type => 'multipart/related' do |rel| 
     rel.part :content_type => 'text/html' do |html| 
      html.body = render(
       :file => "main.text.html", 
       :body => { 
         :part_container => rel, 
         :user => @user, 
         :content => content, 
         :email_links => m.email_links, 
         :nav_image => m.nav_image 
         } 
       ) 
     end 
    end 
end 
m.attachments.each do |file| 
    attachment :content_type => "application/octet-stream", 
       :filename  => File.basename(file), 
       :body   => File.read(file) 
end 

明確にすることが、inline_attachments宝石は、このコードのいずれかなしに完璧に動作します - それは、私は、任意の外部の添付ファイル(のみインライン画像)せずにメールを送信していたときのみです。インライン画像と外部添付ファイルを含むHTMLメールを送信したいとき、これが私が頼りにしなければならないものです。

EDITは:明確にするために、私の質問は、「どのように私は、インライン取付部が使用してtext/htmlの部分の後に生成されていることを確認してくださいされています?part_containerを

+0

ノーバディ:

これは私の問題でスクリプトを参照して、最新のスクリプトはありますか?ダム... – JakeTheSnake

答えて

1

部品を部品配列を含んで...

rel.parts.unshift rel.parts.pop 

基本的にメールが「部品」...これらの部品で構成されている部分の配列に属し、各部分は部品(ネストされた部分)の独自の配列を持つことができる方法として見て: 'からpart_container引数inline_attachmentsのgemが間違った順番(text/htmlの部分はFIRSTではなくLASTの部分)でパーツを作成しましたが、最後の部分の項目をポップして相対的なパーツ配列を並べ替えました - テキスト/ HTML部分(rel.parts.pop)及び相対部分配列における第1項目として挿入(rel.parts.unshift)であることが起こった

すなわち、
インライン画像部分
インライン画像部分
インライン画像部分
テキストになっ

/HTML-部

text/htmlの部分
インライン画像部分
インライン画像Pアート
インラインイメージパート

すべてが正しく表示されます。

part :content_type => 'multipart/alternative' do |copy| 
    copy.part :content_type => 'text/plain' do |plain| 
     plain.body = render(
      :file => "main.text.plain", 
      :body => { 
        :user => @user, 
        :text => docParse.to_plain_text 
        } 
      ) 
    end 
    copy.part :content_type => 'multipart/related' do |rel| 
     rel.part :content_type => 'text/html' do |html| 
      html.body = render(
       :file => "main.text.html", 
       :body => { 
         :part_container => rel, 
         :user => @user, 
         :content => content, 
         :email_links => m.email_links, 
         :nav_image => m.nav_image 
         } 
       ) 
     end 
     # Place the text/html part before all other inline images 
     rel.parts.unshift rel.parts.pop 
    end 
end 
m.attachments.each do |file| 
    attachment :content_type => "application/octet-stream", 
       :filename  => File.basename(file), 
       :body   => File.read(file) 
end 
+0

これは答え、コメント、または..ですか? –

+0

答えとして記載されています。私はそれを回答としてマークするつもりだったが、私は2日待たなければならなかった。 – JakeTheSnake

+0

私には、これがどのようにあなたの質問に答えているかがわからないので、私は尋ねています。もちろん、あなたにとっては明らかですが、自分で自分の質問に答えても、他の人があなたの発見の恩恵を受ける、つまりより冗長になるようにしてください。 –

関連する問題