diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 4c6790027..6f570e8b6 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -8411,26 +8411,11 @@ output { } table { - border: none; table-layout: auto; display: block; width: 100%; overflow: auto; - word-break: keep-all; - - td, th { - padding: 7px 12px; - border: 1px solid hsl(0,0%,87%); - } - - th { - font-weight: bold; - text-align: center; - } - - tbody tr:nth-child(even) { - background: hsl(0,0%,97%); - } + word-break: break-all; col { width: auto; diff --git a/config/initializers/html_sanitizer.rb b/config/initializers/html_sanitizer.rb index f504e2acc..6866152ca 100644 --- a/config/initializers/html_sanitizer.rb +++ b/config/initializers/html_sanitizer.rb @@ -37,17 +37,87 @@ Rails.application.config.html_sanitizer_attributes_whitelist = { 'ins' => %w(cite datetime), 'li' => %w(value), 'ol' => %w(reversed start type), - 'table' => %w(align bgcolor border cellpadding cellspacing frame rules sortable summary width), - 'td' => %w(abbr align axis colspan headers rowspan valign width), - 'th' => %w(abbr align axis colspan headers rowspan scope sorted valign width), + 'table' => %w(align bgcolor border cellpadding cellspacing frame rules sortable summary width style), + 'td' => %w(abbr align axis colspan headers rowspan valign width style), + 'th' => %w(abbr align axis colspan headers rowspan scope sorted valign width style), 'ul' => %w(type), 'q' => %w(cite), + 'span' => %w(style), 'time' => %w(datetime pubdate), } # only this css properties are allowed -Rails.application.config.html_sanitizer_css_properties_whitelist = %w( - width height - max-width min-width - max-height min-height -) +Rails.application.config.html_sanitizer_css_properties_whitelist = { + 'img' => %w( + width height + max-width min-width + max-height min-height + ), + 'span' => %w( + color + ), + 'table' => %w( + background-color color + padding margin + text-align + border border-collapse border-style + + border-top-width + border-right-width + border-bottom-width + border-left-width + + border-top-color + border-right-color + border-bottom-color + border-left-color + ), + 'th' => %w( + background-color color + padding margin + text-align + border border-collapse border-style + + border-top-width + border-right-width + border-bottom-width + border-left-width + + border-top-color + border-right-color + border-bottom-color + border-left-color + ), + 'tr' => %w( + background-color color + padding margin + text-align + border border-collapse border-style + + border-top-width + border-right-width + border-bottom-width + border-left-width + + border-top-color + border-right-color + border-bottom-color + border-left-color + ), + 'td' => %w( + background-color color + padding margin + text-align + border border-collapse border-style + + border-top-width + border-right-width + border-bottom-width + border-left-width + + border-top-color + border-right-color + border-bottom-color + border-left-color + ), +} diff --git a/lib/core_ext/string.rb b/lib/core_ext/string.rb index d7dd013f0..5a8bf0a3b 100644 --- a/lib/core_ext/string.rb +++ b/lib/core_ext/string.rb @@ -289,8 +289,9 @@ class String def html2html_strict string = "#{self}" # rubocop:disable Style/UnneededInterpolation - string = HtmlSanitizer.cleanup(string).strip + string = HtmlSanitizer.cleanup_replace_tags(string) string = HtmlSanitizer.strict(string, true).strip + string = HtmlSanitizer.cleanup(string).strip # as fallback, use html2text and text2html if string.blank? @@ -313,6 +314,7 @@ class String string.gsub!(%r{

[[:space:]]+

}im, '

 

') string.gsub!(%r{\A([[:space:]]*)*}i, '') string.gsub!(%r{[[:space:]]*([[:space:]]*)*\Z}i, '') + string.gsub!(%r{(

){1,10}\Z}i, '') string.signature_identify('html') diff --git a/lib/html_sanitizer.rb b/lib/html_sanitizer.rb index d004bbcd1..6882147f3 100644 --- a/lib/html_sanitizer.rb +++ b/lib/html_sanitizer.rb @@ -22,14 +22,27 @@ satinize html string based on whiltelist scrubber_link = Loofah::Scrubber.new do |node| # check if href is different to text - if external && node.name == 'a' && !url_same?(node['href'], node.text) + if node.name == 'a' && !url_same?(node['href'], node.text) if node['href'].blank? node.replace node.children.to_s Loofah::Scrubber::STOP - elsif (node.children.empty? || node.children.first.class == Nokogiri::XML::Text) && node.text.present? - text = Nokogiri::XML::Text.new("#{node['href']} (", node.document) - node.add_previous_sibling(text) - node['href'] = cleanup_target(node.text) + elsif ((node.children.empty? || node.children.first.class == Nokogiri::XML::Text) && node.text.present?) || (node.children.size == 1 && node.children.first.content == node.content && node.content.present?) + if node.text.downcase.start_with?('http', 'ftp', '//') + a = Nokogiri::XML::Node.new 'a', node.document + a['href'] = node['href'] + a['rel'] = 'nofollow noreferrer noopener' + a['target'] = '_blank' + a.content = node['href'] + node.add_previous_sibling(a) + text = Nokogiri::XML::Text.new(' (', node.document) + node.add_previous_sibling(text) + node['href'] = cleanup_target(node.text) + else + text = Nokogiri::XML::Text.new("#{node.text} (", node.document) + node.add_previous_sibling(text) + node.content = cleanup_target(node['href']) + node['href'] = cleanup_target(node['href']) + end text = Nokogiri::XML::Text.new(')', node.document) node.add_next_sibling(text) else @@ -145,7 +158,8 @@ satinize html string based on whiltelist prop = local_pear.split(':') next if !prop[0] key = prop[0].strip - next if !css_properties_whitelist.include?(key) + next if !css_properties_whitelist.include?(node.name) + next if !css_properties_whitelist[node.name].include?(key) style += "#{local_pear};" } node['style'] = style @@ -198,7 +212,7 @@ satinize html string based on whiltelist cleanup html string: - * remove empty nodes (p, div, span) + * remove empty nodes (p, div, span, table) * remove nodes in general (keep content - span) string = HtmlSanitizer.cleanup(string) @@ -216,44 +230,43 @@ cleanup html string: # remove double multiple empty lines string.gsub!(/\n\n\n+/, "\n\n") + string = cleanup_structure(string, 'pre') string = cleanup_replace_tags(string) - cleanup_structure(string) + string = cleanup_structure(string) + string end def self.cleanup_replace_tags(string) - string.gsub!(%r{(.+?)}mxi) { |table| - table.gsub!(//im, '
') - table.gsub!(%r{}im, ' ') - table.gsub!(//im, '') - table.gsub!(%r{}im, ' ') - table.gsub!(//im, '') - table.gsub!(%r{}im, ' ') - table.gsub!(//im, "
\n") - #table.gsub!(%r{}im, '') - #table.gsub!(%r{}im, "\n
\n") - table.gsub!(%r{}im, ' ') - table.gsub!(//im, '') - #table.gsub!(%r{}im, '') - table.gsub!(%r{}im, "\n
") - table.gsub!(/
[[:space:]]?
/im, '
') - table.gsub!(/
[[:space:]]?
/im, '
') - table.gsub!(%r{
[[:space:]]?
}im, '
') - table.gsub!(%r{
[[:space:]]?
}im, '
') - table - } - - tags_backlist = %w(span table thead tbody td tr center) + #return string + tags_backlist = %w(span center) scrubber = Loofah::Scrubber.new do |node| next if !tags_backlist.include?(node.name) + hit = false + local_node = nil + (1..5).each { |_count| + local_node = if local_node + local_node.parent + else + node.parent + end + break if !local_node + next if local_node.name != 'td' + hit = true + } + next if hit && node.keys.count.positive? node.replace cleanup_replace_tags(node.children.to_s) Loofah::Scrubber::STOP end Loofah.fragment(string).scrub!(scrubber).to_s end - def self.cleanup_structure(string) - remove_empty_nodes = %w(p div span small) - remove_empty_last_nodes = %w(b i u small) + def self.cleanup_structure(string, type = 'all') + remove_empty_nodes = if type == 'pre' + %w(span) + else + %w(p div span small table) + end + remove_empty_last_nodes = %w(b i u small table) # remove last empty nodes and empty -not needed- parrent nodes scrubber_structure = Loofah::Scrubber.new do |node| @@ -261,10 +274,24 @@ cleanup html string: node.remove Loofah::Scrubber::STOP end - if remove_empty_nodes.include?(node.name) && node.children.size == 1 && remove_empty_nodes.include?(node.children.first.name) + + # remove empty childs + if node.content.blank? && remove_empty_nodes.include?(node.name) && node.children.size == 1 && remove_empty_nodes.include?(node.children.first.name) node.replace node.children.to_s Loofah::Scrubber::STOP end + + # remove empty childs + if remove_empty_nodes.include?(node.name) && node.children.size == 1 && remove_empty_nodes.include?(node.children.first.name) && node.children.first.content == node.content + node.replace node.children.to_s + Loofah::Scrubber::STOP + end + + # remove node if empty and parent was already a remove node + if node.content.blank? && remove_empty_nodes.include?(node.name) && node.parent && node.children.size.zero? && remove_empty_nodes.include?(node.parent.name) + node.remove + Loofah::Scrubber::STOP + end end new_string = '' @@ -290,23 +317,6 @@ cleanup html string: end end - # check if href is different to text - if node.name == 'a' && !url_same?(node['href'], node.text) - if node['href'].blank? - node.replace cleanup_structure(node.children.to_s) - Loofah::Scrubber::STOP - elsif node.children.empty? || node.children.first.class == Nokogiri::XML::Text - text = Nokogiri::XML::Text.new("#{node.text} (", node.document) - node.add_previous_sibling(text) - node.content = cleanup_target(node['href']) - node['href'] = cleanup_target(node['href']) - text = Nokogiri::XML::Text.new(')', node.document) - node.add_next_sibling(text) - else - node.content = cleanup_target(node['href']) - end - end - # remove not needed new lines if node.class == Nokogiri::XML::Text if !node.parent || (node.parent.name != 'pre' && node.parent.name != 'code') diff --git a/test/unit/aaa_string_test.rb b/test/unit/aaa_string_test.rb index 4a247497f..8530c2a2a 100644 --- a/test/unit/aaa_string_test.rb +++ b/test/unit/aaa_string_test.rb @@ -468,8 +468,7 @@ Men-----------------------' html = "

" result = "
-

 

-
" +

 

" assert_equal(result, html.html2html_strict) html = "
" @@ -489,8 +488,7 @@ Men-----------------------'

Description



' result = '
-

Description

-

' +

Description



' assert_equal(result, html.html2html_strict) html = '
@@ -522,13 +520,7 @@ Men-----------------------'
' result = '
-

Guten Morgen, Frau Koppenhagen,

-

 

-

vielen Dank für die Reservierung. Dabei allerdings die Sprache (Niederländisch) nicht erwähnt. Können Sie bitte dieses in Ihrer Reservierung vormerken?

-

 

-

Nochmals vielen Dank und herzliche Grüße

-
-
' +

Guten Morgen, Frau Koppenhagen,

 

vielen Dank für die Reservierung. Dabei allerdings die Sprache (Niederländisch) nicht erwähnt. Können Sie bitte dieses in Ihrer Reservierung vormerken?

 

Nochmals vielen Dank und herzliche Grüße

' assert_equal(result, html.html2html_strict) html = 'http://example.com' @@ -552,7 +544,8 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = '
https://www.facebook.com/test
' - result = '
https://www.facebook.com/test + result = '' assert_equal(result, html.html2html_strict) @@ -595,8 +588,7 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = 'http://what-different.example.com' - #result = 'http://example.com (http://what-different.example.com)' - result = 'http://what-different.example.com (http://example.com)' + result = "http://example.com (http://what-different.example.com)" assert_equal(result, html.html2html_strict) html = 'http://EXAMPLE.com' @@ -640,11 +632,11 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = "
http://example.com
" - result = "" + result = "" assert_equal(result, html.html2html_strict) html = "
http://example.com.
" - result = "" + result = "" assert_equal(result, html.html2html_strict) html = "
lala http://example.com.
" @@ -652,11 +644,11 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = "
http://example.com, and so on
" - result = "" + result = "
\nhttp://example.com, and so on
" assert_equal(result, html.html2html_strict) html = "
http://example.com?lala=me, and so on
" - result = "" + result = "" assert_equal(result, html.html2html_strict) html = "http://facebook.de/examplesrbog" @@ -682,19 +674,22 @@ Men-----------------------' html = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

" - result = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

\n
" + result = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

" assert_equal(result, html.html2html_strict) html = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

" - result = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

\n
" + result = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

" assert_equal(result, html.html2html_strict) html = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

" - result = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

\n
" + result = "
abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

" assert_equal(result, html.html2html_strict) html = "
Mit freundlichem Gruß 

John Smith
Service und Support

Example Service AG & Co.
Management OHG
Someware-Str. 4
xxxxx Someware

Tel.: +49 001 7601 462
Fax: +49 001 7601 472
" - result = "
Mit freundlichem Gruß

John Smith
Service und Support

Example Service AG & Co.
Management OHG
Someware-Str. 4
xxxxx Someware

\n
Tel.: +49 001 7601 462
Fax: +49 001 7601 472
john.smith@example.com
" + result = "
Mit freundlichem Gruß

John Smith
Service und Support

Example Service AG & Co.
Management OHG
Someware-Str. 4
xxxxx Someware

+
Tel.: +49 001 7601 462
Fax: +49 001 7601 472
john.smith@example.com
" assert_equal(result, html.html2html_strict) html = 'test' @@ -728,14 +723,26 @@ abc

Von: Fritz Bauer [mailto:me@example.com]
Gesendet: Donne
' result = "Franz Schäfer



Telefon\n+49 000 000 8565
\nchristian.schaefer@example.com


" - result = 'Franz Schäfer + result = '
+ + + + + + +
+Franz Schäfer +
Manager Information Systems

-Manager Information Systems
-
-Telefon -+49 000 000 8565 -
-christian.schaefer@example.com' + + + + + + + + +
Telefon +49 000 000 8565
christian.schaefer@example.com
' assert_equal(result, html.html2html_strict) html = "test" @@ -752,6 +759,7 @@ christian.schaefer@example.com' html = '

Hello Martin,
' result = '
Hello Martin,
' +html.html2html_strict assert_equal(result, html.html2html_strict) html = '
Hello Martin,
' @@ -759,7 +767,7 @@ christian.schaefer@example.com' assert_equal(result, html.html2html_strict) html = '
Hello Martin,
' - result = "
\n
Hello Martin,
\n
" + result = "
\n
Hello Martin,
" assert_equal(result, html.html2html_strict) html = '' @@ -797,8 +805,7 @@ christian.schaefer@example.com'

' result = '
-

 

-
' +

 

' assert_equal(result, html.html2html_strict) html = '

' @@ -806,7 +813,8 @@ christian.schaefer@example.com' assert_equal(result, html.html2html_strict) html = '
lala

Hello Martin,

' - result = "
lala

Hello Martin,

\n
" + result = "
lala

Hello Martin,

" +html.html2html_strict assert_equal(result, html.html2html_strict) html = '

Hello Martin,

' @@ -835,27 +843,7 @@ christian.schaefer@example.com' www.ABC.com

Geschäftsführer Vor Nach, VorUndZu Nach     -     Amtsgericht Dort HRB 12345    -    Ein Unternehmer der ABC Gruppe

' - result = '
-

Guten Morgen, Frau ABC,

-

 

-

vielen Dank für die Reservierung. Dabei allerdings die Sprache (Niederländisch) nicht erwähnt. Können Sie bitte dieses in Ihrer Reservierung vormerken?

-

 

-

Nochmals vielen Dank und herzliche Grüße

-
-

-

Anna Smith

-

art abc SEV GmbH

-

art abc TRAV

-

Marktstätte 123

-

123456 Dorten

-

T: +49 (0) 12345/1234560-1

-

T: +49 (0) 12345/1234560-0

-

F: +49 (0) 12345/1234560-2

-

annad@example.com

-

www.example.com www.ABC.com

-

Geschäftsführer Vor Nach, VorUndZu Nach - Amtsgericht Dort HRB 12345 - Ein Unternehmer der ABC Gruppe

-
-
' + result = "
\n

Guten Morgen, Frau ABC,

 

vielen Dank für die Reservierung. Dabei allerdings die Sprache (Niederländisch) nicht erwähnt. Können Sie bitte dieses in Ihrer Reservierung vormerken?

 

Nochmals vielen Dank und herzliche Grüße

 

Anna Smith

art abc SEV GmbH

art abc TRAV

Marktstätte 123

123456 Dorten

T: +49 (0) 12345/1234560-1

T: +49 (0) 12345/1234560-0

F: +49 (0) 12345/1234560-2

annad@example.com

www.example.com www.ABC.com

Geschäftsführer Vor Nach, VorUndZu Nach - Amtsgericht Dort HRB 12345 - Ein Unternehmer der ABC Gruppe

" assert_equal(result, html.html2html_strict) html = '

 

@@ -878,9 +866,7 @@ christian.schaefer@example.com'

Von: Besucherbüro, MKuk [besucherbuero@example.com]
Gesendet: Freitag, 16. Dezember 2016 08:05
An: \'Amaia Epalza\'
-Betreff: AW: Gruppe vtb Kultuur // 28.06.2017

- -

 

Reservierungsbestätigung Führung Skulptur-Projekte 2017 am

 

Guten Morgen Frau Epalza,

' +Betreff: AW: Gruppe vtb Kultuur // 28.06.2017

 

Reservierungsbestätigung Führung Skulptur-Projekte 2017 am

 

Guten Morgen Frau Epalza,

' assert_equal(result, html.html2html_strict) html = '
Hello Martin,
' @@ -928,9 +914,7 @@ christian.schaefer@example.com' assert_equal(result, html.html2html_strict) html = '
Wir brauchen also die Instanz example.zammad.com, kann die aber nicht mehr nutzen.

Bitte um Freischaltung.


' - result = '
Wir brauchen also die Instanz example.zammad.com, kann die aber nicht mehr nutzen.
Bitte um Freischaltung.
-
-
' + result = '
Wir brauchen also die Instanz example.zammad.com, kann die aber nicht mehr nutzen.
Bitte um Freischaltung.
' assert_equal(result, html.html2html_strict) html = '

oh jeee … Zauberwort vergessen ;-) Können Sie mir @@ -940,9 +924,39 @@ christian.schaefer@example.com' assert_equal(result, html.html2html_strict) html = '

' - result = '' + result = "" assert_equal(result, html.html2html_strict) + html = '

 

20-29
200
-1
201
country
Target (gross)
Remaining Recruits
Total Recruits
' + result = " +

 

+
20-29
+200 +-1 +201 + + +
+country +
+
Target (gross)
+
Remaining Recruits
+
Total Recruits
+" + assert_equal(result, html.html2html_strict) + + html = "
Dear Bob:Mr/Mrs

We are one of the leading manufacturer and supplier of conduits and cars since 3000.

Could you inform me the specification you need?

May I sent you our products catalogues for your reference?

Best regards!

Welcome to our booth B11/1 Hall 13 during SOMEWHERE\n9999.
Bob Smith
Exp. & Imp.
Town Example Electric Co., Ltd.
Tel: 0000-11-12345678 (Ext-220)  Fax: 0000-11-12345678 
Room1234, NO. 638, Smith Road, Town, 200000, Somewhere
Web: www.example.com
" + result = "
+
Dear Bob:Mr/Mrs
We are one of the leading manufacturer and supplier of conduits and cars since 3000.
Could you inform me the specification you need?
May I sent you our products catalogues for your reference?
Best regards!
Welcome to our booth B11/1 Hall 13 during SOMEWHERE 9999.
+
Bob Smith
+
Exp. & Imp.
Town Example Electric Co., Ltd.
Tel: 0000-11-12345678 (Ext-220) Fax: 0000-11-12345678
Room1234, NO. 638, Smith Road, Town, 200000, Somewhere
" + assert_equal(result, html.html2html_strict) + + html = '
  • Luxemburg
  • ' + result = '
  • Luxemburg (http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0bmFvY3B0LXlhbW9sc2Nhb3NnYy5lL3RpbXJlZi9lbS9ycnJuaWFpZXMsdGxnY25pLGUsdXJ0b3NVTGVpNWZ8fGZh)
  • ' +html.html2html_strict + assert_equal(result, html.html2html_strict) end test 'inline attachment replace' do @@ -1102,8 +1116,7 @@ christian.schaefer@example.com' result = '

    Von: Johanna Kiefer via Znuny Projects <projects@example.com>
    Organisation: Znuny Group
    -Datum: Montag, 6. März 2017 um 13:32

    -
    ' +Datum: Montag, 6. März 2017 um 13:32

    ' assert_equal(result, html.html2html_strict) html = '

    @@ -1112,22 +1125,18 @@ christian.schaefer@example.com'  Hotel <info@example.com>
    An:        
    ' - result = '

    Von: Hotel <info@example.com> -
    An: -
    ' + result = '

    Von: Hotel <info@example.com>
    An:
    ' assert_equal(result, html.html2html_strict) html = '
    On 04 Mar 2017, at 14:47, Oliver Ruhm <oliver@example.com> wrote:

    ' result = '
    -
    On 04 Mar 2017, at 14:47, Oliver Ruhm <oliver@example.com> wrote:
    -
    +
    On 04 Mar 2017, at 14:47, Oliver Ruhm <oliver@example.com> wrote:

    ' assert_equal(result, html.html2html_strict) html = '
    some note

    ' result = '
    -
    some note
    -
    +
    some note

    ' assert_equal(result, html.html2html_strict) @@ -1154,40 +1163,9 @@ christian.schaefer@example.com'
    Dear Mr. Smith,
    -
    -
    ' +
    ' assert_equal(result, html.html2html_strict) - html = "
    Dear Bob:Mr/Mrs

    We are one of the leading manufacturer and supplier of conduits and cars since 3000.

    Could you inform me the specification you need?

    May I sent you our products catalogues for your reference?

    Best regards!

    Welcome to our booth B11/1 Hall 13 during SOMEWHERE\n9999.
    Bob Smith
    Exp. & Imp.
    Town Example Electric Co., Ltd.
    Tel: 0000-11-12345678 (Ext-220)  Fax: 0000-11-12345678 
    Room1234, NO. 638, Smith Road, Town, 200000, Somewhere
    Web: www.example.com
    " - result = '
    -
    Dear Bob:Mr/Mrs
    -
    -
    We are one of the leading manufacturer and supplier of conduits and cars since 3000.
    -
    -
    Could you inform me the specification you need?
    -
    -
    May I sent you our products catalogues for your reference?
    -
    -
    -
    Best regards!
    -
    -
    Welcome to our booth B11/1 Hall 13 during SOMEWHERE 9999.
    -
    -
    Bob Smith
    -
    -
    Exp. & Imp.
    -
    Town Example Electric Co., Ltd.
    -
    Tel: 0000-11-12345678 (Ext-220) Fax: 0000-11-12345678
    -
    Room1234, NO. 638, Smith Road, Town, 200000, Somewhere
    - -
    -
    -
    -
    ' - assert_equal(result, html.html2html_strict) - - end end diff --git a/test/unit/email_parser_test.rb b/test/unit/email_parser_test.rb index 14a93a1dd..5f837cca3 100644 --- a/test/unit/email_parser_test.rb +++ b/test/unit/email_parser_test.rb @@ -7,41 +7,19 @@ class EmailParserTest < ActiveSupport::TestCase files = [ { data: IO.binread('test/fixtures/mail1.box'), - body_md5: 'cddd315fac96b3aa836be04a2a8553c2', + body_md5: 'e5cf748bf60cbbf324ee20314750fdf7', params: { from: 'John.Smith@example.com', from_email: 'John.Smith@example.com', from_display_name: '', subject: 'CI Daten für PublicView ', content_type: 'text/html', - body: '
    -
    Hallo Martin,
    -
    -
    wie besprochen hier noch die Daten für die Intranetseite:
    -
    -
    Schriftart/-größe: Verdana 11 Pt wenn von Browser nicht unterstützt oder nicht vorhanden wird Arial 11 Pt genommen
    -
    Schriftfarbe: Schwarz
    -
    Farbe für die Balken in der Grafik: D7DDE9 (Blau)
    -
    -
    Wenn noch was fehlt oder du was brauchst sag mir Bescheid.
    -
    -
    Mit freundlichem Gruß

    John Smith
    Service und Support

    Example Service AG & Co.
    -
    Management OHG
    Someware-Str. 4
    xxxxx Someware

    -
    -
    Tel.: +49 001 7601 462
    Fax: +49 001 7601 472
    -
    -john.smith@example.com -
    - -
    -
    OHG mit Sitz in Someware
    AG: Someware - HRA 4158
    Geschäftsführung: Tilman Test, Klaus Jürgen Test,
    -
    Bernhard Test, Ulrich Test
    USt-IdNr. DE 1010101010

    Persönlich haftende geschäftsführende Gesellschafterin:
    -
    Marie Test Example Stiftung, Someware
    Vorstand: Rolf Test

    Persönlich haftende Gesellschafterin:
    -
    Example Service AG, Someware
    AG: Someware - HRB xxx
    Vorstand: Marie Test
    -
    -
    ', + body: "
    +
    Hallo Martin,

     

    wie besprochen hier noch die Daten für die Intranetseite:

     

    Schriftart/-größe: Verdana 11 Pt wenn von Browser nicht unterstützt oder nicht vorhanden wird Arial 11 Pt genommen
    Schriftfarbe: Schwarz
    Farbe für die Balken in der Grafik: D7DDE9 (Blau)

     

    Wenn noch was fehlt oder du was brauchst sag mir Bescheid.

     

    Mit freundlichem Gruß

    John Smith
    Service und Support

    Example Service AG & Co.
    Management OHG
    Someware-Str. 4
    xxxxx Someware

    +
    Tel.: +49 001 7601 462
    Fax: +49 001 7601 472
    john.smith@example.com
    +
    OHG mit Sitz in Someware
    AG: Someware - HRA 4158
    Geschäftsführung: Tilman Test, Klaus Jürgen Test,
    Bernhard Test, Ulrich Test
    USt-IdNr. DE 1010101010

    Persönlich haftende geschäftsführende Gesellschafterin:
    Marie Test Example Stiftung, Someware
    Vorstand: Rolf Test

    Persönlich haftende Gesellschafterin:
    Example Service AG, Someware
    AG: Someware - HRB xxx
    Vorstand: Marie Test

     

    ", }, }, { @@ -65,79 +43,32 @@ Old programmers never die. They just branch to a new address. }, { data: IO.binread('test/fixtures/mail3.box'), - body_md5: '0bd5580b06c4c4061acd1472eefb149e', + body_md5: '4681e5d8ee07ea0b53dfeaf5789c5a00', params: { from: '"Günther John | Example GmbH" ', from_email: 'k.guenther@example.com', from_display_name: 'Günther John | Example GmbH', subject: 'Ticket Templates', content_type: 'text/html', - body: '
    -

    Hallo Martin,

    -

     

    -

    ich möchte mich gern für den Beta-Test für die Ticket Templates unter XXXX 2.4 anmelden.

    -

     

    + body: "
    +

    Hallo Martin,

     

    ich möchte mich gern für den Beta-Test für die Ticket Templates unter XXXX 2.4 anmelden.

     

     

    Mit freundlichen Grüßen

    John Günther

     

    example.com (http://www.GeoFachDatenServer.de) – profitieren Sie vom umfangreichen Daten-Netzwerk

     

    _ __ ___ ____________________________ ___ __ _

     

    Example GmbH

    Some What

     

    Sitz: Someware-Straße 9, XXXXX Someware

     

    M: +49 (0) XXX XX XX 70

    T: +49 (0) XXX XX XX 22

    F: +49 (0) XXX XX XX 11

    W: http://www.example.de

     

    Geschäftsführer: John Smith

    HRB XXXXXX AG Someware

    St.-Nr.: 112/107/05858

     

    ISO 9001:2008 Zertifiziert -Qualitätsstandard mit Zukunft

    _ __ ___ ____________________________ ___ __ _

     

    Diese Information ist ausschließlich für den Adressaten bestimmt und kann vertrauliche oder gesetzlich geschützte Informationen enthalten. Wenn Sie nicht der bestimmungsgemäße Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail. Anderen als dem bestimmungsgemäßen Adressaten ist es untersagt, diese E-Mail zu lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer zu verwenden.

     

    +

    Von: Fritz Bauer [mailto:me@example.com]
    Gesendet: Donnerstag, 3. Mai 2012 11:51
    An: John Smith
    Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
    Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI's

     

    Hallo,

     

    +

    ich versuche an den Punkten anzuknüpfen.

     

    +

    a) LDAP Muster Konfigdatei

     

     

    +

    PS: Es gibt noch eine Reihe weiterer Möglichkeiten, vor allem im Bezug auf Agenten-Rechte/LDAP Gruppen Synchronisation. Wenn Ihr hier weitere Informationen benötigt, einfach im Wiki die Aufgabenbeschreibung rein machen und ich kann eine Beispiel-Config dazu legen.

    +

     

     

    +

    b) Ticket Templates

    +

    Wir haben das Paket vom alten Maintainer übernommen, es läuft nun auf XXXX 2.4, XXXX 3.0 und XXXX 3.1. Wir haben das Paket um weitere Funktionen ergänzt und würden es gerne hier in diesen Kreis zum Beta-Test bereit stellen.

     

    +

    Vorgehen:

    +

    Wer Interesse hat, bitte eine Email an mich und ich versende Zugänge zu den Beta-Test-Systemen. Nach ca. 2 Wochen werden wir die Erweiterungen in der Version 1.0 veröffentlichen.

     

     

    +

    c) XXXX Entwickler Schulung

    +

    Weil es immer wieder Thema war, falls jemand Interesse hat, das XXXX bietet nun auch OTRS Entwickler Schulungen an (http://www.example.com/kurs/xxxx_entwickler/).

     

     

    +

    d) Genelle Fragen?

    +

    Haben sich beim ein oder anderen generell noch Fragen aufgetan?

     

     

    +

    Viele Grüße!

     

    -

     

    -

    Mit freundlichen Grüßen

    -

    John Günther

    -

     

    -

    example.com (http://www.GeoFachDatenServer.de) – profitieren Sie vom umfangreichen Daten-Netzwerk

    -

     

    -

    _ __ ___ ____________________________ ___ __ _

    -

     

    -

    Example GmbH

    -

    Some What

    -

     

    -

    Sitz: Someware-Straße 9, XXXXX Someware

    -

     

    -

    M: +49 (0) XXX XX XX 70

    -

    T: +49 (0) XXX XX XX 22

    -

    F: +49 (0) XXX XX XX 11

    -

    W: http://www.example.de

    -

     

    -

    Geschäftsführer: John Smith

    -

    HRB XXXXXX AG Someware

    -

    St.-Nr.: 112/107/05858

    -

     

    -

    ISO 9001:2008 Zertifiziert -Qualitätsstandard mit Zukunft

    -

    _ __ ___ ____________________________ ___ __ _

    -

     

    -

    Diese Information ist ausschließlich für den Adressaten bestimmt und kann vertrauliche oder gesetzlich geschützte Informationen enthalten. Wenn Sie nicht der bestimmungsgemäße Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail. Anderen als dem bestimmungsgemäßen Adressaten ist es untersagt, diese E-Mail zu lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer zu verwenden.

    -
    -

     

    -

    Von: Fritz Bauer [mailto:me@example.com]
    Gesendet: Donnerstag, 3. Mai 2012 11:51
    An: John Smith
    Cc: Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com; michael.house@example.com; tgutzeit@example.com
    Betreff: Re: OTRS::XXX Erweiterung - Anhänge an CI\'s

    -

     

    -

    Hallo,

    -

     

    -

    ich versuche an den Punkten anzuknüpfen.

    -

     

    -

    a) LDAP Muster Konfigdatei

    -

     

    -

    https://wiki.lab.example.com/doku.php?id=xxxx:start&#ldap

    -

     

    -

    PS: Es gibt noch eine Reihe weiterer Möglichkeiten, vor allem im Bezug auf Agenten-Rechte/LDAP Gruppen Synchronisation. Wenn Ihr hier weitere Informationen benötigt, einfach im Wiki die Aufgabenbeschreibung rein machen und ich kann eine Beispiel-Config dazu legen.

    -

     

    -

    b) Ticket Templates

    -

    Wir haben das Paket vom alten Maintainer übernommen, es läuft nun auf XXXX 2.4, XXXX 3.0 und XXXX 3.1. Wir haben das Paket um weitere Funktionen ergänzt und würden es gerne hier in diesen Kreis zum Beta-Test bereit stellen.

    -

     

    -

    Vorgehen:

    -

    Wer Interesse hat, bitte eine Email an mich und ich versende Zugänge zu den Beta-Test-Systemen. Nach ca. 2 Wochen werden wir die Erweiterungen in der Version 1.0 veröffentlichen.

    -

     

    -

    c) XXXX Entwickler Schulung

    -

    Weil es immer wieder Thema war, falls jemand Interesse hat, das XXXX bietet nun auch OTRS Entwickler Schulungen an (http://www.example.com/kurs/xxxx_entwickler/).

    -

     

    -

    d) Genelle Fragen?

    -

    Haben sich beim ein oder anderen generell noch Fragen aufgetan?

    -

     

    -

    Viele Grüße!

    -

     

    -
    -

    -Fritz

    -

    On May 2, 2012, at 14:25 , John Smith wrote:

    -

    Moin Moin,

    die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank und danach
    hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für XXXX hatte.
    Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht werden muss.

    Wie auch immer, danke für die mail mit dem ITSM Zusatz auch wenn das zur Zeit bei der Example nicht relevant ist.

    Ich habe im XXXX Wiki den Punkt um die Vorlagen angefügt.
    Ticket Template von John Bäcker
    Bei uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX 3.0.10 implementiert.

    Fritz wollte sich auch um das andere Ticket Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht lauffähig sein sollte.

    Im Wiki kann ich die LDAP Muster Konfigdatei nicht finden.
    Hat die jemand von euch zufälligerweise ?

    Danke und Gruß
    John Smith

    Am 4. April 2012 08:24 schrieb Smith, John Marian <john.smith@example.com>:
    Hallo zusammen,

    ich hoffe Ihr seid noch gut nach Hause gekommen am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich mir den letzten halben Tag eigentlich hätte schenken können.

    Soweit ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich) kostenpflichtige Erweiterung für Euch.

    Es handelt sich um eine programmiertes Paket von der XXXX AG. Die Weitergabe ist legal.

    Mit dem Paket kann man Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.

    Der Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt hat.

    Viele Grüße aus Someware

    John

    _________________________
    SysAdmin
    John Marian Smith
    IT-Management

    Example GmbH & Co. KG
    Der Provider für
    Mehrwertdienste & YYY

    Someware 23
    XXXXX Someware

    Tel. (01802) XX XX XX - 42
    Fax (01802) XX XX XX - 99
    nur 6 Cent je Anruf aus dem dt. Festnetz,
    max. 42 Cent pro Min. aus dem Mobilfunknetz

    E-Mail john.smith@Example.de
    Web www.Example.de
    Amtsgericht Hannover HRA xxxxxxxx
    Komplementärin: Example Verwaltungs- GmbH
    Vertreten durch: Somebody, Somebody
    Amtsgericht Someware HRB XXX XXX

    _________________________
    Highlights der Example Contact Center-Suite:
    Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
    XXX-/Web-Kundenbefragungen, CRM, PEP, YYY

    -
    -
    ', +

    -Fritz

    On May 2, 2012, at 14:25 , John Smith wrote:

    Moin Moin,

    die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank und danach
    hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für XXXX hatte.
    Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht werden muss.

    Wie auch immer, danke für die mail mit dem ITSM Zusatz auch wenn das zur Zeit bei der Example nicht relevant ist.

    Ich habe im XXXX Wiki den Punkt um die Vorlagen angefügt.
    Ticket Template von John Bäcker
    Bei uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX 3.0.10 implementiert.

    Fritz wollte sich auch um das andere Ticket Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht lauffähig sein sollte.

    Im Wiki kann ich die LDAP Muster Konfigdatei nicht finden.
    Hat die jemand von euch zufälligerweise ?

    Danke und Gruß
    John Smith

    Am 4. April 2012 08:24 schrieb Smith, John Marian <john.smith@example.com>:
    Hallo zusammen,

    ich hoffe Ihr seid noch gut nach Hause gekommen am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich mir den letzten halben Tag eigentlich hätte schenken können.

    Soweit ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich) kostenpflichtige Erweiterung für Euch.

    Es handelt sich um eine programmiertes Paket von der XXXX AG. Die Weitergabe ist legal.

    Mit dem Paket kann man Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.

    Der Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt hat.

    Viele Grüße aus Someware

    John

    _________________________
    SysAdmin
    John Marian Smith
    IT-Management

    Example GmbH & Co. KG
    Der Provider für
    Mehrwertdienste & YYY

    Someware 23
    XXXXX Someware

    Tel. (01802) XX XX XX - 42
    Fax (01802) XX XX XX - 99
    nur 6 Cent je Anruf aus dem dt. Festnetz,
    max. 42 Cent pro Min. aus dem Mobilfunknetz

    E-Mail john.smith@Example.de
    Web www.Example.de
    Amtsgericht Hannover HRA xxxxxxxx
    Komplementärin: Example Verwaltungs- GmbH
    Vertreten durch: Somebody, Somebody
    Amtsgericht Someware HRB XXX XXX

    _________________________
    Highlights der Example Contact Center-Suite:
    Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
    XXX-/Web-Kundenbefragungen, CRM, PEP, YYY

    ", }, }, { @@ -185,39 +116,55 @@ Liebe Grüße! }, { data: IO.binread('test/fixtures/mail6.box'), - body_md5: '0e48622e886f03d976ccbda0ec7961a1', + body_md5: 'a05afcf7de7be17e74f191a58974f682', 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: Сергей Углицких', content_type: 'text/html', - body: '

    this is a test



    Compare Cable, DSL or Satellite plans: As low as $2.95. (http://localhost/8HMZENUS/2737??PS=)

    Test1:–
    Test2:&
    Test3:∋
    Test4:&
    Test5:=', + body: "

    this is a test



    Compare Cable, DSL or Satellite plans: As low as $2.95. (http://localhost/8HMZENUS/2737??PS=)

    Test1:–
    Test2:&
    Test3:∋
    Test4:&
    Test5:=", }, }, +#

    + { data: IO.binread('test/fixtures/mail7.box'), - body_md5: '7288f2e0d4551aac7cbaac47eaea9a24', + body_md5: 'b779b65c7d90aa5e350d37998a6c5fc6', params: { from: 'Eike.Ehringer@example.com', from_email: 'Eike.Ehringer@example.com', from_display_name: '', subject: 'AW:Installation [Ticket#11392]', content_type: 'text/html', - 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" <support@example.com>
    -An eike.xx@xx-corpxx.com
    -Datum: Mi., 13.06.2012 14:30
    -Betreff 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\" <support@example.com>
    Aneike.xx@xx-corpxx.com
    Datum:Mi., 13.06.2012 14:30
    BetreffInstallation [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.
    +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".
    +b) Installation von \"mysqld\" und \"perl-DBD-MySQL\".
     
     Das wäre es zur Vorbereitung!
     
    @@ -232,19 +179,18 @@ 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 
    +W: http://example.com 
     
     Location: Berlin - HRB 139852 B Amtsgericht Berlin-Charlottenburg
     Managing Director: Martin Edenhofer
     
     
    -
    -
    ', +
    ", }, }, { data: IO.binread('test/fixtures/mail8.box'), - body_md5: '166c87ab43c07301686c1c8761e98d48', + body_md5: 'd540b6f1a7b25468c1bc854ebc4c43fe', attachments: [ { md5: 'c3ca4aab222eed8a148a716371b70129', @@ -257,43 +203,76 @@ Managing Director: Martin Edenhofer from_display_name: '', subject: 'could not rename: ZZZAAuto', content_type: 'text/html', - body: ' + body: "
    -
    Gravierend?
    - -
    -Mit freundlichen Grüßen
    +
    Gravierend?
    + + + +
    Mit freundlichen Grüßen

    + + + + + + + +
    Franz Schäfer +
    Manager Information Systems

    -Manager Information Systems
    -
    -Telefon -+49 000 000 8565 -
    -christian.schaefer@example.com
    + + + + + + + + +
    Telefon +49 000 000 8565
    christian.schaefer@example.com

    + + + + + + + + + + + + + + + + +
    Example Stoff GmbH +
    Fakultaet
    Düsseldorfer Landstraße 395
    D-00000 Hof
    www.example.com

    -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', + + + + + + + + + + + + + +
    +
    +
    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.binread('test/fixtures/mail9.box'), - body_md5: '8a028710b157c68ace0a5b2264c44da7', + body_md5: '64675a479f80a674eb7c08e385c3622a', attachments: [ { md5: '9964263c167ab47f8ec59c48e57cb905', @@ -311,16 +290,14 @@ Registergericht / Commercial Register of the Local Court: HRB 0000 AG Hof', from_display_name: 'Martin Edenhofer', subject: 'AW: OTRS / Anfrage OTRS Einführung/Präsentation [Ticket#11545]', content_type: 'text/html', - body: 'Enjoy!
    -
    -Martin

    --
    Old programmers never die. They just branch to a new address.
    -
    -
    -
    ' + body: "Enjoy!
    +
    -Martin

    --
    Old programmers never die. They just branch to a new address.
    +

    ", }, }, { data: IO.binread('test/fixtures/mail10.box'), - body_md5: 'f0d92c2941d99583a40db932a1c038f5', + body_md5: '47d41fa38028d5fb02c7d041da60ba1f', attachments: [ { md5: '52d946fdf1a9304d0799cceb2fcf0e36', @@ -338,23 +315,13 @@ Registergericht / Commercial Register of the Local Court: HRB 0000 AG Hof', from_display_name: 'Smith Sepp', subject: 'Gruß aus Oberalteich', content_type: 'text/html', - body: '
    -

    Herzliche Grüße aus Oberalteich sendet Herrn Smith

    -

     

    -

    Sepp Smith - Dipl.Ing. agr. (FH)

    -

    Geschäftsführer der example Straubing-Bogen

    -

    Klosterhof 1 | 94327 Bogen-Oberalteich

    -

    Tel: 09422-505601 | Fax: 09422-505620

    -

    Internet: http://example-straubing-bogen.de

    -

    Facebook: http://facebook.de/examplesrbog

    -

    Beschreibung: Beschreibung: efqmLogo - European Foundation für Quality Management

    -

     

    -
    ', + body: "
    +

    Herzliche Grüße aus Oberalteich sendet Herrn Smith

     

    Sepp Smith - Dipl.Ing. agr. (FH)

    Geschäftsführer der example Straubing-Bogen

    Klosterhof 1 | 94327 Bogen-Oberalteich

    Tel: 09422-505601 | Fax: 09422-505620

    Internet: http://example-straubing-bogen.de

    Facebook: http://facebook.de/examplesrbog

    \"Beschreibung: - European Foundation für Quality Management

     

    ", }, }, { data: IO.binread('test/fixtures/mail11.box'), - body_md5: '180b01f4565dd07434087f5554ba0e2a', + body_md5: 'fe7f9431109785573b9e68888815aca0', attachments: [ { md5: '08660cd33ce8c64b95bcf0207ff6c4d6', @@ -369,18 +336,39 @@ Registergericht / Commercial Register of the Local Court: HRB 0000 AG Hof', subject: 'Eine schöne Adventszeit für ZNUNY GMBH - ENTERPRISE SERVICES FÜR OTRS', to: 'enjoy_us@znuny.com', content_type: 'text/html', - body: 'http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-2/http://web2.cylex.de/advent2012?b2b -

    Lieber CYLEX Eintragsinhaber,

    das Jahr neigt sich dem Ende und die besinnliche Zeit beginnt laut Kalender mit dem
    1. Advent. Und wie immer wird es in der vorweihnachtlichen Zeit meist beruflich und privat
    so richtig schön hektisch.

    Um Ihre Weihnachtsstimmung in Schwung zu bringen kommen wir nun mit unserem Adventskalender ins Spiel. Denn 24 Tage werden Sie unsere netten Geschichten, Rezepte und Gewinnspiele sowie ausgesuchte Geschenktipps und Einkaufsgutscheine online begleiten. Damit lässt sich Ihre Freude auf das Fest garantiert mit jedem Tag steigern.


    Einen gemütlichen Start in die Adventszeit wünscht Ihnen http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-1/http://web2.cylex.de/advent2012?b2b

    Ihr CYLEX Team
    + body: " + + + + + +
    +

    +http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-2/http://web2.cylex.de/advent2012?b2b

    Lieber CYLEX Eintragsinhaber,

    das Jahr neigt sich dem Ende und die besinnliche Zeit beginnt laut Kalender mit dem
    1. Advent. Und wie immer wird es in der vorweihnachtlichen Zeit meist beruflich und privat
    so richtig schön hektisch.

    Um Ihre Weihnachtsstimmung in Schwung zu bringen kommen wir nun mit unserem Adventskalender ins Spiel. Denn 24 Tage werden Sie unsere netten Geschichten, Rezepte und Gewinnspiele sowie ausgesuchte Geschenktipps und Einkaufsgutscheine online begleiten. Damit lässt sich Ihre Freude auf das Fest garantiert mit jedem Tag steigern.

    + + + + + + +
    Einen gemütlichen Start in die Adventszeit wünscht Ihnen +http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-1/http://web2.cylex.de/advent2012?b2b +
    +

    Ihr CYLEX Team

    -P.S. Damit Sie keinen Tag versäumen, empfehlen wir Ihnen den Link des Adventkalenders (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-3/http://web2.cylex.de/advent2012?b2b) in
    Ihrer Lesezeichen-Symbolleiste zu ergänzen.

     


    Impressum
    S.C. CYLEX INTERNATIONAL S.N.C.
    Sat. Palota 119/A RO 417516 Palota Romania
    Tel.: +49 208/62957-0 |
    Geschäftsführer: Francisc Osvald
    Handelsregister: J05/1591/2009
    USt.IdNr.: RO26332771
    -serviceteam@cylex.de
    -Homepage (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-98/http://web2.cylex.de/Homepage/Home.asp)
    -Newsletter abbestellen (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-99/http://newsletters.cylex.de/unsubscribe.aspx?uid=4134001&d=www.cylex.de&e=enjoy@znuny.com&sc=3009&l=d)', +P.S. Damit Sie keinen Tag versäumen, empfehlen wir Ihnen den Link des Adventkalenders (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-3/http://web2.cylex.de/advent2012?b2b) in
    Ihrer Lesezeichen-Symbolleiste zu ergänzen.

     

    + + + + + +
    Impressum
    S.C. CYLEX INTERNATIONAL S.N.C.
    Sat. Palota 119/A RO 417516 Palota Romania
    Tel.: +49 208/62957-0 |
    Geschäftsführer: Francisc Osvald
    Handelsregister: J05/1591/2009
    USt.IdNr.: RO26332771
    +
    serviceteam@cylex.de
    Homepage (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-98/http://web2.cylex.de/Homepage/Home.asp)
    Newsletter abbestellen (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-99/http://newsletters.cylex.de/unsubscribe.aspx?uid=4134001&d=www.cylex.de&e=enjoy@znuny.com&sc=3009&l=d)
    ", }, }, { data: IO.binread('test/fixtures/mail12.box'), - body_md5: 'edcb93c692f914b2fb9eb5bc244c8fa0', + body_md5: 'dd7e002b6bb709effb56bdb6f2cc2e32', attachments: [ { md5: '46cf0f95ea0c8211cbb704e1959b9173', @@ -398,59 +386,14 @@ Newsletter abbestellen (

    -

     

    -

    Herr Smith ist im Urlaub, er wurde von seinen Datenbank-Kollegen kontaktiert aber offenbar lässt sich nicht mehr 100%ig rekonstruieren, was am Freitag noch verändert wurde.
    Meinen Sie, dass Sie uns bei der Behebung der o. a. Störung morgen helfen können? Die Datenbank-Kollegen werden uns nach besten Möglichkeiten unterstützen, Zugriff erhalten wir auch.

    -

     

    -

    Mit freundlichen Grüßen

    -

     

    -

    Alex Smith
    + body: "

    +

    Hallo Herr Edenhofer,

     

    möglicherweise haben wir für unsere morgige Veranstaltung ein Problem mit unserer Develop-Umgebung.
    Der Kollege Smith wollte uns noch die Möglichkeit geben, direkt auf die Datenbank zugreifen zu können, hierzu hat er Freitag noch einige Einstellungen vorgenommen und uns die Zugangsdaten mitgeteilt. Eine der Änderungen hatte aber offenbar zur Folge, dass ein Starten der Develop-Anwendung nicht mehr möglich ist (s. Fehlermeldung)
    +

     

    Herr Smith ist im Urlaub, er wurde von seinen Datenbank-Kollegen kontaktiert aber offenbar lässt sich nicht mehr 100%ig rekonstruieren, was am Freitag noch verändert wurde.
    Meinen Sie, dass Sie uns bei der Behebung der o. a. Störung morgen helfen können? Die Datenbank-Kollegen werden uns nach besten Möglichkeiten unterstützen, Zugriff erhalten wir auch.

     

    Mit freundlichen Grüßen

     

    Alex Smith

    Abteilung IT-Strategie, Steuerung & Support
    im Bereich Informationstechnologie

    Example – Example GmbH
    (Deutsche Example)
    Longstreet 5
    11111 Frankfurt am Main
    -
    Telefon: (069) 11 1111 – 11 30

    -

    Telefon ServiceDesk: (069) 11 1111 – 12 22
    Telefax: (069) 11 1111 – 14 85
    Internet:
    www.example.com

    -

     

    -

    -----Ursprüngliche Nachricht-----
    Von: Martin Edenhofer via Znuny Sales [mailto:example@znuny.com]
    Gesendet: Freitag, 30. November 2012 13:50
    An: Smith, Alex
    Betreff: Agenda [Ticket#11995]

    -

     

    -

    Sehr geehrte Frau Smith,

    -

     

    -

    ich habe (wie telefonisch avisiert) versucht eine Agenda für nächste Woche zusammen zu stellen.

    -

     

    -

    Leider ist es mir dies Inhaltlich nur unzureichend gelungen (es gibt zu wenig konkrete Anforderungen im Vorfeld :) ).

    -

     

    -

    Dadurch würde ich gerne am Dienstag als erste Amtshandlung (mit Herrn Molitor im Boot) die Anforderungen und Ziele der zwei Tage, Mittelfristig und Langfristig definieren. Aufgrund dessen können wir die Agenda der zwei Tage fixieren. Inhaltlich können wir (ich) alles abdecken, von daher gibt es hier keine Probleme. ;)

    -

     

    -

    Ist dies für Sie so in Ordnung?

    -

     

    -

    Für Fragen stehe ich gerne zur Verfügung!

    -

     

    -

    Ich freue mich auf Dienstag,

    -

     

    -

    Martin Edenhofer

    -

     

    -

    --

    -

    Enterprise Services for OTRS

    -

     

    -

    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://znuny.com -

    -

     

    -

    Location: Berlin - HRB 139852 B Amtsgericht Berlin-Charlottenburg Managing Director: Martin Edenhofer

    -
    -

    -------------------------------------------------------------------------------------------------

    -

    Rechtsform: GmbH

    -

    Geschaeftsfuehrer: Dr. Carl Heinz Smith, Dr. Carsten Smith

    -

    Sitz der Gesellschaft und Registergericht: Frankfurt/Main, HRB 11111

    -

    Alleiniger Gesellschafter: Bundesrepublik Deutschland,

    -

    vertreten durch das XXX der Finanzen.

    -
    ', +
    Telefon: (069) 11 1111 – 11 30

    Telefon ServiceDesk: (069) 11 1111 – 12 22
    Telefax: (069) 11 1111 – 14 85
    Internet: www.example.com

     

    -----Ursprüngliche Nachricht-----
    Von: Martin Edenhofer via Znuny Sales [mailto:example@znuny.com]
    Gesendet: Freitag, 30. November 2012 13:50
    An: Smith, Alex
    Betreff: Agenda [Ticket#11995]

     

    Sehr geehrte Frau Smith,

     

    ich habe (wie telefonisch avisiert) versucht eine Agenda für nächste Woche zusammen zu stellen.

     

    Leider ist es mir dies Inhaltlich nur unzureichend gelungen (es gibt zu wenig konkrete Anforderungen im Vorfeld :) ).

     

    Dadurch würde ich gerne am Dienstag als erste Amtshandlung (mit Herrn Molitor im Boot) die Anforderungen und Ziele der zwei Tage, Mittelfristig und Langfristig definieren. Aufgrund dessen können wir die Agenda der zwei Tage fixieren. Inhaltlich können wir (ich) alles abdecken, von daher gibt es hier keine Probleme. ;)

     

    Ist dies für Sie so in Ordnung?

     

    Für Fragen stehe ich gerne zur Verfügung!

     

    Ich freue mich auf Dienstag,

     

    Martin Edenhofer

     

    --

    Enterprise Services for OTRS

     

    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://znuny.com +

     

    Location: Berlin - HRB 139852 B Amtsgericht Berlin-Charlottenburg Managing Director: Martin Edenhofer

    +

    -------------------------------------------------------------------------------------------------

    Rechtsform: GmbH

    Geschaeftsfuehrer: Dr. Carl Heinz Smith, Dr. Carsten Smith

    Sitz der Gesellschaft und Registergericht: Frankfurt/Main, HRB 11111

    Alleiniger Gesellschafter: Bundesrepublik Deutschland,

    vertreten durch das XXX der Finanzen.

    ", }, }, { @@ -519,7 +462,7 @@ Newsletter abbestellen (', from_email: '"我" <>', @@ -564,7 +507,7 @@ Newsletter abbestellen (
    -
    óû5aHw5³½IΨµÁxG⌊o8KHCmς9-Ö½23QgñV6UAD¿ùAX←t¨Lf7⊕®Ir²r½TLA5pYJhjV gPnãM36V®E89RUDΤÅ©ÈI9æsàCΘYEϒAfg∗bT¡1∫rIoiš¦O5oUIN±IsæSعPp Ÿÿq1FΧ⇑eGOz⌈F³R98y§ 74”lTr8r§HÐæuØEÛPËq VmkfB∫SKNElst4S∃Á8üTðG°í lY9åPu×8>RÒ¬⊕ΜIÙzÙCC4³ÌQEΡºSè!XgŒs.
    çγ⇓B
    http://pxmzcgy.storeprescription.ru?zz=fkxfftiCalm 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¶ÁvΖ'®⇓∝5SÐçË5 Χ0jΔHbAgþE—2i6A2lD⇑LGjÓnTOy»¦Hëτ9’:Their mother and tugged it seemed like
    d3RsV¶HÓΘi¯B∂gax1bîgdHä3rýJÿ1aIKDz n1jfaTk³Vs395ß C˜lBl‘mxGo0√úXwT8Ya õ8ksa∫f·ℵs”6ÑQ ÍAd7$p32d1e∏æe.0”×61aîΚ63αSMû CdL∪1i↔xcaa5êR3l6Lc3iãz16só9èU zDE²aEȨgs25ËÞ hE§cl⊃¢¢ÂoÒµBw²zF© qÏkõaXUius1r0⊆ d•∈ø$¢Z2F12­8l.07d56PÚl25JAO6
    45loVóiv1i2ãΥ⌊að⊃d2gÃΥ3™rÎÍu¸aWjO8 n40–Soyè2u¡∅Î3p¢JΜNeÌé×jráÒrΚ 1ÌÓ9AúrAkc8nuEtl22ai‡OB8vSbéσeιõq1+65cw Òs8Uaò4PrsE1y8 〈fMElhϒ⋅Jo8pmzwjˆN¥ wv39aW¡WtsvuU3 1aœ³$éΝnR2OÏ⌉B.∀þc→5Ê9χw5pÃ⁄N VfE³ãiσjGpa5¶kgg¡ìcWrUq5æakx2h 0Fè4P¸ÕLñrn22ÏoþÝÐHfoRb2eUαw6sñN‾ws¶§3ΒiòX¶¸ofgtHnR⊥3âase9álF¿H5 à6BÁa⊃2iϒsô¡ói ÅkMylÚJ¾ÄoQ–0ℑwvmùþ ˈμ\"aQ7jVse6Ðf «hÜp$Lâr£3i1tÚ.323h5qP8g0♥÷R÷
    ·iƒPV1Β∋øiF¤RÃa4v3âgL9¢wr¨7ø×aÏû0η þ1àßStuÞ³u7á¡lpÑocEe·SLlrVàXj ⊥Uµ¢F¬48ðov7¨Arm×4ÍcùVwÞe1§⊇N ÂÛ4äaLþZ2ski×5 c€pBlûù6∂olÃfÚwKß3Ñ 4iíla4C³êsREÕ1 ãeIó$âz8t442fG.¸1≤¸2F’Ã152in⊄ C2v7Ci7·X8a×ú5NlþU〉ιicO∑«s·iKN UuϒjSÃj5Ýu÷Jü§pn5°§e¥Û3℘rÆW‡ò J‹S7A1j0sc&ºpkt·qqøiZ56½vn8¨∗eîØQ3+7Î3Š ∑RkLaKXËasÐsÌ2 ïÇ­¶lDäz8oã78wwU–ÀC T6Uûaϒ938sÌ0Gÿ Oxó∈$98‘R2ÂHï5.ÒL6b9θrδÜ92f9j
    Please matt on his neck. Okay matt huï ed into your mind
    1ȱΑAYQªdN¬ÚϒXT00ÀvI∨ío8-½b®8AΕºV4LgÕ↑7LKtgcEiw­yR5YýæGRA1°I¿0CïCàTiü/þwc0Ax211SÜÂùŒTÁ2êòHpNâùM6Ⱦ0A5Tb»:Simmons and now you really is what. Matt picked up this moment later that.
    25¯yV9ÙßYeg·↑DnJ3l4tÝæb1os∏jll÷iSÐiwBÎ4n0ú1Ö ªf÷Ña§1løsuÚ8ê 2LCblgvN½o¼oP3wn♠90 FZora&M™xsΚbb ç5Ãξ$Âô·×2iGæ∇1⊇Ξ¬3.0P0κ53VÁö03ÝYz AZ4KwdduÜvvuB↑ΒaÄ’THi0—93rZεj0 §rΜÅa2­·§s7¸Ιf 8⇓þolW„6Ýo6yH¥wKZ∧6 21hÒaKJ“ℜs48IÌ ÔÀ¬­$ZΣ¹ü2ñÙ6B42YMZ.Ô¹V¼9f·0å54⌈R8
    ÷w\"9N2gBÀaðSê¢s≅gGÔo0Dn4n↵γ7⊗eS7eýxf3Jd q÷CMaÍä³isNMZp zz0˜lΚLw8oë29ww¤§Qu ¥D⌈íaýË¢ésJ8Á¬ 3oùÙ$¦1Nℜ1>Rét7WPM¨.¶8¹D92k5D9∗8≈R Sj·Ψ8pΣïKùi6rrÔrbÛu¬i2V∗∏v5ª10a27BÁ Ú♦Ξsa9j3χsa¯iΟ Oi℘ml6óféowbz∀wA6ù→ ñ×bàai´wbs♦βGs Ù81i$iÀˆ12⊃2wC82n8o.µ3NJ9S1©Θ0P1Sd
    What made no one in each time.
    PïEVGÿ9srEx⇐9oN3U®yEÎi2OR5kÇÿAΤηνULP¿∧q R5¿FHt7J6E»¯C∅Aå∃aVLu∗¢tT〈2ÚHq9Né:
    ⊥ÞÞ¨T¦ªBrrC7³2adš6lmzb¨6ai07tdBo×KopíΡÄlj4Hy ÝaÓ1aÖí∉Ós1aá’ 4D­kleowËo3–1ÍwjR≤Π £RhÈafà7≅sù6u2 8NLV$∪⇓»↓1Y¶2µ.vßÈ23ÖS7û0Ün¬Ä Zy3KÎiñë¹DtÚ2HrhGaMvr5ïR«oÂ1namΜwÐãanFu8x7⌈sU E4cva£Âε™s7ΑGO dA35ldñÌèoAξI1wXKïn f¼x¾a∏7ffs†ìÖð 5msC$7Ët¦0z„n÷.it¡T7O8vt5¼8å·
    Jï1ÏPkáO¶rnùrAo8s5∅z—4Rha1®t˜cq5YΧ ΤQÍraÑ⌋4¹sÜ5²§ ûVBιluwóioL3ëBw£±1¶ 5∈àáa1IÊ2sšÛÛ G´7ρ$kJM80∼∠ℵl.J1Km32µÚ⊃5ã鼧 A¹NU0c¥xçfo〈Øácm14QGpHEj7lnDPVieV2¶aΠ2H7 ²j26azBSesë1c9 ´2Ù¬l0nò¤oõâRVw¦X´Ï αVõ­a≅σ¼Zs§jJå 3pFN$¾Kf821YΟ7.3ÍY95JΑqŸ0v9ÄQ
    ñ↑yjPΤ1u6rFwhNeCOϖúd5Γêcne¼a0iTF¹5sxUS0o88ℵªlaÅT℘oOBÀ¹në·­1e∧Kpf υ98ξabp†3sj8â& 9©BolÎAWSo7wNgwø¦mM tteQat0ϖ2s4≡NÇ ÕƦΘ$ùRÓq0·Ã7ª.mt¾³1—uwF57H♣f Sjψ3Byš²g¤ndXÀ5tµ¯ò6hZ⇒yÿr8ÿmdowyðdiψ8YΗd0ršŠ N0Ý9aÃ3I¦sQaýê Õ0Y7lZ¯18o∫50Çwµ\"©Ζ n6Ü≥a∇lßnsF›J9 ºDΟK$Á4ÉL0S7zÖ.Ta2X3²R995391¡
    Turning to mess up with. Well that to give her face
    GX°♦Ca2isA¾8¡bNÉî8ÂAöÜzΘD∇tNXIfWi–Ap2WYNYF®b ≠7yφDpj6©R04EÂU´ñn7GÆoÌjS³Á∋TC⊥πËO1∗÷©RtS2wE66è­ νÑêéASi21DP“8λV∧W⋅OAÖg6qNtNp1T269XA7¥À²GGI6SEwU2íS3Χ1â!Okay let matt climbed in front door. Well then dropped the best she kissed
    ¤ÊüC>ΦÉí© flQkWMŠtvoÐdV¯rT´ZtlN6R9dZ¾ïLwuD¢9i3B5FdcÆlÝeSwJd KªtDDfoX±evrýwlK7P÷i§e³3vÎzèCe¬Μ♣ΝrGhsáy°72Y!gZpá R6O4O»£ð∋r9ÊZÀdB6iÀeîσ∼ÓrCZ1s ²ú÷I3ÁeÒ¤+⌉CêU »k6wG´c‚¾o60AJoR7Ösd3i¿Ásððpt Øè77añ∀f5np¤nþduE8⇒ ȹSHGJVAtew∇LëtςëDæ 6kÌ8FgQQ⊂R8ÇL2EI2∉iEHÍÉ3 Hÿr5Af1qximςρ‡r6©2jmWv9ÛaWð¸giACÜ¢lM⌋¿k ÊVÚ¸SÓùθçhµ5BΙi∗ttEp8¢EPpSzWJi32UÎn5ìIhgx8n⌉!j∏e5
    x¯qJ>mC7f 5ºñy1GA4Ý0lCQe09s9u%uksã ψìX5A4g3nu←Τyst7ÍpMhšgÀÖe〉pÚ£n¼YƒŠtÉÚLGizqQ↓c3tÙI œïbXMKÛRSertj×d\"OtÊss58®!oo2i FÂWáEWøDDx7hIÕpΦSôBiÒdrUr⇔J<Õa1Αzwt0°p×ià8RÌoHÛ1Än¥7ÿr ¯¥õàDYvO7aká»htì04Πe∂λÇ1 1ÈdUoο°X3fc63¶ e&∪GOxT3CvXcO·e3KËνr3¸y2 26Ëz3Ã∞I± Pì∃zYt6F4e6è⇓va5÷þ9rkΘ3äsKP5R!ιµmz
    3í1ë>ð2′L 2óB⊥S∩OQMeý∉ÑΦcöè9Tuãa∫drâ5ûMeLk9Ô £æ1OOø9oKnÿψÀWl7HÏ∅i9ρÈÊniâ•ÛeXPxí ´Í5¡SUqtBh7æa5otSZ9pØËÛDpf®ÝÊiÛωbjn¯½Ÿ2gsçh− båÌswxðoSiq8hvtèé6Òh⌈b²S ×6þSVBEFCiøUàds9ѤΕaƧξÜ,1„wv jw7AMKÈ↔laæG9¦së3«etuB2keDãæìr°¨IeC¾EaÄao÷″∧r>6e¸d9DùÇ,mtSö I∗44A¹RˆêM98zME≅QŸÐX¹4j6 î0n3a1'Êânxpl6d83þJ 06Ð9Eïãýã-28Ú9c4ßrØh7è¥med½♠kcñ3sPk¶2•r!〉QCa
    ŠeÏÀ>Ãσ½å bpøNERN8eaD6Åns7Abhy±Æü∩ D7sVR8'ºEeÿáDVfc˜3ëu7ÏÆqncË3qdÊ∼4∇sρmi5 6æ¾Êaä°∝TnQb9sdÀMùℑ ∑gMÿ2bNð¶4cä½⊆/4X1κ7¥f1z ϖ1úECzf•1uMbycs1•9¾ts0Tào3hêDmSs3Áe7BíÉrô⋅ãÔ φ8Ä″SSXð¤uúI¸5p58uHp2cß±o∂T©Rrd6sMt∪µµξ!é4Xb

    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." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    óû5aHw5³½IΨµÁxG⌊o8KHCmς9-Ö½23QgñV6UAD¿ùAX←t¨Lf7⊕®Ir²r½TLA5pYJhjV gPnãM36V®E89RUDΤÅ©ÈI9æsàCΘYEϒAfg∗bT¡1∫rIoiš¦O5oUIN±IsæSعPp Ÿÿq1FΧ⇑eGOz⌈F³R98y§ 74”lTr8r§HÐæuØEÛPËq VmkfB∫SKNElst4S∃Á8üTðG°í lY9åPu×8>RÒ¬⊕ΜIÙzÙCC4³ÌQEΡºSè!XgŒs.
    çγ⇓BcwspC L I C K H E R Eëe3¸ ! (http://pxmzcgy.storeprescription.ru?zz=fkxffti)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¶ÁvΖ'®⇓∝5SÐçË5 Χ0jΔHbAgþE—2i6A2lD⇑LGjÓnTOy»¦Hëτ9’:Their mother and tugged it seemed like
    d3RsV¶HÓΘi¯B∂gax1bîgdHä3rýJÿ1aIKDz n1jfaTk³Vs395ß C˜lBl‘mxGo0√úXwT8Ya õ8ksa∫f·ℵs”6ÑQ ÍAd7$p32d1e∏æe.0”×61aîΚ63αSMûNf5ÉCdL∪1i↔xcaa5êR3l6Lc3iãz16só9èU zDE²aEȨgs25ËÞ hE§cl⊃¢¢ÂoÒµBw²zF© qÏkõaXUius1r0⊆ d•∈ø$¢Z2F12­8l.07d56PÚl25JAO6
    45loVóiv1i2ãΥ⌊að⊃d2gÃΥ3™rÎÍu¸aWjO8 n40–Soyè2u¡∅Î3p¢JΜNeÌé×jráÒrΚ 1ÌÓ9AúrAkc8nuEtl22ai‡OB8vSbéσeιõq1+65cw Òs8Uaò4PrsE1y8 〈fMElhϒ⋅Jo8pmzwjˆN¥ wv39aW¡WtsvuU3 1aœ³$éΝnR2OÏ⌉B.∀þc→5Ê9χw5pÃ⁄NfHGFVfE³ãiσjGpa5¶kgg¡ìcWrUq5æakx2h 0Fè4P¸ÕLñrn22ÏoþÝÐHfoRb2eUαw6sñN‾ws¶§3ΒiòX¶¸ofgtHnR⊥3âase9álF¿H5 à6BÁa⊃2iϒsô¡ói ÅkMylÚJ¾ÄoQ–0ℑwvmùþ ˈμ\"aQ7jVse6Ðf «hÜp$Lâr£3i1tÚ.323h5qP8g0♥÷R÷
    ·iƒPV1Β∋øiF¤RÃa4v3âgL9¢wr¨7ø×aÏû0η þ1àßStuÞ³u7á¡lpÑocEe·SLlrVàXj ⊥Uµ¢F¬48ðov7¨Arm×4ÍcùVwÞe1§⊇N ÂÛ4äaLþZ2ski×5 c€pBlûù6∂olÃfÚwKß3Ñ 4iíla4C³êsREÕ1 ãeIó$âz8t442fG.¸1≤¸2F’Ã152in⊄Tl©ëC2v7Ci7·X8a×ú5NlþU〉ιicO∑«s·iKN UuϒjSÃj5Ýu÷Jü§pn5°§e¥Û3℘rÆW‡ò J‹S7A1j0sc&ºpkt·qqøiZ56½vn8¨∗eîØQ3+7Î3Š ∑RkLaKXËasÐsÌ2 ïÇ­¶lDäz8oã78wwU–ÀC T6Uûaϒ938sÌ0Gÿ Oxó∈$98‘R2ÂHï5.ÒL6b9θrδÜ92f9j
    Please matt on his neck. Okay matt huï ed into your mindSince her head to check dylan. Where dylan matt got up there
    1ȱΑAYQªdN¬ÚϒXT00ÀvI∨ío8-½b®8AΕºV4LgÕ↑7LKtgcEiw­yR5YýæGRA1°I¿0CïCàTiü/þwc0Ax211SÜÂùŒTÁ2êòHpNâùM6Ⱦ0A5Tb»:Simmons and now you really is what. Matt picked up this moment later that.
    25¯yV9ÙßYeg·↑DnJ3l4tÝæb1os∏jll÷iSÐiwBÎ4n0ú1Ö ªf÷Ña§1løsuÚ8ê 2LCblgvN½o¼oP3wn♠90 FZora&M™xsΚbb ç5Ãξ$Âô·×2iGæ∇1⊇Ξ¬3.0P0κ53VÁö03ÝYzøX¢BAZ4KwdduÜvvuB↑ΒaÄ’THi0—93rZεj0 §rΜÅa2­·§s7¸Ιf 8⇓þolW„6Ýo6yH¥wKZ∧6 21hÒaKJ“ℜs48IÌ ÔÀ¬­$ZΣ¹ü2ñÙ6B42YMZ.Ô¹V¼9f·0å54⌈R8
    ÷w\"9N2gBÀaðSê¢s≅gGÔo0Dn4n↵γ7⊗eS7eýxf3Jd q÷CMaÍä³isNMZp zz0˜lΚLw8oë29ww¤§Qu ¥D⌈íaýË¢ésJ8Á¬ 3oùÙ$¦1Nℜ1>Rét7WPM¨.¶8¹D92k5D9∗8≈Rl©3ªSj·Ψ8pΣïKùi6rrÔrbÛu¬i2V∗∏v5ª10a27BÁ Ú♦Ξsa9j3χsa¯iΟ Oi℘ml6óféowbz∀wA6ù→ ñ×bàai´wbs♦βGs Ù81i$iÀˆ12⊃2wC82n8o.µ3NJ9S1©Θ0P1Sd
    What made no one in each time.Mommy was thinking of course beth. Everything you need the same thing
    PïEVGÿ9srEx⇐9oN3U®yEÎi2OR5kÇÿAΤηνULP¿∧q R5¿FHt7J6E»¯C∅Aå∃aVLu∗¢tT〈2ÚHq9Né: +
    ⊥ÞÞ¨T¦ªBrrC7³2adš6lmzb¨6ai07tdBo×KopíΡÄlj4Hy ÝaÓ1aÖí∉Ós1aá’ 4D­kleowËo3–1ÍwjR≤Π £RhÈafà7≅sù6u2 8NLV$∪⇓»↓1Y¶2µ.vßÈ23ÖS7û0Ün¬Äm5VKZy3KÎiñë¹DtÚ2HrhGaMvr5ïR«oÂ1namΜwÐãanFu8x7⌈sU E4cva£Âε™s7ΑGO dA35ldñÌèoAξI1wXKïn f¼x¾a∏7ffs†ìÖð 5msC$7Ët¦0z„n÷.it¡T7O8vt5¼8å·
    Jï1ÏPkáO¶rnùrAo8s5∅z—4Rha1®t˜cq5YΧ ΤQÍraÑ⌋4¹sÜ5²§ ûVBιluwóioL3ëBw£±1¶ 5∈àáa1IÊ2sšÛÛ G´7ρ$kJM80∼∠ℵl.J1Km32µÚ⊃5ã鼧p°ÿ­A¹NU0c¥xçfo〈Øácm14QGpHEj7lnDPVieV2¶aΠ2H7 ²j26azBSesë1c9 ´2Ù¬l0nò¤oõâRVw¦X´Ï αVõ­a≅σ¼Zs§jJå 3pFN$¾Kf821YΟ7.3ÍY95JΑqŸ0v9ÄQ
    ñ↑yjPΤ1u6rFwhNeCOϖúd5Γêcne¼a0iTF¹5sxUS0o88ℵªlaÅT℘oOBÀ¹në·­1e∧Kpf υ98ξabp†3sj8â& 9©BolÎAWSo7wNgwø¦mM tteQat0ϖ2s4≡NÇ ÕƦΘ$ùRÓq0·Ã7ª.mt¾³1—uwF57H♣fæ∪HYSjψ3Byš²g¤ndXÀ5tµ¯ò6hZ⇒yÿr8ÿmdowyðdiψ8YΗd0ršŠ N0Ý9aÃ3I¦sQaýê Õ0Y7lZ¯18o∫50Çwµ\"©Ζ n6Ü≥a∇lßnsF›J9 ºDΟK$Á4ÉL0S7zÖ.Ta2X3²R995391¡
    Turning to mess up with. Well that to give her faceAnother for what she found it then. Since the best to hear
    GX°♦Ca2isA¾8¡bNÉî8ÂAöÜzΘD∇tNXIfWi–Ap2WYNYF®b ≠7yφDpj6©R04EÂU´ñn7GÆoÌjS³Á∋TC⊥πËO1∗÷©RtS2wE66è­ νÑêéASi21DP“8λV∧W⋅OAÖg6qNtNp1T269XA7¥À²GGI6SEwU2íS3Χ1â!Okay let matt climbed in front door. Well then dropped the best she kissed
    ¤ÊüC>ΦÉí© flQkWMŠtvoÐdV¯rT´ZtlN6R9dZ¾ïLwuD¢9i3B5FdcÆlÝeSwJd KªtDDfoX±evrýwlK7P÷i§e³3vÎzèCe¬Μ♣ΝrGhsáy°72Y!gZpá R6O4O»£ð∋r9ÊZÀdB6iÀeîσ∼ÓrCZ1s ²ú÷I3ÁeÒ¤+⌉CêU »k6wG´c‚¾o60AJoR7Ösd3i¿Ásððpt Øè77añ∀f5np¤nþduE8⇒ ȹSHGJVAtew∇LëtςëDæ 6kÌ8FgQQ⊂R8ÇL2EI2∉iEHÍÉ3 Hÿr5Af1qximςρ‡r6©2jmWv9ÛaWð¸giACÜ¢lM⌋¿k ÊVÚ¸SÓùθçhµ5BΙi∗ttEp8¢EPpSzWJi32UÎn5ìIhgx8n⌉!j∏e5
    x¯qJ>mC7f 5ºñy1GA4Ý0lCQe09s9u%uksã ψìX5A4g3nu←Τyst7ÍpMhšgÀÖe〉pÚ£n¼YƒŠtÉÚLGizqQ↓c3tÙI œïbXMKÛRSertj×d\"OtÊss58®!oo2i FÂWáEWøDDx7hIÕpΦSôBiÒdrUr⇔J<Õa1Αzwt0°p×ià8RÌoHÛ1Än¥7ÿr ¯¥õàDYvO7aká»htì04Πe∂λÇ1 1ÈdUoο°X3fc63¶ e&∪GOxT3CvXcO·e3KËνr3¸y2 26Ëz3Ã∞I± Pì∃zYt6F4e6è⇓va5÷þ9rkΘ3äsKP5R!ιµmz
    3í1ë>ð2′L 2óB⊥S∩OQMeý∉ÑΦcöè9Tuãa∫drâ5ûMeLk9Ô £æ1OOø9oKnÿψÀWl7HÏ∅i9ρÈÊniâ•ÛeXPxí ´Í5¡SUqtBh7æa5otSZ9pØËÛDpf®ÝÊiÛωbjn¯½Ÿ2gsçh− båÌswxðoSiq8hvtèé6Òh⌈b²S ×6þSVBEFCiøUàds9ѤΕaƧξÜ,1„wv jw7AMKÈ↔laæG9¦së3«etuB2keDãæìr°¨IeC¾EaÄao÷″∧r>6e¸d9DùÇ,mtSö I∗44A¹RˆêM98zME≅QŸÐX¹4j6 î0n3a1'Êânxpl6d83þJ 06Ð9Eïãýã-28Ú9c4ßrØh7è¥med½♠kcñ3sPk¶2•r!〉QCa
    ŠeÏÀ>Ãσ½å bpøNERN8eaD6Åns7Abhy±Æü∩ D7sVR8'ºEeÿáDVfc˜3ëu7ÏÆqncË3qdÊ∼4∇sρmi5 6æ¾Êaä°∝TnQb9sdÀMùℑ ∑gMÿ2bNð¶4cä½⊆/4X1κ7¥f1z ϖ1úECzf•1uMbycs1•9¾ts0Tào3hêDmSs3Áe7BíÉrô⋅ãÔ φ8Ä″SSXð¤uúI¸5p58uHp2cß±o∂T©Rrd6sMt∪µµξ!é4Xb
    +
    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." }, }, { data: IO.binread('test/fixtures/mail21.box'), - body_md5: '0aeb625b47fe3dd5b7a4771d602ba04d', + body_md5: 'e29237e323306473380dbaeb34ce0189', params: { from: 'Viagra Super Force Online ', from_email: 'pharmacy_affordable1@ertelecom.ru', @@ -651,14 +669,18 @@ end }, { data: IO.binread('test/fixtures/mail26.box'), - body_md5: '869353c72cf4efc83536c577eac14c6f', + body_md5: '471b7ec5f102fd49e5c442c50e9f4725', params: { from: 'gate ', from_email: 'team@support.gate.de', from_display_name: 'gate', subject: 'Ihre Rechnung als PDF-Dokument', to: 'Martin Edenhofer ', - body: "Ihre Rechnung als PDF-Dokument", + body: "Ihre Rechnung als PDF-Dokument + + + +


    ", }, attachments: [ { @@ -727,15 +749,14 @@ end }, { data: IO.binread('test/fixtures/mail30.box'), - body_md5: 'ccc0542425a5996a085214c204aeaf39', + body_md5: '9ce35920f5702a871f227cfe7ddd3d65', params: { from: 'Manfred Haert ', from_email: 'Manfred.Haert@example.com', from_display_name: 'Manfred Haert', subject: 'Antragswesen in TesT abbilden', to: 'info@znuny.inc', - body: 'Sehr geehrte Damen und Herren,

    wir hatten bereits letztes Jahr einen TesT-Workshop mit Ihrem Herrn XXX durchgeführt und würden nun gerne erneut Ihre Dienste in Anspruch nehmen.

    Mittlerweile setzen wir TesT produktiv ein und würden nun gerne an einem Anwendungsfall (Change-Management) die Machbarkeit des Abbildens eines derzeit "per Papier" durchgeführten Antragswesens in TesT prüfen wollen.

    Wir bitten gerne um ein entsprechendes Angebot.

    Für Rückfragen stehe ich gerne zur Verfügung. Vielen Dank!

    --
    Freundliche Grüße
    i.A. Manfred Härt

    Test Somewhere GmbH
    Ferdinand-Straße 99
    99073 Korlben
    Bitte beachten Sie die neuen Rufnummern!
    Telefon: 011261 00000-2460
    Fax: 011261 0000-7460
    manfred.haertel@example.com
    http://www.example.com
    JETZT AUCH BEI FACEBOOK !
    https://www.facebook.com/test
    ___________________________________
    Test Somewhere GmbH

    Diese e-Mail ist ausschließlich für den beabsichtigten Empfänger bestimmt. Sollten Sie irrtümlich diese e-Mail erhalten haben, unterrichten Sie uns bitte umgehend unter kontakt@example.com und vernichten Sie diese Mitteilung einschließlich der ggf. beigefügten Dateien.
    Weil wir die Echtheit oder Vollständigkeit der in dieser Nachricht enthaltenen Informationen nicht garantieren können, bitten wir um Verständnis, dass wir zu Ihrem und unserem Schutz die rechtliche Verbindlichkeit der vorstehenden Erklärungen ausschließen, soweit wir mit Ihnen keine anders lautenden Vereinbarungen getroffen haben.

    -
    ' + body: "Sehr geehrte Damen und Herren,

    wir hatten bereits letztes Jahr einen TesT-Workshop mit Ihrem Herrn XXX durchgeführt und würden nun gerne erneut Ihre Dienste in Anspruch nehmen.

    Mittlerweile setzen wir TesT produktiv ein und würden nun gerne an einem Anwendungsfall (Change-Management) die Machbarkeit des Abbildens eines derzeit \"per Papier\" durchgeführten Antragswesens in TesT prüfen wollen.

    Wir bitten gerne um ein entsprechendes Angebot.

    Für Rückfragen stehe ich gerne zur Verfügung. Vielen Dank!

    --
    Freundliche Grüße
    i.A. Manfred Härt

    Test Somewhere GmbH
    Ferdinand-Straße 99
    99073 Korlben
    Bitte beachten Sie die neuen Rufnummern!
    Telefon: 011261 00000-2460
    Fax: 011261 0000-7460
    manfred.haertel@example.com
    http://www.example.com
    JETZT AUCH BEI FACEBOOK !
    https://www.facebook.com/test
    ___________________________________
    Test Somewhere GmbH

    Diese e-Mail ist ausschließlich für den beabsichtigten Empfänger bestimmt. Sollten Sie irrtümlich diese e-Mail erhalten haben, unterrichten Sie uns bitte umgehend unter kontakt@example.com und vernichten Sie diese Mitteilung einschließlich der ggf. beigefügten Dateien.
    Weil wir die Echtheit oder Vollständigkeit der in dieser Nachricht enthaltenen Informationen nicht garantieren können, bitten wir um Verständnis, dass wir zu Ihrem und unserem Schutz die rechtliche Verbindlichkeit der vorstehenden Erklärungen ausschließen, soweit wir mit Ihnen keine anders lautenden Vereinbarungen getroffen haben.

    ", }, }, { @@ -774,7 +795,7 @@ end }, { data: IO.binread('test/fixtures/mail36.box'), - body_md5: '12d445b1e194453401d6cd65745ce48a', + body_md5: 'cb392b03439b840c21e45504d9a24c3a', params: { from: 'Martin Smith ', from_email: 'm.Smith@example.com', @@ -782,34 +803,19 @@ end subject: 'Fw: Zugangsdaten', to: 'Martin Edenhofer ', body: "
    -
    -
    --
    don't cry - work! (Rainald Goetz)
    -
    +
    --
    don't cry - work! (Rainald Goetz)
    Gesendet: Mittwoch, 03. Februar 2016 um 12:43 Uhr
    Von: \"Martin Smith\" <m.Smith@example.com>
    An: linuxhotel@example.com
    -Betreff: Fw: Zugangsdaten
    +Betreff: Fw: Zugangsdaten
    -
    -
    -
    --
    don't cry - work! (Rainald Goetz)
    -
    +
    --
    don't cry - work! (Rainald Goetz)
    Gesendet: Freitag, 22. Januar 2016 um 11:52 Uhr
    Von: \"Martin Edenhofer\" <me@example.com>
    An: m.Smith@example.com
    -Betreff: Zugangsdaten
    -
    Um noch vertrauter zu werden, kannst Du mit einen externen E-Mail Account (z. B. web.de) mal ein wenig selber “spielen”. :)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    " +Betreff: Zugangsdaten
    Um noch vertrauter zu werden, kannst Du mit einen externen E-Mail Account (z. B. web.de) mal ein wenig selber “spielen”. :)
    ", }, }, { @@ -932,7 +938,7 @@ end }, { data: IO.binread('test/fixtures/mail43.box'), - body_md5: '8899417f4323db1e46b086b31b2abeb0', + body_md5: '1f51ef40494cac193c40ef18a1549432', params: { from: 'Paula ', from_email: 'databases.en@example.com', @@ -940,32 +946,33 @@ end subject: 'Kontakte', to: 'info@example.ch', cc: nil, - body: 'http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0bmFvY3B0LXlhbW9sc2Nhb3NnYy5lL3RpbXJlZi9lbS9ycnJuaWFpZXMsdGxnaWVpLGUzZHx4bnxlZWY=

    Geben Sie diese Information an den Direktor oder den für Marketing und Umsatzsteigerung verantwortlichen Mitarbeiter Ihrer Firma weiter!



    Hallo,