# encoding: utf-8 require 'test_helper' class EmailParserTest < ActiveSupport::TestCase test 'parse' do files = [ { :data => IO.read('test/fixtures/mail1.box'), :body_md5 => 'b57d21dcac6b05e1aa67af51a9e4c1ec', :params => { :from => 'John.Smith@example.com', :from_email => 'John.Smith@example.com', :from_display_name => '', :subject => 'CI Daten für PublicView ', }, }, { :data => IO.read('test/fixtures/mail2.box'), :body_md5 => '154c7d3ae7b94f99589df62882841b08', :params => { :from => 'Martin Edenhofer ', :from_email => 'martin@example.com', :from_display_name => 'Martin Edenhofer', :subject => 'aaäöüßad asd', :body_md5 => "äöüß ad asd\n\n-Martin\n\n--\nOld programmers never die. They just branch to a new address.\n", :body => "äöüß ad asd -Martin -- Old programmers never die. They just branch to a new address. " }, }, { :data => IO.read('test/fixtures/mail3.box'), :body_md5 => '96a0a7847c1c60e82058db8f8bff8136', :params => { :from => '"Günther John | Example GmbH" ', :from_email => 'k.guenther@example.com', :from_display_name => 'Günther John | Example GmbH', :subject => 'Ticket Templates', }, }, { :data => IO.read('test/fixtures/mail4.box'), :body_md5 => '9fab9a0e8523011fde0f3ecd80f8d72c', :params => { :from => '"Günther Katja | Example GmbH" ', :from_email => 'k.guenther@example.com', :from_display_name => 'Günther Katja | Example GmbH', :subject => 'AW: Ticket Templates [Ticket#11168]', :body => "Hallo Katja, super! Ich freu mich! Wir würden gerne die Präsentation/Einführung in die Ticket Templates per Screensharing oder zumindest per Telefon machen. Mögliche Termine: o Do, 10.05.2012 15:00-16:00 o Fr, 11.05.2012 13:00-14:00 o Di, 15.05.2012 17:00-18:00 Über Feedback würde ich mich freuen! PS: Zur besseren Übersicht habe ich ein Ticket erstellt. :) Im Footer sind unsere geschäftlichen Kontaktdaten (falls diese irgendwann einmal benötigt werden sollten), mehr dazu in ein paar Tagen. Liebe Grüße! -Martin ", }, }, { :data => IO.read('test/fixtures/mail5.box'), :body_md5 => 'f34033e9a34bb5367062dd5df21115df', :params => { :from => 'marc.smith@example.com (Marc Smith)', :from_email => 'marc.smith@example.com', :from_display_name => 'Marc Smith', :subject => 'Re: XXXX Betatest Ticket Templates [Ticket#11162]', }, }, { :data => IO.read('test/fixtures/mail6.box'), :body_md5 => 'cc60217317756f45a6e02829c0a8c49c', :params => { :from => '"Hans BÄKOSchönland" ', :from_email => 'me@bogen.net', :from_display_name => 'Hans BÄKOSchönland', :subject => 'utf8: 使って / ISO-8859-1: Priorität" / cp-1251: Сергей Углицких', :body => "this is a test ___ [1] Compare Cable, DSL or Satellite plans: As low as $2.95. Test1:8 Test2:& Test3:∋ Test4:& Test5:= [1] http://localhost/8HMZENUS/2737??PS=" }, }, { :data => IO.read('test/fixtures/mail7.box'), :body_md5 => 'c78f6a91905538ee32bc0bf71f70fcf2', :params => { :from => 'Eike.Ehringer@example.com', :from_email => 'Eike.Ehringer@example.com', :from_display_name => '', :subject => 'AW:Installation [Ticket#11392]', :body => "Hallo. Jetzt muss ich dir noch kurzfristig absagen für morgen. Lass uns evtl morgen Tel. Mfg eike Martin Edenhofer via Znuny Team --- Installation [Ticket#11392] --- Von: \"Martin Edenhofer via Znuny Team\" An eike.xx@xx-corpxx.com Datum: Mi., 13.06.2012 14:30 Betreff Installation [Ticket#11392] ___ Hi Eike, anbei wie gestern telefonisch besprochen Informationen zur Vorbereitung. a) Installation von http://ftp.gwdg.de/pub/misc/zammad/RPMS/fedora/4/zammad-3.0.13-01.noarch.rpm (dieses RPM ist RHEL kompatible) und dessen Abhängigkeiten. b) Installation von \"mysqld\" und \"perl-DBD-MySQL\". Das wäre es zur Vorbereitung! Bei Fragen nur zu! -Martin -- Martin Edenhofer Znuny GmbH // Marienstraße 11 // 10117 Berlin // Germany P: +49 (0) 30 60 98 54 18-0 F: +49 (0) 30 60 98 54 18-8 W: http://example.com Location: Berlin - HRB 139852 B Amtsgericht Berlin-Charlottenburg Managing Director: Martin Edenhofer", }, }, { :data => IO.read('test/fixtures/mail8.box'), :body_md5 => 'ca502c70a1b006f5184d1f0bf79d5799', :attachments => [ { :md5 => 'c3ca4aab222eed8a148a716371b70129', :filename => 'message.html', }, ], :params => { :from => 'Franz.Schaefer@example.com', :from_email => 'Franz.Schaefer@example.com', :from_display_name => '', :subject => 'could not rename: ZZZAAuto', :body_md5 => "Gravierend? Mit freundlichen Grüßen Franz Schäfer Manager Information Systems Telefon +49 000 000 8565 franz.schaefer@example.com Example Stoff GmbH Fakultaet Düsseldorfer Landstraße 395 D-00000 Hof www.example.com Geschäftsführung/Management Board: Jan Bauer (Vorsitzender/Chairman), Oliver Bauer, Heiko Bauer, Boudewijn Bauer Sitz der Gesellschaft / Registered Office: Hof Registergericht / Commercial Register of the Local Court: HRB 0000 AG Hof ", }, }, { :data => IO.read('test/fixtures/mail9.box'), :body_md5 => 'c70de14cc69b17b07850b570d7a4fbe7', :attachments => [ { :md5 => '9964263c167ab47f8ec59c48e57cb905', :filename => 'message.html', }, { :md5 => 'ddbdf67aa2f5c60c294008a54d57082b', :filename => 'super-seven.jpg', }, ], :params => { :from => 'Martin Edenhofer ', :from_email => 'martin@example.de', :from_display_name => 'Martin Edenhofer', :subject => 'AW: OTRS / Anfrage OTRS Einführung/Präsentation [Ticket#11545]', :body => "Enjoy!\n\n-Martin\n\n--\nOld programmers never die. They just branch to a new address.\n\n" }, }, { :data => IO.read('test/fixtures/mail10.box'), :body_md5 => 'ddfad696bd34d83f607763180243f3c5', :attachments => [ { :md5 => '52d946fdf1a9304d0799cceb2fcf0e36', :filename => 'message.html', }, { :md5 => 'a618d671348735744d4c9a4005b56799', :filename => 'image001.jpg', }, ], :params => { :from => 'Smith Sepp ', :from_email => 'smith@example.com', :from_display_name => 'Smith Sepp', :subject => 'Gruß aus Oberalteich', # :body => "Herzliche Grüße aus Oberalteich sendet Herrn Smith\n\n \n\nSepp Smith - Dipl.Ing. agr. (FH)\n\nGeschäftsführer der example Straubing-Bogen\n\nKlosterhof 1 | 94327 Bogen-Oberalteich\n\nTel: 09422-505601 | Fax: 09422-505620\n\nInternet: http://example-straubing-bogen.de \n\nFacebook: http://facebook.de/examplesrbog \n\n - European Foundation für Quality Management\n\n" }, }, { :data => IO.read('test/fixtures/mail11.box'), :body_md5 => 'cf8b26d9fc4ce9abb19a36ce3a130c79', :attachments => [ { :md5 => '08660cd33ce8c64b95bcf0207ff6c4d6', :filename => 'message.html', }, ], :params => { :from => 'CYLEX Newsletter ', :from_email => 'carina.merkant@cylex.de', :from_display_name => 'CYLEX Newsletter', :subject => 'Eine schöne Adventszeit für ZNUNY GMBH - ENTERPRISE SERVICES FÜR OTRS', :to => 'enjoy_us@znuny.com', }, }, { :data => IO.read('test/fixtures/mail12.box'), :body_md5 => '8b48e082bc77e927d395448875259172', :attachments => [ { :md5 => '46cf0f95ea0c8211cbb704e1959b9173', :filename => 'message.html', }, { :md5 => 'b6e70f587c4b1810facbb20bb5ec69ef', :filename => 'image002.png', }, ], :params => { :from => 'Alex.Smith@example.com', :from_email => 'Alex.Smith@example.com', :from_display_name => '', :subject => 'AW: Agenda [Ticket#11995]', :to => 'example@znuny.com', }, }, { :data => IO.read('test/fixtures/mail13.box'), :body_md5 => '58806e006b14b04a535784a5462d09b0', :attachments => [ { :md5 => '29cc1679f8a44c72be6be7c1da4278ac', :filename => 'message.html', }, ], :params => { :from => 'thomas.smith@example.com', :from_email => 'thomas.smith@example.com', :from_display_name => '', :subject => 'Antwort: Probleme ADB / Anlegen von Tickets [Ticket#111079]', :to => 'q1@znuny.com', }, }, { :data => IO.read('test/fixtures/mail14.box'), :body_md5 => '154c7d3ae7b94f99589df62882841b08', :attachments => [ { :md5 => '5536be23f647953dc39c1673205d6f5b', :filename => 'file-1', }, { :md5 => '4eeeae078b920f9d0708353ba0f6aa63', :filename => 'file-2', }, ], :params => { :from => '"Müller, Bernd" ', :from_email => 'Bernd.Mueller@example.com', :from_display_name => "Müller, Bernd", :subject => 'AW: OTRS [Ticket#118192]', :to => '\'Martin Edenhofer via Znuny Sales\' ', }, }, # spam email { :data => IO.read('test/fixtures/mail15.box'), :body_md5 => 'd41d8cd98f00b204e9800998ecf8427e', :attachments => [ # :preferences=>{"Message-ID"=>"", "Content-Type"=>"application/octet-stream; name=\"\xBC\xA8\xD0\xA7\xB9\xDC\xC0\xED,\xBE\xBF\xBE\xB9\xCB\xAD\xB4\xED\xC1\xCB.xls\"", "Mime-Type"=>"application/octet-stream", "Charset"=>"UTF-8"}} # mutt c1abb5fb77a9d2ab2017749a7987c074 { :md5 => '2ef81e47872d42efce7ef34bfa2de043', :filename => 'file-1', }, ], :params => { :from => '"Sara.Gang" ', :from_email => 'ynbe.ctrhk@gmail.com', :from_display_name => "Sara.Gang", :subject => '绩效管理,究竟谁错了', :to => 'info42@znuny.com', }, }, # spam email { :data => IO.read('test/fixtures/mail16.box'), :body_md5 => 'a2367adfa77857a078dad83826d659e8', :params => { :from => nil, :from_email => 'vipyimin@126.com', :from_display_name => "", :subject => '【 直通美国排名第49大学 成功后付费 】', :to => '"enterprisemobility.apacservice" ', }, }, # spam email { :data => IO.read('test/fixtures/mail17.box'), :body_md5 => 'c32d6502f47435e613a2112625118270', :params => { :from => '"都琹" ', :from_email => 'ghgbwum@185.com.cn', :from_display_name => "都琹", :subject => '【专业为您注册香港及海外公司(好处多多)】                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               人物 互联网事百度新闻独家出品传媒换一批捷克戴维斯杯决赛前任命临时领队 前领队因病住院最新:盖世汽车讯 11月6日,通用汽车宣布今年10月份在华销量...减持三特索道 孟凯将全力发展湘鄂情江青摄影作品科技日报讯 (记者过国忠 通讯员陈飞燕)江苏省无线电科学研究所有限公司院士工作站日前正式建...[详细]', :to => 'info@znuny.com', }, }, { :data => IO.read('test/fixtures/mail18.box'), :body_md5 => '66f20e8557095762ccad9a6cb6f59c3a', :params => { :from => 'postmaster@example.com', :from_email => 'postmaster@example.com', :from_display_name => '', :subject => 'Benachrichtung zum =?unicode-1-1-utf-7?Q?+ANw-bermittlungsstatus (Fehlgeschlagen)?=', :to => 'sales@znuny.org', }, }, { :data => IO.read('test/fixtures/mail19.box'), :body_md5 => '3e42be74f967379a3053f21f4125ca66', :params => { :from => '"我" <>', :from_email => '"=?GB2312?B?ztI=?=" <>', :from_display_name => '', :subject => '《欧美简讯》', :to => '377861373 <377861373@qq.com>', }, }, { :data => IO.read('test/fixtures/mail20.box'), :body_md5 => '65ca1367dfc26abcf49d30f68098f122', :params => { :from => 'Health and Care-Mall ', :from_email => 'drugs-cheapest8@sicor.com', :from_display_name => 'Health and Care-Mall', :subject => 'The Highest Grade Drugs And EXTRA LOW Price .', :to => 'info2@znuny.com', :body => "________________________________________________________________________Yeah but even when they. Beth liî ed her neck as well ó25aHw511IΨ11xG⌊o8KHCmς9-2½23QgñV6UAD12AX←t1Lf7⊕1Ir²r1TLA5pYJhjV gPnãM36V1E89RUDΤÅ12I92s2CΘYEϒAfg∗bT11∫rIoiš¦O5oUIN1Is2S21Pp Ÿ2q1FΧ⇑eGOz⌈F1R98y§ 74”lTr8r1H2æu2E2P2q VmkfB∫SKNElst4S∃182T2G1í lY92Pu×8>RÒ¬⊕ΜIÙzÙCC412QEΡºS2!XgŒs. 2γ⇓B[1] cwspC L8I C K88H E1R?E2e31 !Calm dylan for school today. Closing the nursery with you down. Here and made the mess. Maybe the oï from under his mother. Song of course beth touched his pants. When someone who gave up from here. Feel of god knows what. TBϖ∃M5T5ΕEf2û–N¶1vΖ'1⇓∝5S2225 Χ0jΔHbAgþE—2i6A2lD⇑LGj2nTOy11H2τ9’:Their mother and tugged it seemed like d3RsV¶H2Θi¯B∂gax1bîgdH23r2Jÿ1aIK1² n1jfaTk1Vs3952 C˜lBl‘mxGo0√2XwT8Ya 28ksa∫f1ℵs”62Q 2Ad7$p32d1e∏2e.0”261a2Κ63αSM2 Nf52CdL∪1i↔xcaa52R3l6Lc3i2z16só9èU zDE1aE21gs25Ë2 hE1cl⊃¢11o21µBw1zF1 q2kõaXUius1r0⊆ d•∈2$1Z2F1218l.07d56PÚl25JAO6 45loV2iv1i2ãΥ⌊a2⊃d2gÃΥ3™r22u¸aWjO8 n40–Soyè2u1∅23p1JΜNeÌ22jrá2rΚ 1229A2rAkc8nuEtl22ai‡OB8vSbéσeιõq1+65cw 2s8Uaò4PrsE1y8 ⟨fMElhϒ⋅Jo8pmzwjˆN1 wv39aW1WtsvuU3 1aœ1$2ΝnR2O2⌉B.∀2c→5Ê9χw5p1⁄N fHGFVfE³2iσjGpa51kgg12cWrUq52akx2h 0F24P¸2L2rn22Ïo2Ý2HfoRb2eUαw6s2N‾ws¶13Βi2X1¸ofgtHnR⊥32ase92lF1H5 26B1a⊃2iϒsô12i ÅkMyl2J1ÄoQ–0ℑwvmù2 2ˆμ\"aQ7jVse62f 1h2p$L2r£3i1t2.323h5qP8g0♥÷R2 ·iƒPV1Β∋øiF1R1a4v32gL9¢wr1722a2û0η þ12ßStu21u7á¡lp2ocEe1SLlrV2Xj ⊥Uµ1F¬48ðov71Arm242c2Vw2e1§⊇N 1242aLþZ2ski×5 c€pBlû26∂ol1fÚwKß32 4i2la4C12sRE21 ãeI2$2z8t442fG.¸1≤12F’Ã152in⊄ Tl1ëC2v7Ci71X8a225NlþU⟩ιicO∑«s·iKN UuϒjS1j52u2Jü§pn5°1e¥Û3℘r1W‡2 J‹S7A1j0sc&1pkt1qq2iZ561vn81∗e22Q3+723Š ∑RkLaKX2as2s22 ï111lD2z8o278wwU–ÀC T6U2aϒ938s20Gÿ Ox2∈$98‘R21H25.ÒL6b9θrδ292f9j Please matt on his neck. Okay matt huï ed into your mind Since her head to check dylan. Where dylan matt got up there 1ȱΑAYQ1dN12ϒXT00ÀvI∨ío8-1b®8AΕ1V4LgÕ↑7LKtgcEiw1yR5Y22GRA1°I10C2C2Tiü/2wc0Ax211SÜÂ2ŒTÁ22òHpNâùM6È10A5Tb1:Simmons and now you really is what. Matt picked up this moment later that. 251yV922Yeg1↑DnJ3l4t22b1os∏jll÷iS2iwBÎ4n021Ö 1f÷2a11l2suÚ82 2LCblgvN½o1oP3wn♠90 FZora&M™xsΚbb1 251ξ$12·22iG2∇1⊇Ξ¬3.0P0κ53V1203ÝYz 2X¢BAZ4Kwddu2vvuB↑Βa1’THi0—93rZεj0 1rΜ1a2111s71Ιf 8⇓2olW„62o6yH¥wKZ∧6 21h2aKJ“ℜs48IÌ 21¬1$ZΣ122ñ26B42YMZ.21V19f10å54⌈R8 2w\"9N2gBÀa2Sê1s≅gGÔo0Dn4n↵γ7⊗eS7e2xf3Jd q÷CMa221isNMZp zz0˜lΚLw8o229ww1§Qu 1D⌈ía2212sJ811 3où2$¦1Nℜ1>R2t7WPM1.181D92k5D9∗8≈R l131Sj1Ψ8pΣ2Kùi6rr2rbÛu¬i2V∗∏v5ª10a27B1 Ú♦Ξsa9j3χsa1iΟ Oi℘ml6óf2owbz∀wA6ù→ 22b2ai1wbs♦βGs 281i$iÀˆ12⊃2wC82n8o.13NJ9S11Θ0P1Sd What made no one in each time. Mommy was thinking of course beth. Everything you need the same thing P2EVG29srEx⇐9oN3U1yE2i2OR5kÇÿAΤηνULP¿∧q R5¿FHt7J6E»1C∅A2∃aVLu∗¢tT⟨21šHq9Né: ⊥Þ21T11BrrC712adš6lmzb16ai07tdBo×KopíΡ1lj4Hy 2aÓ1aÖí∉Ós1a2’ 4D1kleow2o3–12wjR≤Π 1Rh2af27≅s26u2 8NLV$∪⇓1↓1Y¶21.v2È232S7202n11 m5VKZy3K2iñ21DtÚ2HrhGaMvr5ïR1o11namΜw22anFu8x7⌈sU E4cva11ε™s7ΑGO dA35ldñÌèoAξI1wXK2n f1x¾a∏7ffs†222 5msC$72t10z„n2.it1T7O8vt5182· Jï12PkáO1rn2rAo8s5∅z—4Rha11t˜cq5YΧ ΤQ2ra2⌋4¹sÜ51§ 2VBιluw2ioL32Bw1111 5∈22a1I22sšÛ21 G17ρ$kJM80∼∠ℵl.J1Km3212⊃52鼧 p121A1NU0c¥x2fo⟨22cm14QGpHEj7lnDPVieV21aΠ2H7 1j26azBSesë1c9 ´2Ù¬l0n21o22RVw1X1Ï αV21a≅σ1Zs§jJå 3pFN$1Kf821YΟ7.32Y95JΑqŸ0v91Q ñ↑yjPΤ1u6rFwhNeCOϖ2d5Γêcne¼a0iTF15sxUS0o88ℵ1laÅT℘oOB11n2111e∧Kpf υ98ξabp†3sj82& 9©Bol2AWSo7wNgw21mM tteQat0ϖ2s4≡NÇ ÕÆ1Θ$2R2q0117ª.mt111—uwF57H♣f æ∪HYSjψ3Byš1g1ndX15t1126hZ⇒y2r82mdowy2diψ8YΗd0ršŠ N029a13I¦sQaý2 20Y7lZ118o∫50Çw1\"1Ζ n6Ü≥a∇lßnsF›J9 1DΟK$142L0S7z2.Ta2X31R9953911 Turning to mess up with. Well that to give her face Another for what she found it then. Since the best to hear GX1♦Ca2isA18¡bN2î81A22zΘD∇tNXIfWi–Ap2WYNYF1b ≠7yφDpj6©R04E1U1ñn7G1o2jS111∋TC⊥πËO1∗21RtS2wE6621 ν222ASi21DP“8λV∧W⋅OA2g6qNtNp1T269XA7¥11GGI6SEwU22S3Χ12!Okay let matt climbed in front door. Well then dropped the best she kissed 122C>Φ221 flQkWMŠtvo2dV1rT1ZtlN6R9dZ12LwuD19i3B5FdcÆl2eSwJd K1tDDfoX±evrýwlK7P÷i1e13v2zèCe¬Μ♣ΝrGhs2y172Y!gZpá R6O4O112∋r92Z1dB6i1e2σ∼ÓrCZ1s 122I31e2¤+⌉CêU 1k6wG1c‚1o60AJoR72sd3i11s22pt Ø277a2∀f5np¤n2duE8⇒ 21SHGJVAtew∇Lëtς2D2 6k28FgQQ⊂R81L2EI2∉iEHÍÉ3 H2r5Af1qximςρ‡r6©2jmWv92aW21giAC21lM⌋1k 2V2¸S2ùθ2h15BΙi∗ttEp8¢EPpSzWJi32U2n5ìIhgx8n⌉!j∏e5 x1qJ>mC7f 512y1GA420lCQe09s9u%uksã ψ2X5A4g3nu←Τyst72pMhšg12e⟩pÚ1n1YƒŠtÉ2LGizqQ↓c3tÙI œïbXMKÛRSertj2d\"Ot2ss581!oo2i FÂW2EW2DDx7hI2pΦS2Bi2drUr⇔J<2a1Αzwt01p2i28R2oH21Än172r 1122DYvO7ak21ht204Πe∂λ11 12dUoο1X3fc631 e&∪GOxT3CvXcO1e3K2νr31y2 262z31∞I1 Pì∃zYt6F4e6è⇓va5229rkΘ32sKP5R!ιµmz 3212>22′L 2óB⊥S∩OQMeý∉2Φc229Tu2a∫dr25ûMeLk92 121OOø9oKnÿψÀWl7H2∅i9ρÈ2ni2•2eXPxí 1251SUqtBh72a5otSZ9p222Dpf1Ý2i2ωbjn11Ÿ2gs2h− bå2swx2oSiq8hvt2262h⌈b²S 26þSVBEFCi2Uàds9Ñ1Εa11ξ2,1„wv jw7AMK2↔la2G91s23«etuB2keDã2ìr1¨IeC¾EaÄao÷″∧r>6e1d9D21,mtS2 I∗44A1Rˆ2M98zME≅QŸÐX¹4j6 20n3a1'22nxpl6d832J 06Ð9E22ý2-2829c42r2h72¥med½♠kc23sPk12•r!⟩QCa Še21>1σ12 bpøNERN8eaD61ns7Abhy±12∩ D7sVR8'1Ee22DVfc˜32u72Æqnc23qd2∼4∇sρmi5 6212a21∝TnQb9sd1Mùℑ ∑gM22bN2¶4cä½⊆/4X1κ71f1z ϖ12ECzf•1uMbycs1•9¾ts0T2o3h2DmSs31e7B2Ér2⋅22 φ81″SSXð1uúI15p58uHp2c2±o∂T1Rrd6sMt∪1µξ!24Xb Both hands through the fear in front. Wade to give it seemed like this. Yeah but one for any longer. Everything you going inside the kids. [1] http://pxmzcgy.storeprescription.ru?zz=fkxffti" }, }, { :data => IO.read('test/fixtures/mail21.box'), :body_md5 => 'f909a17fde261099903f3236f8755249', :params => { :from => 'Viagra Super Force Online ', :from_email => 'pharmacy_affordable1@ertelecom.ru', :from_display_name => 'Viagra Super Force Online', :subject => 'World Best DRUGS Mall For a Reasonable Price.', :to => 'info@znuny.nix', }, }, { :data => IO.read('test/fixtures/mail22.box'), :body_md5 => '9e79cb133d52afe9e18e8438df539305', :params => { :from => 'Gilbertina Suthar ', :from_email => 'ireoniqla@lipetsk.ru', :from_display_name => 'Gilbertina Suthar', :subject => 'P..E..N-I..S__-E N L A R-G E-M..E..N T-___P..I-L-L..S...Info.', :to => 'Info ', :body => "Puzzled by judith bronte dave. Melvin will want her way through with. Continued adam helped charlie cried. Soon joined the master bathroom. Grinned adam rubbed his arms she nodded. Freemont and they talked with beppe. Thinking of bed and whenever adam. Mike was too tired man to hear.I10PQSHEJl2Nwf˜2113S173 Î1mEbb5N371LϖC7AlFnR1♦HG64B242¦M2242zkΙN⌉7⌉TBNÐ T2xPIògI2ÃlL2ÕML⊥22SaΨRBreathed adam gave the master bedroom door. Better get charlie took the wall. Charlotte clark smile he saw charlie. Dave and leaned her tears adam. Maybe we want any help me that. Next morning charlie gazed at their father. Well as though adam took out here. Melvin will be more money. Called him into this one last night. Men joined the pickup truck pulled away. Chuck could make sure that.[1] †p1C?L I?C K?88 5 E R?EEOD !Chuckled adam leaned forward and le? charlie. Just then returned to believe it here. Freemont and pulling out several minutes. [1] http://аоск.рф?jmlfwnwe&ucwkiyyc", }, }, { :data => IO.read('test/fixtures/mail23.box'), :body_md5 => '545a1b067fd10ac636c20b44f5df8868', :params => { :from => 'marketingmanager@nthcpghana.com', :from_email => 'marketingmanager@nthcpghana.com', :from_display_name => '', :subject => nil, :to => 'undisclosed-recipients: ;', }, }, { :data => IO.read('test/fixtures/mail24.box'), :body_md5 => 'd41d8cd98f00b204e9800998ecf8427e', :params => { :from => 'oracle@IG0-1-DB01.example.com', :from_email => 'oracle@IG0-1-DB01.example.com', :from_display_name => '', :subject => 'Regelsets im Test-Status gefunden: 1', :to => 'support@example.com', :body => '', }, :attachments => [ { :data => 'RULESET_ID;NAME;ACTIV;RUN_MODE;AUDIT_MODIFY_DATE 387;DP DHL JOIN - EN : Einladung eAC;T;SM;1.09.14 ', :md5 => 'a61c76479fdc2f107fe2697ac5ad60ae', :filename => 'rulesets-report.csv', }, ], }, { :data => IO.read('test/fixtures/mail25.box'), :body_md5 => '436f71d8d8a4ffbd3f18fc9de7d7f767', :params => { :from => 'oracle@IG0-1-DB01.example.com', :from_email => 'oracle@IG0-1-DB01.example.com', :from_display_name => '', :subject => 'Regelsets im Test-Status gefunden: 1', :to => 'support@example.com', :body => "begin 644 rulesets-report.csv M4E5,15-%5%])1#M.04U%.T%#5$E6.U)53E]-3T1%.T%51$E47TU/1$E&65]$ M051%\"C,X-SM$4\"!$2$P@2D])3B`M($5.(#H@16EN;&%D=6YG(&5!0SM4.U-- *.S$W+C`Y+C$T\"@`` ` end ", }, }, { :data => IO.read('test/fixtures/mail26.box'), :body_md5 => 'c68fd31c71a463c7ea820ccdf672c680', :params => { :from => 'gate ', :from_email => 'team@support.gate.de', :from_display_name => 'gate', :subject => 'Ihre Rechnung als PDF-Dokument', :to => 'Martin Edenhofer ', :body => "******************************************************************** gate Service -------------------------------------------------------------------- gate GmbH * Gladbacher Str. 74 * 40219 Düsseldorf ", }, :attachments => [ { :md5 => '5d6a49a266987af128bb7254abcb2896', :filename => 'message.html', }, { :md5 => '552e21cd4cd9918678e3c1a0df491bc3', :filename => 'invoice_gatede_B181347.txt', }, ], }, { :data => IO.read('test/fixtures/mail27.box'), :body_md5 => 'd41d8cd98f00b204e9800998ecf8427e', :params => { :from => 'caoyaoewfzfw@21cn.com', :from_email => 'caoyaoewfzfw@21cn.com', :from_display_name => "", :subject => "\r\n蠭龕中層管理者如何避免角色行为誤区", :to => 'duan@seat.com.cn, info@znuny.com, jinzh@kingdream.com', :body => "", }, :attachments => [ { :md5 => '498b8ae7b26033af1a08f85644d6695c', :filename => 'message.html', }, ], }, { :data => IO.read('test/fixtures/mail28.box'), :body_md5 => '5872ddcdfdf6bfe40f36cd0408fca667', :params => { :from => 'kontakt@example.de', :from_email => 'kontakt@example.de', :from_display_name => "", :subject => "Bewerbung auf Ihr Stellenangebot", :to => 'info@znuny.inc', :body => "no visible content", }, :attachments => [ { :md5 => '6605d016bda980cdc65fb72d232e4df9', :filename => 'Znuny GmbH .pdf', }, { :md5 => '6729bc7cbe44fc967a9d953c4af114b7', :filename => 'Lebenslauf.pdf', }, ], }, { :data => IO.read('test/fixtures/mail29.box'), :body_md5 => 'b6cc8164ce896046d631ddd44f8c9f6e', :params => { :from => 'Example Sales ', :from_email => 'sales@example.com', :from_display_name => "Example Sales", :subject => "Example licensing information: No channel available", :to => 'info@znuny.inc', :body => "Dear Mr. Edenhofer,We want to keep you updated on TeamViewer licensing shortages on a regular basis. We would like to inform you that since the last message on 25-Nov-2014 there have been temporary session channel exceedances which make it impossible to establish more sessions. Since the last e-mail this has occurred in a total of 1 cases. Additional session channels can be added at any time. Please visit our [1] TeamViewer Online Shop for pricing information. Thank you - and again all the best with TeamViewer! Best regards, Your TeamViewer Team P.S.: You receive this e-mail because you are listed in our database as person who ordered a TeamViewer license. Please click [2] here to unsubscribe from further e-mails. ----------------------------- [3] www.teamviewer.com TeamViewer GmbH * Jahnstr. 30 * 73037 Göppingen * Germany Tel. 07161 60692 50 * Fax 07161 60692 79 Registration AG Ulm HRB 534075 * General Manager Holger Felgner [1] https://www.teamviewer.com/en/licensing/update.aspx?channel=D842CS9BF85-P1009645N-348785E76E [2] http://www.teamviewer.com/en/company/unsubscribe.aspx?id=1009645&ident=E37682EAC65E8CA6FF36074907D8BC14 [3] http://www.teamviewer.com", }, }, ] files.each { |file| parser = Channel::EmailParser.new data = parser.parse( file[:data] ) #puts '++' + data[:body].to_s + '++' # check body md5 = Digest::MD5.hexdigest( data[:body] ) #puts "IS #{md5} / should #{file[:body_md5]}" assert_equal( file[:body_md5], md5 ) # check params file[:params].each { |key, value| if key.to_s == 'body_md5' #puts 'md5' #puts '++' + data[:body].to_s + '++' #puts '++' + file[:params][key.to_sym].to_s + '++' assert_equal( Digest::MD5.hexdigest( file[:params][key.to_sym].to_s ), Digest::MD5.hexdigest( data[:body].to_s ) ) else assert_equal( file[:params][key.to_sym], data[key.to_sym], "check #{key}" ) end } # check attachments if file[:attachments] attachment_count_config = file[:attachments].length attachment_count_email = 0 file[:attachments].each { |attachment| attachment_count_email += 1 found = false data[:attachments].each { |attachment_parser| next if found file_md5 = Digest::MD5.hexdigest( attachment_parser[:data] ) #puts 'Attachment:' + attachment_parser.inspect + '-' + file_md5 if attachment[:md5] == file_md5 found = true assert_equal( attachment[:filename], attachment_parser[:filename] ) end } if !found assert( false, "Attachment not found! MD5: #{attachment[:md5]} - #{attachment[:filename].to_s}" ) end } assert_equal( attachment_count_config, attachment_count_email ) end } end end