diff options
author | Lucas Nussbaum <lucas@lucas-nussbaum.net> | 2009-05-06 11:07:48 +0200 |
---|---|---|
committer | Lucas Nussbaum <lucas@lucas-nussbaum.net> | 2009-05-06 11:07:48 +0200 |
commit | 92b406375fa95e9111653b8139d74cebe8c65b01 (patch) | |
tree | 889c75024539129209fc7f98b658b4bda52d5ff5 /lib/feed2imap/itemtomail.rb | |
parent | 31361b976200db24e704380360882a04244256a6 (diff) | |
download | feed2imap-92b406375fa95e9111653b8139d74cebe8c65b01.tar.gz feed2imap-92b406375fa95e9111653b8139d74cebe8c65b01.tar.bz2 feed2imap-92b406375fa95e9111653b8139d74cebe8c65b01.zip |
Only include images once as attachments if the image is duplicated in the item (thanks to Joachim Breitner for noticing)
Diffstat (limited to '')
-rw-r--r-- | lib/feed2imap/itemtomail.rb | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/feed2imap/itemtomail.rb b/lib/feed2imap/itemtomail.rb index ec3bbfb..00ce84f 100644 --- a/lib/feed2imap/itemtomail.rb +++ b/lib/feed2imap/itemtomail.rb @@ -95,20 +95,24 @@ def item_to_mail(item, index, updated, from = 'Feed2Imap', inline_images = false texthtml.add_part(htmlpart) message.add_part(texthtml) + cids = [] htmlpart.body.gsub!(/(<img[^>]+)src="(\S+?\/([^\/]+?\.(png|gif|jpe?g)))"([^>]*>)/i) do |match| # $2 contains url, $3 the image name, $4 the image extension begin image = Base64.encode64(HTTPFetcher::fetch($2, Time.at(0)).chomp) + "\n" cid = "#{Digest::MD5.hexdigest($2)}@feed2imap.acme.com" - imgpart = RMail::Message.new - imgpart.header.set('Content-ID', "<#{cid}>") - type = $4 - type = 'jpeg' if type.downcase == 'jpg' # hack hack hack - imgpart.header.set('Content-Type', "image/#{type}", 'name' => $3) - imgpart.header.set('Content-Disposition', 'attachment', 'filename' => $3) - imgpart.header.set('Content-Transfer-Encoding', 'base64') - imgpart.body = image - message.add_part(imgpart) + if not cids.include?(cid) + cids << cid + imgpart = RMail::Message.new + imgpart.header.set('Content-ID', "<#{cid}>") + type = $4 + type = 'jpeg' if type.downcase == 'jpg' # hack hack hack + imgpart.header.set('Content-Type', "image/#{type}", 'name' => $3) + imgpart.header.set('Content-Disposition', 'attachment', 'filename' => $3) + imgpart.header.set('Content-Transfer-Encoding', 'base64') + imgpart.body = image + message.add_part(imgpart) + end # now to specify what to replace with newtag = "#{$1}src=\"cid:#{cid}\"#{$5}" #print "#{cid}: Replacing '#{$&}' with '#{newtag}'...\n" |