diff --git a/.gitignore b/.gitignore index b85937e28..1ef217eea 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,10 @@ # Ignore database config /config/database.yml +# Ignore translation cache files +/config/locales*.yml +/config/translations/*.yml + # Ignore coverage stuff /coverage diff --git a/config/initializers/html_sanitizer.rb b/config/initializers/html_sanitizer.rb index c94403070..d2815923e 100644 --- a/config/initializers/html_sanitizer.rb +++ b/config/initializers/html_sanitizer.rb @@ -4,6 +4,11 @@ Rails.application.config.html_sanitizer_tags_remove_content = %w( style ) +# content of this tags will will be inserted html quoted +Rails.application.config.html_sanitizer_tags_quote_content = %w( + script +) + # only this tags are allowed Rails.application.config.html_sanitizer_tags_whitelist = %w( a abbr acronym address area article aside audio @@ -22,7 +27,7 @@ Rails.application.config.html_sanitizer_attributes_whitelist = { :all => %w(class dir lang style title translate data-signature data-signature-id), 'a' => %w(href hreflang name rel), 'abbr' => %w(title), - 'blockquote' => %w(cite), + 'blockquote' => %w(type cite), 'col' => %w(span width), 'colgroup' => %w(span width), 'data' => %w(value), diff --git a/lib/core_ext/string.rb b/lib/core_ext/string.rb index c3512ceae..f309b98c3 100644 --- a/lib/core_ext/string.rb +++ b/lib/core_ext/string.rb @@ -287,30 +287,68 @@ class String =end - def html2html_strict(force = false) - string = html2text(true, true) - string.signature_identify(force) - string = string.text2html - string.gsub!(%r{######LINKEXT:(.+?)/TEXT:(.+?)######}, '\2') - string.gsub!(/######LINKRAW:(.+?)######/, '\1') + def html2html_strict + string = "#{self}" # rubocop:disable Style/UnneededInterpolation + string = HtmlSanitizer.cleanup(string).strip + string = HtmlSanitizer.strict(string, true).strip + + # as fallback, use html2text and text2html + if string.blank? + string = html2text.text2html + string.signature_identify('text') + marker_template = '' + string.sub!(/######SIGNATURE_MARKER######/, marker_template) + string.gsub!(/######SIGNATURE_MARKER######/, '') + return string.chomp + end + + #string.gsub!(/

[[:space:]]+<\/p>

[[:space:]]+<\/p>/m, '

') + string.gsub!(%r{

[[:space:]]+

\n

[[:space:]]+

}im, '

') + string.gsub!(%r{
[[:space:]]+
\n
[[:space:]]+
}im, '
') + string.gsub!(/
[[:space:]]?
[[:space:]]?
/im, '

') + string.gsub!(/
[[:space:]]?
[[:space:]]?
/im, '

') + string.gsub!(/
[[:space:]]?
[[:space:]]?
/im, '

') + string.gsub!(%r{
[[:space:]]?
[[:space:]]?
}im, '

') + string.gsub!(%r{
[[:space:]]?
[[:space:]]?
}im, '

') + string.gsub!(%r{
[[:space:]]?
[[:space:]]?
}im, '

') + string.gsub!(%r{

[[:space:]]+

}im, '

 

') + + string.signature_identify('html') + marker_template = '' string.sub!(/######SIGNATURE_MARKER######/, marker_template) string.gsub!(/######SIGNATURE_MARKER######/, '') - string.gsub!(/######(.+?)######/, '<\1>') string.chomp end - def signature_identify(force = false) + def signature_identify(type = 'text', force = false) string = self + marker = '######SIGNATURE_MARKER######' + + if type == 'html' + map = [ + '[[:space:]]*(--|__)', + '<\/div>[[:space:]]*(--|__)', + '

[[:space:]]*(--|__)', + '(|

|

)[[:space:]]*(Von|From|De|от|Z|Od|Ze|Fra|Van|Mistä|Από|Dal|から|Из|од|iz|Från|จาก|з|Từ):[[:space:]]*', + '
[[:space:]]*
[[:space:]]*(Von|From|De|от|Z|Od|Ze|Fra|Van|Mistä|Από|Dal|から|Из|од|iz|Från|จาก|з|Từ):[[:space:]]+', + '[[:space:]]*
[[:space:]]*(On|Am)', + ] + map.each { |regexp| + string.sub!(/#{regexp}/m) { |placeholder| + placeholder = "#{marker}#{placeholder}" + } + } + return string + end + # if we do have less then 10 lines and less then 300 chars ignore this if !force lines = string.split("\n") return if lines.count < 10 && string.length < 300 end - marker = '######SIGNATURE_MARKER######' - # search for signature separator "--\n" string.sub!(/^\s{0,2}--\s{0,2}$/) { |placeholder| placeholder = "#{marker}#{placeholder}" @@ -360,7 +398,7 @@ class String # rubocop:enable Style/AsciiComments # en/de/fr | sometimes ms adds a space to "xx : value" - map['ms-en-de-fr_from'] = '^(From|Von|De)( ?):[[:space:]].+?' + map['ms-en-de-fr_from'] = '^(Von|From|De|от|Z|Od|Ze|Fra|Van|Mistä|Από|Dal|から|Из|од|iz|Från|จาก|з|Từ)( ?):[[:space:]].+?' map['ms-en-de-fr_from_html'] = "\n######b######(From|Von|De)([[:space:]]?):([[:space:]]?)(######\/b######)[[:space:]].+?" # word 14 @@ -369,9 +407,14 @@ class String #map['word-en-de'] = "[^#{marker}].{1,250}\s(wrote|schrieb):" map.each { |_key, regexp| - string.sub!(/#{regexp}/) { |placeholder| - placeholder = "#{marker}#{placeholder}" - } + begin + string.sub!(/#{regexp}/) { |placeholder| + placeholder = "#{marker}#{placeholder}" + } + rescue + # regexp was not possible because of some string encoding issue, use next + Rails.logger.debug "Invalid string/charset combination with regexp #{regexp} in string" + end } string diff --git a/lib/html_sanitizer.rb b/lib/html_sanitizer.rb index 73b420632..d8d127f0e 100644 --- a/lib/html_sanitizer.rb +++ b/lib/html_sanitizer.rb @@ -1,43 +1,106 @@ class HtmlSanitizer - def self.strict(string) +=begin + +satinize html string based on whiltelist + + string = HtmlSanitizer.strict(string, external) + +=end + + def self.strict(string, external = false) # config tags_remove_content = Rails.configuration.html_sanitizer_tags_remove_content + tags_quote_content = Rails.configuration.html_sanitizer_tags_quote_content tags_whitelist = Rails.configuration.html_sanitizer_tags_whitelist attributes_whitelist = Rails.configuration.html_sanitizer_attributes_whitelist css_properties_whitelist = Rails.configuration.html_sanitizer_css_properties_whitelist + classes_whitelist = ['js-signatureMarker'] + attributes_2_css = %w(width height) scrubber = Loofah::Scrubber.new do |node| # remove tags with subtree if tags_remove_content.include?(node.name) node.remove + Loofah::Scrubber::STOP + end + + # remove tag, insert quoted content + if tags_quote_content.include?(node.name) + string = node.content + string.gsub!('&', '&') + string.gsub!('<', '<') + string.gsub!('>', '>') + string.gsub!('"', '"') + string.gsub!(' ', ' ') + text = Nokogiri::XML::Text.new(string, node.document) + node.add_next_sibling(text) + node.remove + Loofah::Scrubber::STOP end # replace tags, keep subtree if !tags_whitelist.include?(node.name) - traversal(node, scrubber) + node.replace strict(node.children.to_s) + Loofah::Scrubber::STOP end # prepare src attribute if node['src'] - src = cleanup(node['src']) + src = cleanup_target(node['src']) if src =~ /(javascript|livescript|vbscript):/i || src.start_with?('http', 'ftp', '//') - traversal(node, scrubber) + node.remove + Loofah::Scrubber::STOP end end + # clean class / only use allowed classes + if node['class'] + classes = node['class'].gsub(/\t|\n|\r/, '').split(' ') + class_new = '' + classes.each { |local_class| + next if !classes_whitelist.include?(local_class.to_s.strip) + if class_new != '' + class_new += ' ' + end + class_new += local_class + } + if class_new != '' + node['class'] = class_new + else + node.delete('class') + end + end + + # move style attributes to css attributes + attributes_2_css.each { |key| + next if !node[key] + if node['style'].empty? + node['style'] = '' + else + node['style'] += ';' + end + value = node[key] + node.delete(key) + next if value.blank? + if value !~ /%|px|em/i + value += 'px' + end + node['style'] += "#{key}:#{value}" + } + # clean style / only use allowed style properties if node['style'] pears = node['style'].downcase.gsub(/\t|\n|\r/, '').split(';') style = '' - pears.each { |pear| - prop = pear.split(':') + pears.each { |local_pear| + prop = local_pear.split(':') next if !prop[0] key = prop[0].strip next if !css_properties_whitelist.include?(key) - style += "#{pear};" + style += "#{local_pear};" } node['style'] = style if style == '' @@ -48,7 +111,7 @@ class HtmlSanitizer # scan for invalid link content %w(href style).each { |attribute_name| next if !node[attribute_name] - href = cleanup(node[attribute_name]) + href = cleanup_target(node[attribute_name]) next if href !~ /(javascript|livescript|vbscript):/i node.delete(attribute_name) } @@ -60,33 +123,231 @@ class HtmlSanitizer node.delete(attribute) } + # remove mailto links + if node['href'] + href = cleanup_target(node['href']) + if href =~ /mailto:(.*)$/i + text = Nokogiri::XML::Text.new($1, node.document) + node.add_next_sibling(text) + node.remove + Loofah::Scrubber::STOP + end + end + # prepare links if node['href'] - href = cleanup(node['href']) + href = cleanup_target(node['href']) next if !href.start_with?('http', 'ftp', '//') + node.set_attribute('href', href) node.set_attribute('rel', 'nofollow') node.set_attribute('target', '_blank') end + + # check if href is different to text + if external && node.name == 'a' && !url_same?(node['href'], node.text) + if node.children.empty? || node.children.first.class == Nokogiri::XML::Text + text = Nokogiri::XML::Text.new("#{node['href']} (", node.document) + node.add_previous_sibling(text) + node['href'] = cleanup_target(node.text) + text = Nokogiri::XML::Text.new(')', node.document) + node.add_next_sibling(text) + else + text = Nokogiri::XML::Text.new(cleanup_target(node['href']), node.document) + node.content = text + end + end + + # check if text has urls which need to be clickable + if node && node.name != 'a' && node.parent && node.parent.name != 'a' && (!node.parent.parent || node.parent.parent.name != 'a') + if node.class == Nokogiri::XML::Text + urls = [] + node.content.scan(%r{((http|https|ftp|tel)://.+?|(www..+?))([[:space:]]|\.[[:space:]]|,[[:space:]]|\.$|,$|\)|\(|$)}mxi).each { |match| + urls.push match[0] + } + next if urls.empty? + add_link(node.content, urls, node) + end + end + + end + Loofah.fragment(string).scrub!(scrubber).to_s + end + +=begin + +cleanup html string: + + * remove empty nodes (p, div, span) + * remove nodes in general (keep content - span) + + string = HtmlSanitizer.cleanup(string) + +=end + + def self.cleanup(string) + string.gsub!(/<[A-z]:[A-z]>/, '') + string.gsub!(%r{}, '') + string.delete!("\t") + + # remove all new lines + string.gsub!(/(\n\r|\r\r\n|\r\n|\n)/, "\n") + + # remove double multiple empty lines + string.gsub!(/\n\n\n+/, "\n\n") + + string = cleanup_replace_tags(string) + cleanup_structure(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) + scrubber = Loofah::Scrubber.new do |node| + next if !tags_backlist.include?(node.name) + 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) + + scrubber = Loofah::Scrubber.new do |node| + if remove_empty_last_nodes.include?(node.name) && node.children.size.zero? + 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) # && node.children.first.text.blank? + node.replace cleanup_structure(node.children.to_s) + end + + # remove mailto links + if node['href'] + href = cleanup_target(node['href']) + if href =~ /mailto:(.*)$/i + text = Nokogiri::XML::Text.new($1, node.document) + node.add_next_sibling(text) + node.remove + Loofah::Scrubber::STOP + end + end + + # check if href is different to text + if node.name == 'a' && !url_same?(node['href'], node.text) + if 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 + text = Nokogiri::XML::Text.new(cleanup_target(node['href']), node.document) + node.content = text + end + end + + # remove not needed new lines + if node.class == Nokogiri::XML::Text + if !node.parent || (node.parent.name != 'pre' && node.parent.name != 'code') + content = node.content + if content + if content != ' ' && content != "\n" + content.gsub!(/[[:space:]]+/, ' ') + end + if node.previous + if node.previous.name == 'div' || node.previous.name == 'p' + content.strip! + end + elsif node.parent && !node.previous + if (node.parent.name == 'div' || node.parent.name == 'p') && content != ' ' && content != "\n" + content.strip! + end + end + node.content = content + end + end + end end Loofah.fragment(string).scrub!(scrubber).to_s end - def self.traversal(node, scrubber) - node.children.each { |child| - if child.class == Nokogiri::XML::CDATA - node.before Nokogiri::XML::Text.new(node.content, node.document) - else - node.before Loofah.fragment(child.to_s).scrub!(scrubber) + def self.add_link(content, urls, node) + if urls.empty? + text = Nokogiri::XML::Text.new(content, node.document) + node.add_next_sibling(text) + return + end + url = urls.shift + + if content =~ /^(.*)#{Regexp.quote(url)}(.*)$/mx + pre = $1 + post = $2 + + if url =~ /^www/i + url = "http://#{url}" end - } - node.remove + + a = Nokogiri::XML::Node.new 'a', node.document + a['href'] = url + a['rel'] = 'nofollow' + a['target'] = '_blank' + a.content = url + + if node.class != Nokogiri::XML::Text + text = Nokogiri::XML::Text.new(pre, node.document) + node.add_next_sibling(text).add_next_sibling(a) + return if post.blank? + add_link(post, urls, a) + return + end + node.content = pre + node.add_next_sibling(a) + return if post.blank? + add_link(post, urls, a) + end end - def self.cleanup(string) - string.downcase.gsub(/[[:space:]]|\t|\n|\r/, '').gsub(%r{/\*.*?\*/}, '').gsub(//, '').gsub(/\[.+?\]/, '') + def self.cleanup_target(string) + URI.unescape(string).downcase.gsub(/[[:space:]]|\t|\n|\r/, '').gsub(%r{/\*.*?\*/}, '').gsub(//, '').gsub(/\[.+?\]/, '') end - private_class_method :traversal - private_class_method :cleanup + def self.url_same?(url_new, url_old) + url_new = URI.unescape(url_new.to_s).downcase.gsub(%r{/$}, '').gsub(/[[:space:]]|\t|\n|\r/, '').strip + url_old = URI.unescape(url_old.to_s).downcase.gsub(%r{/$}, '').gsub(/[[:space:]]|\t|\n|\r/, '').strip + return true if url_new == url_old + return true if "http://#{url_new}" == url_old + return true if "http://#{url_old}" == url_new + return true if "https://#{url_new}" == url_old + return true if "https://#{url_old}" == url_new + false + end + + private_class_method :cleanup_target + private_class_method :add_link + private_class_method :url_same? end diff --git a/test/fixtures/mail3.box b/test/fixtures/mail3.box index b15d14c6d..02e0b0682 100644 --- a/test/fixtures/mail3.box +++ b/test/fixtures/mail3.box @@ -315,7 +315,7 @@ lass=3DMsoNormal>T: +49 (0) XXX XX XX 22

F: = +49 (0) XXX XX XX 11

W: www.brain-scc= +le=3D'font-size:10.5pt;font-family:Consolas;color:#1F497D'>W: www.example= .de

 

Gesendet: Mittwoch, 03. Februar 2016 um 12:43 Uhr
Von: "Martin Smith" <m.Smith@example.com>
-An: linuxhotel@zammad.com
+An: linuxhotel@example.com
Betreff: Fw: Zugangsdaten
diff --git a/test/unit/aaa_string_test.rb b/test/unit/aaa_string_test.rb index fe3b07f5e..d538a8873 100644 --- a/test/unit/aaa_string_test.rb +++ b/test/unit/aaa_string_test.rb @@ -431,7 +431,7 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = 'test' - result = 'test' + result = 'test' assert_equal(result, html.html2html_strict) html = 'test' @@ -450,81 +450,154 @@ Men-----------------------' result = '

test

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

test

' + result = '

test

' + assert_equal(result, html.html2html_strict) + + html = "
\n\n\ntest\n\n\n
" + result = "
test
" + assert_equal(result, html.html2html_strict) + + html = "
\n\t\ntest\n\t\n
" + result = "
test
" + assert_equal(result, html.html2html_strict) + + html = "
\n\t\ntest 123\n\t\n
" + result = "
test 123
" + assert_equal(result, html.html2html_strict) + + html = "

" + result = "
\n

 

\n
" + assert_equal(result, html.html2html_strict) + + html = "
" + result = "
\n
\n
" + assert_equal(result, html.html2html_strict) + + html = "
a\nb\nc
" + result = "
a\nb\nc
" + assert_equal(result, html.html2html_strict) + + html = "
a\nb\nc
" + result = "
a\nb\nc
" + assert_equal(result, html.html2html_strict) + + html = '
+

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 +

+
' + + 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

+
+
' + assert_equal(result, html.html2html_strict) + html = 'http://example.com' - result = 'http://example.com' + result = 'http://example.com' assert_equal(result, html.html2html_strict) html = 'http://example.com?a=1;' - result = 'http://example.com?a=1;' + result = 'http://example.com?a=1;' assert_equal(result, html.html2html_strict) html = 'web.de' - result = 'web.de' + result = 'web.de' assert_equal(result, html.html2html_strict) html = 'web.de' - result = 'web.de' + result = 'web.de' assert_equal(result, html.html2html_strict) html = '
https://www.facebook.com/test
' - result = 'https://www.facebook.com/test' + result = '
https://www.facebook.com/test
' assert_equal(result, html.html2html_strict) html = 'some text http://example.com some other text' - result = 'some text http://example.com some other text' + result = 'some text http://example.com some other text' assert_equal(result, html.html2html_strict) html = 'some text www.example.com some other text' - result = 'some text http://www.example.com some other text' + result = 'some text http://www.example.com some other text' assert_equal(result, html.html2html_strict) html = 'http://what-different.example.com' - result = 'http://example.com (http://what-different.example.com)' - result = 'http://example.com (http://what-different.example.com)' + #result = 'http://example.com (http://what-different.example.com)' + result = 'http://what-different.example.com (http://example.com)' assert_equal(result, html.html2html_strict) html = 'http://EXAMPLE.com' - result = 'http://EXAMPLE.com' + result = 'http://EXAMPLE.com' assert_equal(result, html.html2html_strict) html = 'http://example.com' - result = 'http://example.com' + result = 'http://example.com' assert_equal(result, html.html2html_strict) html = 'http://example.com' - result = 'http://example.com' + result = 'http://example.com' assert_equal(result, html.html2html_strict) html = "http://example.com" - result = 'http://example.com' + result = 'http://example.com' assert_equal(result, html.html2html_strict) html = "http://example.com" - result = 'http://example.com' + result = 'http://example.com' assert_equal(result, html.html2html_strict) html = "
http://example.com
" - result = 'http://example.com' + result = "" assert_equal(result, html.html2html_strict) html = "
http://example.com.
" - result = 'http://example.com.' + result = "" + assert_equal(result, html.html2html_strict) + + html = "
lala http://example.com.
" + result = '' assert_equal(result, html.html2html_strict) html = "
http://example.com, and so on
" - result = 'http://example.com, and so on' + result = "" assert_equal(result, html.html2html_strict) html = "
http://example.com?lala=me, and so on
" - result = 'http://example.com?lala=me, and so on' + result = "" assert_equal(result, html.html2html_strict) html = "http://facebook.de/examplesrbog" - result = "http://facebook.de/examplesrbog" + #result = "http://facebook.de/examplesrbog" + result = "http://facebook.de/examplesrbog" assert_equal(result, html.html2html_strict) html = "Damit Sie keinen Tag versäumen, empfehlen wir Ihnen den Link des Adventkalenders in
      Ihrer Lesezeichen-Symbolleiste zu ergänzen.

 " - result = "Damit Sie keinen Tag versäumen, empfehlen wir Ihnen den Link des Adventkalenders (http://newsletters.cylex.de/) in
      Ihrer Lesezeichen-Symbolleiste zu ergänzen." + result = "Damit Sie keinen Tag versäumen, empfehlen wir Ihnen den Link des Adventkalenders (http://newsletters.cylex.de/) in
Ihrer Lesezeichen-Symbolleiste zu ergänzen.
" + 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
" + 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
" + 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
" + 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
" assert_equal(result, html.html2html_strict) html = 'test' @@ -536,11 +609,37 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = 'test< /b >' - result = 'test' + result = 'test< /b >' assert_equal(result, html.html2html_strict) html = "test<\n/b>" - result = 'test' + result = "test< /b>" + assert_equal(result, html.html2html_strict) + + html = ' + + +
Franz Schäfer +
Manager Information Systems
+
+ + + +
Telefon   ++49 000 000 8565 +
christian.schaefer@example.com
+
+' + result = "
Franz Schäfer



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


" + result = '
+Franz Schäfer +
+Manager Information Systems
+
+Telefon ++49 000 000 8565 +
+christian.schaefer@example.com
' assert_equal(result, html.html2html_strict) html = "test" @@ -548,15 +647,113 @@ Men-----------------------' assert_equal(result, html.html2html_strict) html = "test<\n/b>" - result = 'test' + result = "test< /b>" assert_equal(result, html.html2html_strict) html = "
  • test
  • \n
  • test
  • <\n/ul>" - result = '
    • test
    • test
    ' + result = "
      \n
    • test
    • \n
    • test
    • < /ul>
    " assert_equal(result, html.html2html_strict) - html = '
    Hallo Martin,
    ' - result = 'Hallo Martin,' + html = '
    Hello Martin,
    ' + result = '
    Hello Martin,
    ' + assert_equal(result, html.html2html_strict) + + html = '
    Hello Martin,
    ' + result = '
    Hello Martin,
    ' + assert_equal(result, html.html2html_strict) + + html = '
    Hello Martin,
    ' + result = "
    \n
    Hello Martin,
    \n
    " + assert_equal(result, html.html2html_strict) + + html = '' + result = '' + assert_equal(result, html.html2html_strict) + + html = '

    ' + result = '

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

    Hello Martin,

    ' + result = "
    lala

    Hello Martin,

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

    Hello Martin,

    ' + result = '

    Hello Martin,

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

    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 = '
    +

    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 = '

     

    +
    +
    +

    Von: Besucherbüro, MKuk [mailto: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,

    ' + + result = '

     

    +
    +

    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,

    ' + assert_equal(result, html.html2html_strict) + + html = '
    Hello Martin,
    ' + result = '
    Hello Martin,
    ' assert_equal(result, html.html2html_strict) html = 'john.smith@example.com' @@ -569,9 +766,23 @@ Men-----------------------' html = 'john.smith@example.com' #result = 'john.smith@example.com (mailto:john.smith2@example.com)' - result = 'john.smith@example.com' + result = 'john.smith2@example.com' assert_equal(result, html.html2html_strict) + html = '

    ' + #result = '

    http://www.example.de/

    ' + result = '

    http://www.example.de/

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

    ' + #result = '

    http://www.example.com/?wm=mail

    ' + result = '

    http://www.example.com/?wm=mail

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

    ' + #result = '

    http://www.example.com/?wm=mail

    ' + result = '

    http://www.example.com/?wm=mail

    ' + assert_equal(result, html.html2html_strict) end test 'signature_identify function' do @@ -579,80 +790,140 @@ Men-----------------------' source = 'test' result = 'test' - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "test\n--\nend" result = "test\n#{marker_template}--\nend" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "On 01/04/15 10:55, Bob Smith wrote:" result = "#{marker_template}On 01/04/15 10:55, Bob Smith wrote:" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "Am 03.04.2015 um 20:58 schrieb Martin Edenhofer :" result = "#{marker_template}Am 03.04.2015 um 20:58 schrieb Martin Edenhofer :" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "\ntest 123 \n1\n2\n3\n4\n5\n6\n7\n8\n9\n--\nBob Smith\n" result = "\ntest 123 \n1\n2\n3\n4\n5\n6\n7\n8\n9\n#{marker_template}--\nBob Smith\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "test 123 \n--no not match--\n--\nBob Smith\n" result = "test 123 \n--no not match--\n#{marker_template}--\nBob Smith\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "test 123 \n--no not match--\n -- \nBob Smith\n" result = "test 123 \n--no not match--\n#{marker_template} -- \nBob Smith\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "test 123 \n\n--\nBob Smith\n\n\n\n\n--\nBob Smith\n" result = "test 123 \n#{marker_template}\n--\nBob Smith\n\n\n\n\n--\nBob Smith\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "test 123\ntest 123\n--\nBob Smith\n" result = "test 123\ntest 123\n#{marker_template}--\nBob Smith\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) source = "test 123\ntest 123\n--\nBob Smith\n\n" result = "test 123\ntest 123\n#{marker_template}--\nBob Smith\n\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) # apple # en source = "test 123 \n--no not match--\nBob Smith\nOn 01/04/15 10:55, Bob Smith wrote:\nlalala\n--\nsome test" result = "test 123 \n--no not match--\nBob Smith\n#{marker_template}On 01/04/15 10:55, Bob Smith wrote:\nlalala\n#{marker_template}--\nsome test" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) # de source = "test 123 \n\n--no not match--\n\nBob Smith\nAm 03.04.2015 um 20:58 schrieb Bob Smith :\nlalala" result = "test 123 \n\n--no not match--\n\nBob Smith\n#{marker_template}Am 03.04.2015 um 20:58 schrieb Bob Smith :\nlalala" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) # ms # en source = "test 123 \n\n--no not match--\n\nBob Smith\nFrom: Martin Edenhofer via Znuny Support [mailto:support@znuny.inc]\nSent: Donnerstag, 2. April 2015 10:00\nlalala
    " result = "test 123 \n\n--no not match--\n\nBob Smith\n#{marker_template}From: Martin Edenhofer via Znuny Support [mailto:support@znuny.inc]\nSent: Donnerstag, 2. April 2015 10:00\nlalala
    " - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) # de source = "test 123 \n\n--no not match--\n\nBob Smith\nVon: Martin Edenhofer via Znuny Support [mailto:support@znuny.inc]\nGesendet: Donnerstag, 2. April 2015 10:00\nBetreff: lalala\n" result = "test 123 \n\n--no not match--\n\nBob Smith\n#{marker_template}Von: Martin Edenhofer via Znuny Support [mailto:support@znuny.inc]\nGesendet: Donnerstag, 2. April 2015 10:00\nBetreff: lalala\n" - assert_equal(result, source.signature_identify(true)) + assert_equal(result, source.signature_identify('text', true)) # fr source = "\ntest 123 \n\n--no not match--\n\nBob Smith\nDe : Martin Edenhofer via Znuny Support [mailto:support@znuny.inc]\nEnvoyé : mercredi 29 avril 2015 17:31\nObjet : lalala\n" result = "\ntest 123 \n\n--no not match--\n\nBob Smith\n#{marker_template}De : Martin Edenhofer via Znuny Support [mailto:support@znuny.inc]\nEnvoyé : mercredi 29 avril 2015 17:31\nObjet : lalala\n" - assert_equal(result, source.signature_identify(true)) - + assert_equal(result, source.signature_identify('text', true)) marker_template = '' - html = "
    lalala
    --
    Max Mix" - result = "lalala
    #{marker_template}--
    Max Mix" - assert_equal(result, html.html2html_strict(true)) + html = "lalala
    --
    Max Mix" + result = "lalala#{marker_template}
    --
    Max Mix" + assert_equal(result, html.html2html_strict) - html = "den.

    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" - result = "den.
    #{marker_template}
    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" - assert_equal(result, html.html2html_strict(true)) + marker_template = '' + html = "lalala
    --
    Max Mix" + result = "lalala#{marker_template}
    --
    Max Mix" + assert_equal(result, html.html2html_strict) + + marker_template = '' + html = "lalala
    +--
    Max Mix" + result = "lalala#{marker_template}
    --
    Max Mix" + assert_equal(result, html.html2html_strict) + + marker_template = '' + html = "lalala

    --

    Max Mix" + result = "lalala#{marker_template}

    --

    Max Mix" + assert_equal(result, html.html2html_strict) + + marker_template = '' + html = "lalala
    __
    Max Mix" + result = "lalala#{marker_template}
    __
    Max Mix" + assert_equal(result, html.html2html_strict) + + html = "den.

    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

    Hello,

    ich versuche an den Punkten" + result = "den.
    #{marker_template}
    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

    Hello,

    ich versuche an den Punkten" + assert_equal(result, html.html2html_strict) + + html = '

    Von: Martin Edenhofer via Zammad Helpdesk [mailto:support@zammad.com]
    Gesendet: ' + result = '

    Von: Martin Edenhofer via Zammad Helpdesk [mailto:support@example.com]
    Gesendet:

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

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

    +

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

    +
    ' + assert_equal(result, html.html2html_strict) + + html = '
    +
    +
    Von:       + Hotel <info@example.de> +
    An:       + ' + result = '

    Von: Hotel <info@example.de> +
    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:
    +
    +
    ' + assert_equal(result, html.html2html_strict) + + html = '
    some note

    ' + result = '
    +
    some note
    +
    +
    ' + assert_equal(result, html.html2html_strict) end diff --git a/test/unit/email_build_test.rb b/test/unit/email_build_test.rb index 5566ac2b9..df501b46c 100644 --- a/test/unit/email_build_test.rb +++ b/test/unit/email_build_test.rb @@ -59,7 +59,7 @@ class EmailBuildTest < ActiveSupport::TestCase data = parser.parse(mail.to_s) # check body - should = '> Welcome!
    >
    > Thank you for installing Zammad. äöüß
    >' + should = '
    > Welcome!
    >
    > Thank you for installing Zammad. äöüß
    >
    ' assert_equal(should, data[:body]) assert_equal('text/html', data[:content_type]) diff --git a/test/unit/email_parser_test.rb b/test/unit/email_parser_test.rb index 65fb78afe..193799c4c 100644 --- a/test/unit/email_parser_test.rb +++ b/test/unit/email_parser_test.rb @@ -7,14 +7,41 @@ class EmailParserTest < ActiveSupport::TestCase files = [ { data: IO.binread('test/fixtures/mail1.box'), - body_md5: '91abe9128a5dcba13f44c01015e229c4', + body_md5: '198ebda4c6f6c1ef71c1cb36ae7803bb', 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
    www.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
    +
    +
    ', }, }, { @@ -38,14 +65,79 @@ Old programmers never die. They just branch to a new address. }, { data: IO.binread('test/fixtures/mail3.box'), - body_md5: 'aedee83503c0e276fa22cd87d910ad9a', + body_md5: '56d5b0bc7444bd2ab38b28d3b07b48a7', 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.

    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.brain-scc.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.hinz@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", + 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

    +

     

    +

    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

    +
    +
    ', }, }, { @@ -93,31 +185,67 @@ Liebe Grüße! }, { data: IO.binread('test/fixtures/mail6.box'), - body_md5: 'a9416d1457835b10b03abcddbbb7a662', + body_md5: '0d34402258cb5de631159b0e2bc5346c', 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: 'c4ae9fbf716eb22e5b0b06cac8b64d7c', + body_md5: 'b435df94abbdd3e2c90928d8b156c4a5', 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]


    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", + 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]

    +
    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.binread('test/fixtures/mail8.box'), - body_md5: '28b76ef044d8db3b3ef196011314101b', + body_md5: 'fa130a3d6437ddb26f7bba80c8a3fdc8', attachments: [ { md5: 'c3ca4aab222eed8a148a716371b70129', @@ -130,12 +258,43 @@ Liebe Grüße! from_display_name: '', subject: 'could not rename: ZZZAAuto', content_type: 'text/html', - body: 'Gravierend?

    Mit freundlichen Grüßen

    Franz Schäfer
    Manager Information Systems

    Telefon  +49 000 000 8565
    christian.schaefer@example.com

    Example Stoff GmbH
    Fakultaet
    Düsseldorfer Landstraße395
    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', + body: '
    +
    +
    Gravierend?
    + +
    +Mit freundlichen Grüßen
    +
    +Franz Schäfer +
    +Manager Information Systems
    +
    +Telefon ++49 000 000 8565 +
    +christian.schaefer@example.com
    +
    +Example Stoff GmbH +
    +Fakultaet +
    +Düsseldorfer Landstraße 395 +
    +D-00000 Hof +
    +http://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.binread('test/fixtures/mail9.box'), - body_md5: '652ed115a40e4abb8232cf1817e89486', + body_md5: '8a028710b157c68ace0a5b2264c44da7', attachments: [ { md5: '9964263c167ab47f8ec59c48e57cb905', @@ -152,12 +311,16 @@ Liebe Grüße! 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: '68469244f1a9f3c3fddd46c19efcef7b', + body_md5: '3774c850f4e4064b86f66163a3453e47', attachments: [ { md5: '52d946fdf1a9304d0799cceb2fcf0e36', @@ -174,12 +337,23 @@ Liebe Grüße! 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
      -  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: Beschreibung: efqmLogo - European Foundation für Quality Management

    +

     

    +
    ', }, }, { data: IO.binread('test/fixtures/mail11.box'), - body_md5: '2b6c76ff8e6f6e4d2b77800a64321013', + body_md5: 'cb85100f3c7bef62a56bfd47f4e5f94d', attachments: [ { md5: '08660cd33ce8c64b95bcf0207ff6c4d6', @@ -193,12 +367,18 @@ Liebe Grüße! 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%3a%2f%2fweb2.cylex.de%2fadvent2012%3fb2b
    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%3a%2f%2fweb2.cylex.de%2fadvent2012%3fb2b
    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%3a%2f%2fweb2.cylex.de%2fadvent2012%3fb2b) 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

    E-Mail Kontakt
    Homepage (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-98/http%3a%2f%2fweb2.cylex.de%2fHomepage%2fHome.asp)
    Newsletter abbestellen (http://newsletters.cylex.de/ref/www.cylex.de/sid-105/uid-4134001/lid-99/http%3a%2f%2fnewsletters.cylex.de%2funsubscribe.aspx%3fuid%3d4134001%26d%3dwww.cylex.de%26e%3denjoy%40znuny.com%26sc%3d3009%26l%3dd)", + 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)
    ', }, }, { data: IO.binread('test/fixtures/mail12.box'), - body_md5: 'b1036b57033f4f3781f4bc695f8023cd', + body_md5: '24d66a30f572c1d742f9c54b3947ba2b', attachments: [ { md5: '46cf0f95ea0c8211cbb704e1959b9173', @@ -216,12 +396,65 @@ Liebe Grüße! subject: 'AW: Agenda [Ticket#11995]', to: 'example@znuny.com', content_type: 'text/html', - 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.", + 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.

    +
    ', }, }, { data: IO.binread('test/fixtures/mail13.box'), - body_md5: '58806e006b14b04a535784a5462d09b0', + body_md5: 'c3b62f742eb702910d0074e438b34c72', attachments: [ { md5: '29cc1679f8a44c72be6be7c1da4278ac', @@ -235,7 +468,7 @@ Liebe Grüße! subject: 'Antwort: Probleme ADB / Anlegen von Tickets [Ticket#111079]', to: 'q1@znuny.com', content_type: 'text/html', - body: 'JA', + body: '

    JA

    ', }, }, { @@ -285,7 +518,7 @@ Liebe Grüße! # spam email { data: IO.binread('test/fixtures/mail16.box'), - body_md5: '1ba72c0e2bccdd967a4041083b5fb2b3', + body_md5: 'bb2ab89172b556b37b6e2dce6161a54e', params: { from: nil, from_email: 'vipyimin@126.com', @@ -297,7 +530,7 @@ Liebe Grüße! # spam email { data: IO.binread('test/fixtures/mail17.box'), - body_md5: 'b2c2af190e7174577e964fad442d90e4', + body_md5: 'b8e8e004f57c6a9ed08f72109b53936b', params: { from: '"都琹" ', from_email: 'ghgbwum@185.com.cn', @@ -319,7 +552,7 @@ Liebe Grüße! }, { data: IO.binread('test/fixtures/mail19.box'), - body_md5: 'b9c5addcdc9ded331eb0c66df13b466b', + body_md5: 'daa6a58d0fb8a3c9fcc313dcff9160ad', params: { from: '"我" <>', from_email: '"=?GB2312?B?ztI=?=" <>', @@ -330,19 +563,21 @@ Liebe Grüße! }, { data: IO.binread('test/fixtures/mail20.box'), - body_md5: '0b982a2aaceee0b9af47882e681ad098', + body_md5: '93a960ddf917923817c6f509454dcc8c', 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

    óû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Ã⁄N fHGFVfE³ã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 mind Since 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≈R l©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 face Another 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.", + body: "________________________________________________________________________Yeah but even when they. Beth liî ed her neck as well
    +
    +
    óû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.
    çγ⇓Bhttp://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." }, }, { data: IO.binread('test/fixtures/mail21.box'), - body_md5: 'f7de1c4d9f266a85897b6e8b9403d62d', + body_md5: '896ac94b86af896c2ea99dd0c65f804c', params: { from: 'Viagra Super Force Online ', from_email: 'pharmacy_affordable1@ertelecom.ru', @@ -353,16 +588,15 @@ Liebe Grüße! }, { data: IO.binread('test/fixtures/mail22.box'), - body_md5: 'f17142bd7a519bb2b8791dba2539b2f7', + body_md5: '56223b1ea04a63269020cb64be7a70b0', 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&tilde;2113S173 &Icirc;1mEbb5N371L&piv;C7AlFnR1&diams;HG64B242&brvbar;M2242zk&Iota;N&rceil;7&rceil;TBN&ETH; T2xPI&ograve;gI2&Atilde;lL2&Otilde;ML&perp;22Sa&Psi;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.&dagger;p1C?L&thinsp;I?C&ensp;K?88&ensp;5 E R?EEOD ! (11115441111411?jmlfwnwe&ucwkiyyc)Chuckled adam leaned forward and le? charlie.
    Just then returned to believe it here.
    Freemont and pulling out several minutes.", + 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&tilde;2113S173 &Icirc;1mEbb5N371L&piv;C7AlFnR1&diams;HG64B242&brvbar;M2242zk&Iota;N&rceil;7&rceil;TBN&ETH; T2xPI&ograve;gI2&Atilde;lL2&Otilde;ML&perp;22Sa&Psi;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] &dagger;p1C?L&thinsp;I?C&ensp;K?88&ensp;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] &#104;&#116;&#116;&#112;&#58;&#47;&#47;&#1072;&#1086;&#1089;&#1082;&#46;&#1088;&#1092;?jmlfwnwe&ucwkiyyc' }, - }, { data: IO.binread('test/fixtures/mail23.box'), @@ -416,14 +650,14 @@ end }, { data: IO.binread('test/fixtures/mail26.box'), - body_md5: '869353c72cf4efc83536c577eac14c6f', + body_md5: '3987154962319ea14b835be93d1260b3', 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: [ { @@ -478,26 +712,29 @@ end }, { data: IO.binread('test/fixtures/mail29.box'), - body_md5: 'f44654bdf989aac0b9f9b26a895cb51e', + body_md5: '5545ece414ae1e48e64c9682cd636d75', 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 TeamViewer Online Shop (https://www.teamviewer.com/en/licensing/update.aspx?channel=D842CS9BF85-P1009645N-348785E76E) 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 here (http://www.teamviewer.com/en/company/unsubscribe.aspx?id=1009645&ident=E37682EAC65E8CA6FF36074907D8BC14) to unsubscribe from further e-mails.
    -----------------------------
    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", + 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 ourTeamViewer Online Shop (https://www.teamviewer.com/en/licensing/update.aspx?channel=d842cs9bf85-p1009645n-348785e76e) 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 clickhere (http://www.teamviewer.com/en/company/unsubscribe.aspx?id=1009645&ident=e37682eac65e8ca6ff36074907d8bc14) to unsubscribe from further e-mails.

    -----------------------------
    +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

    ' }, }, { data: IO.binread('test/fixtures/mail30.box'), - body_md5: 'dea322b2ba8dce5a54f6b11071faa02f', + body_md5: 'a22872c1bf5b246f18986bab23b5fcfa', 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
    mailto: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.

    +
    ' }, }, { @@ -536,14 +773,44 @@ end }, { data: IO.binread('test/fixtures/mail36.box'), - body_md5: '0f1adf1118d97e7abed03e3829a51a0b', + body_md5: 'be0ae19251440f2e8164fcf204c1c0e4', params: { from: 'Martin Smith ', from_email: 'm.Smith@example.com', from_display_name: 'Martin Smith', subject: 'Fw: Zugangsdaten', to: 'Martin Edenhofer ', - body: "--
    don't cry - work! (Rainald Goetz)

    Gesendet: Mittwoch, 03. Februar 2016 um 12:43 Uhr
    Von: "Martin Smith" <m.Smith@example.com>
    An: linuxhotel@zammad.com
    Betreff: Fw: Zugangsdaten

    --
    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”. :)", + body: "
    +
    +
    +
    --
    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
    +
    +
    +
    +
    +
    --
    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”. :)
    +
    +
    +
    +
    +
    +
    +
    +
    +
    " }, }, { @@ -580,7 +847,7 @@ end }, { data: IO.binread('test/fixtures/mail39.box'), - body_md5: 'b583c4705270fa73a28796b978e1e9ab', + body_md5: '92553234f01a918314f40973dfc2a303', params: { from: 'Martin Edenhofer ', from_email: 'me@example.com', @@ -588,7 +855,8 @@ end subject: 'test 1234 äöü sig test with attachment ', to: 'Martin Edenhofer ', cc: nil, - body: 'test 1234 äöü sig test with attachment', + body: "test 1234 äöü sig test with attachment
    ", + }, attachments: [ { @@ -664,7 +932,7 @@ end }, { data: IO.binread('test/fixtures/mail43.box'), - body_md5: '8780f8c73265cba2714acb2a38ad83fb', + body_md5: '6bb5b8fa67eb5061fa234fcb1e8e58bb', params: { from: 'Paula ', from_email: 'databases.en@example.com', @@ -672,7 +940,42 @@ end subject: 'Kontakte', to: 'info@example.ch', cc: nil, - body: "http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0bmFvY3B0LXlhbW9sc2Nhb3NnYy5lL3RpbXJlZi9lbS9ycnJuaWFpZXMsdGxnaWVpLGUzZHx4bnxlZWY%3D

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

    Hallo,
    • Sie suchen nach Möglichkeiten, den Umsatz Ihre Firma zu steigern?
    • Sie brauchen neue Geschäftskontakte?
    • Sie sind es leid, Kontaktdaten manuell zu erfassen?
    • Ihr Kontaktdatenanbieter ist zu teuer oder Sie sind mit seinen Dienstleistungen unzufrieden?
    • Sie möchten Ihre Kontaktinformationen gern effizienter auf dem neuesten Stand halten?


    Bei uns können Sie mit nur wenigen Clicks Geschäftskontakte verschiedener Länder erwerben.
    Dies ist eine schnelle und bequeme Methode, um Daten zu einem vernünftigen Preis zu erhalten.
    Alle Daten werden ständig aktualisiertm so dass Sie sich keine Sorgen machen müssen.

    http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0LnNzdXJobGZzZWVsdGEtLm10cmVzb2YvY2VtL2xpZ25pYWlnaV9hbC9zOG1lOXgyOTdzZW1hL2VlL2xwZWxheHB4Q18ubXhzfEhsODh8Y2M%3D     http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0bmFvY3B0LXlhbW9sc2Nhb3NnYy5lL3RpbXJlZi9lbS9ycnJuaWFpZXMsdGxnaWVpLGUzZHx4bnxlZWY%3D

    XLS-Muster herunterladen (http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0LnNzdXJobGZzZWVsdGEtLm10cmVzb2YvY2VtL2xpZ25pYWlnaV9hbC9zOG1lOXgyOTdzZW1hL2VlL2xwZWxheHB4Q18ubXhzfEhsODh8Y2M%3D)

    Datenbank bestellen (http://business-catalogs.example.com/ODtpbGs5MWIzbjUyYzExLTA4Yy06Mmg7N3AvL3R0bmFvY3B0LXlhbW9sc2Nhb3NnYy5lL3RpbXJlZi9lbS9ycnJuaWFpZXMsdGxnaWVpLGUzZHx4bnxlZWY%3D)

    Die Anmeldung ist absolut kostenlos und unverbindlich. Sie können die Kataloge gemäß Ihren eigenen Kriterien filtern und ein kostenloses Datenmuster bestellen, sobald Sie sich angemeldet haben.


    Wir haben Datenbanken der folgenden Länder:

    • Österreich
    • Belgien
    • Belarus
    • Schweiz
    • Tschechische Republik
    • Deutschland
    • Estland
    • Frankreich
    • Vereinigtes Königreich
    • Ungarn
    • Irland
    • Italien
    • Liechtenstein
    • Litauen
    • Luxemburg
    • Lettland
    • Niederlande
    • Polen
    • Russland
    • Slowenien
    • Slowakei
    • Ukraine


    Anwendungsmöglichkeiten für Geschäftskontakte

    • Newsletter senden - Senden von Werbung per E-Mail (besonders effizient).
    • Telemarketing - Telefonwerbung.
    • SMS-Marketing - Senden von Kurznachrichten.
    • Gezielte Werbung - Briefpostwerbung.
    • Marktforschung - Telefonumfragen zur Erforschung Ihrer Produkte oder Dienstleistungen.


    Sie können Abschnitte wählen (filtern) Empfänger gemäß Tätigkeitsbereichen und Standort der Firmen, um die Effizienz Ihrer Werbemaßnahmen zu erhöhen.

    Für jeden Kauf von 2016-11-05 23:59:59
    wir gewähren 30% Rabatt
    RABATTCODE: WZ2124DD

    Bestellen Sie online bei:

    company-catalogs.com

    Für weitere Informationen:

    E-Mail: databases.en@example.com
    Telefon: +370-52-071554 (languages: EN, PL, RU, LT)

    Unsubscribe from newsletter: Click here (http://business-catalogs.example.com/c2JudXVlcmNic2I4MWk7MTgxOTMyNS1jMmMtNzA%3D)", + 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,

    • Sie suchen nach Möglichkeiten, den Umsatz Ihre Firma zu steigern?
    • +
    • Sie brauchen neue Geschäftskontakte?
    • +
    • Sie sind es leid, Kontaktdaten manuell zu erfassen?
    • +
    • Ihr Kontaktdatenanbieter ist zu teuer oder Sie sind mit seinen Dienstleistungen unzufrieden?
    • +
    • Sie möchten Ihre Kontaktinformationen gern effizienter auf dem neuesten Stand halten?


    Bei uns können Sie mit nur wenigen Clicks Geschäftskontakte verschiedener Länder erwerben.

    Dies ist eineschnelle und bequeme Methode, um Daten zu einem vernünftigen Preis zu erhalten.

    Alle Daten werdenständig aktualisiertm so dass Sie sich keine Sorgen machen müssen.

     



    http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0lnnzdxjobgzzzwvsdgetlm10cmvzb2yvy2vtl2xpz25pywlnav9hbc9zog1loxgyotdzzw1hl2vll2xwzwxhehb4q18ubxhzfehsodh8y2m= http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxnawvplguzzhx4bnxlzwy=

    XLS-Muster herunterladen + (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0lnnzdxjobgzzzwvsdgetlm10cmvzb2yvy2vtl2xpz25pywlnav9hbc9zog1loxgyotdzzw1hl2vll2xwzwxhehb4q18ubxhzfehsodh8y2m=)

    Datenbank bestellen + (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxnawvplguzzhx4bnxlzwy=)



    Die Anmeldung ist absolut kostenlos und unverbindlich. Sie können die Kataloge gemäß Ihren eigenen Kriterien filtern und ein kostenloses Datenmuster bestellen, sobald Sie sich angemeldet haben.




    Wir haben Datenbanken der folgenden Länder:


  • Österreich (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nuqwvpmjz8fgex)
  • +
  • Belgien (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nfqmvpyzr8fgnh)
  • +
  • Belarus (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nzqmvpmgj8fdaw)
  • Schweiz (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3niq2vpyjf8fgy4)
  • +
  • Tschechische Republik (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3naq2vpmtz8fdc1)
  • +
  • Deutschland (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nfrgvpmdl8fdm1)
  • +
  • Estland (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nfrwvpytd8fgnm)
  • +
  • Frankreich (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nsrmvpngn8fdbl)
  • +
  • Vereinigtes Königreich (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3ncr2vpnjh8fda4)
  • +
  • Ungarn (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nvsgvpndb8fgqx)
  • +
  • Irland (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nfswvpndd8fgni)
  • Italien (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nuswvpotj8fdu3)
  • +
  • Liechtenstein (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3njtgvpntf8fdlk)
  • +
  • Litauen (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nutgvpn2r8fdgw)
  • +
  • Luxemburg (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nvtgvpnwz8fgzh)
  • +
  • Lettland (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nwtgvpzwz8fde2)
  • +
  • Niederlande (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nmtmvpotv8fdqw)
  • +
  • Polen (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nmugvpngv8fdbm)
  • +
  • Russland (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nvumvpztv8fgvk)
  • +
  • Slowenien (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nju2vpn2r8fgyz)
  • +
  • Slowakei (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nlu2vpnjz8fdq5)
  • +
  • Ukraine (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxny25plgusdxj0b3nbvwvpytd8fdnh)


  • Anwendungsmöglichkeiten für Geschäftskontakte

    • +Newsletter senden - Senden von Werbung per E-Mail (besonders effizient).
    • +
    • +Telemarketing - Telefonwerbung.
    • +
    • +SMS-Marketing - Senden von Kurznachrichten.
    • +
    • +Gezielte Werbung - Briefpostwerbung.
    • +
    • +Marktforschung - Telefonumfragen zur Erforschung Ihrer Produkte oder Dienstleistungen.

     

    Sie könnenAbschnitte wählen (filtern) Empfänger gemäß Tätigkeitsbereichen und Standort der Firmen, um die Effizienz Ihrer Werbemaßnahmen zu erhöhen.

     




    Für jeden Kauf von2016-11-05 23:59:59

    wir gewähren30% Rabatt

    RABATTCODE: WZ2124DD




    Bestellen Sie online bei:

    company-catalogs.com (http://business-catalogs.example.com/odtpbgs5mwizbjuyyzexlta4yy06mmg7n3avl3r0bmfvy3b0lxlhbw9sc2nhb3nnyy5ll3rpbxjlzi9lbs9ycnjuawfpzxmsdgxnawvplguzzhx4bnxlzwy=)

    Für weitere Informationen:

    E-Mail:databases.en@example.com
    Telefon: +370-52-071554 (languages: EN, PL, RU, LT)



    Unsubscribe from newsletter: Click here (http://business-catalogs.example.com/c2judxvlcmnic2i4mwk7mtgxotmyns1jmmmtnza=) +

    ' }, }, { diff --git a/test/unit/email_process_test.rb b/test/unit/email_process_test.rb index 4004a703c..181ca4fcd 100644 --- a/test/unit/email_process_test.rb +++ b/test/unit/email_process_test.rb @@ -221,7 +221,13 @@ Some Text", }, 1 => { content_type: 'text/html', - body: "_________________________________________________________________________________Please beth saw his head

    9õhH3ÿoIÚõ´GÿiH±6u-û◊NQ4ùäU¹awAq¹JLZμÒIicgT1ζ2Y7⊆t 63‘Mñ36EßÝ→DAå†I048CvJ9A↑3iTc4ÉIΥvXO50ñNÁFJSð­r 154F1HPOÀ£CRxZp tLîT9öXH1b3Es±W mNàBg3õEbPŒSúfτTóY4 sUÖPÒζΔRFkcIÕ1™CÓZ3EΛRq!Cass is good to ask what that
    86ËÏuÕC L I C K   H E R E28M (http://piufup.medicatingsafemart.ru)Luke had been thinking about that.
    Shannon said nothing in fact they. Matt placed the sofa with amy smiled. Since the past him with more. Maybe he checked the phone. Neither did her name only. Ryan then went inside matt.
    Maybe we can have anything you sure.
    á•XMYÍÅEE£ÓN°kP'dÄÅS4⌉d √p¨HΣ>jE4y4ACüûLì“vT∧4tHXÆX:
    x5VV\"¹tiçÂaaΦ3fg¦zèr«°haeJw n§Va879sÆ3j f¶ïlÞ9lo5F¾wν¶1 κψ›a9f4sLsL ùVo$v3x1¸nz.uȦ1H4s35Ô7 yoQCÄFMiMzda¯ZεlÝHNi¬cÚsù–ϖ DYhaã7Ns4Ö· n3dl1XÆo¯µ¶wpN↑ YQ7aé39s1qÓ QyL$fcÕ1ΝS5.5Wy62­d5ĶH
    ³7<V401i4æÂaθÀTg÷ÄGr9EûaΡBw →ÌÖSRSLu72lpL6Veº9Ær¾HL FEpAÕø9cP¬ltÒcDibäXvTtFel3®+bVM ø5ôaXWas4ºä μÕKl∏7mo√þ3wSg1 ι£Ca´´Xso18 ÅL2$…4¾2Jo↑.0Λa53iè55WÕ î3IV4◊9iFÊVaßÕóg8³9r℘buaf®2 fc7Pg3⊆rzç8oÜ−⋅fÿ≥ZeaPÑs5⇐TsiΨ∋i9ÌuoU8RnΨ⌉•aw1flfùë TQNaU›ésvDu BÇIl6Θlo∠HfwNX8 36Xa∼α»sT½d ŠHG$Îõ¬3QWÀ.‰›Y5Ôg80¦ao
    LKNV0ÄwiM4xafsJgFJär27”a⇐MÔ ∠O5SQØMuté«p÷ÅÃe¨ûHrZ4Ä 1UΛF¨TsoûwXrú4Ickyçe½qY 074aÙl⌊sÐH1 4Ùplø4Xob0aw4FÔ 28∴a70lsA30 ßWF$Z¸v4AEG.Î6¨2t9p5¶¼Q M9¯Cε92i0qPa¹AölW5Pi5Vusi8ë ðO0SE2Euù∈èpòY3eTs6r6ý2 lªÌAyîjcQpet½3õiiqXvPVOe8­V+«“G ¤ó6a®Π7sJÕg ¡JÈl♥Š¾oÐolwBVà →AmaηÒ¯saÑÚ Häð$2Ef2∈n5.Œ8H95¨19⊃ƒõ
    Up dylan in love and found herself. Sorry for beth smiled at some time Whatever you on one who looked. Except for another man and ready.
    ÚúeACíøN˵UT3L♠ICë9-BŒfAoÓCL5ΒÉLHοNE5∂7RScdGX­ªIpΣuCCw∨/D¤6A´vâS0d⊂TÇ'BHfóΔMåß7A63B:
    2UýV5¦Ueý¿×nRm2tæÓOoγ1øly¼Wi6pxnÀZ« câSa8ï¤sGï⊂ ΜJll1£„onbéw⌉ö1 vY8aΘmgs0Ú4 å¥G$·592KkU1®b0.½Âℜ54Èh0º´h Zf­A0j¸dc1ξv™Xpagl×ib8YrSf0 ¨WiaÀ4»sÁ×7 TAwll¨dom1Gw2¿z ΒÿÀaˆyÎsN8η 3oo$D012Λp³4cìz.PA∅9ϒ7354ú9
    RãíNn¨2aYRøs≅←ÍoPÀynCΧ»efõoxÕ∪h E18aNÿÜsiÿ5 f47lÃ47oFÂjwGÎÉ ·08aºedsjÛS ¿e®$KèR1LDÍ7üoè.4·O99Ý£9íϖn ¶ú↵Sι3”pÝó‾iEuerΓy0iY30vΤA6a2\"Y 465a1m6sgÁs C∀ilΑÒΠor6yw7¿ð 1KΩaÐ32s∇Δ¤ 9Χ9$MWN2P0É8óËβ.Ö∩S93íñ0RQ’
    Have anything but matty is taking care. Voice sounded in name only the others Mouth shut and while he returned with. Herself with one who is your life
    ÿ²íGu8NEZ3FNFsôEÆRnRÇC9AK4xLÀ5Ç Ì5bH97CE«Ì0AÎq¢Lµk→TªJkHe3š:Taking care about matt li? ed ryan. Knowing he should be there.
    Ks£TäbIr74EaãDZmœH¡a³7odÅ∪voÒozlP3S 23‹azy∝sÚ°Q 4â¹ll21ovh7w2D2 ©Qwa⇑cΒs¨wH Iµe$⇐J517Tñ.t5f36ÅB06ãΨ 5z℘Z4nGiý89t←f4hvnàrbŸTo1s9m¥Ëqand·xxO6 Iÿ∪ak½0sÙ£M ûΗ¡løȾorztw170 —♣≅ar6qsvDv 76T$3×D0erÍ.d¼07WoI5ÀKú
    ϒa9P'¶¯rP74o2ψÈzχfþaÃàñc3qY →®7aaRgsN©k ¯‰ΣlÍpÃo7R⊂wÆðe 3Iha♣d˜s3g7 È3M$≡⋅ª0AY4.Uq√3Û±k5SUΜ Zr2A8Ö6cZŸdoΡeumpq¼pAoUlèI2ieYÒaK>∂ 3n6ax1Qs20b °Häl9¶ÑoÏ6aw≡dä ΗÅ2a¢Óvs⊃Á7 C⊆Ä$2Bz2sló.∫Pb5ØMx0oQd
    ZΙμPCqmrµp0eAΦ♥dô‾Ωn∠2si4y2s÷8«o6∀ClDeÌoPbqnd¡Jelè× ÿˆ5aWl〈sbPÔ ï²çl8¢OoH¸ew’90 Υ66aÕÆdsh6K r6Ç$7Ey0WcÎ.£—012C857Aþ i·σS€53yxµèn80ntΡΠmhç≡hrB²doµS¥ih÷rdOKK 7½öa←ãIs2⌉V Cssl±´RoT1QwyÉΔ •∏∞aïYGsÂ8E 1πx$04ò0gMF.bTQ3Íx658ùς
    Maybe even though she followed. Does this mean you talking about. Whatever else to sit on them back
    ←4BC3éhAGAWNrÛjAGυ»D¬f4Iðm√AHM9N〉1è ‚¬HDÁ9ÜRâ3∨U90IG¾99S¶∪”T¥ì3OË°cR0E⇑E2°1 4ÖaA″XΝDµ4ℑVAK8Aµd9NrÅDT¦12A5khGA3mE98ÔS9KC!5TU
    AMm>EjL w∗LWυIaoKd¹rΘ22l2IΚdê5PwO4Hiây6dÖH⌊eÃìg j14Dr­5e700lH·ÐiJ±ùvY…öe¦mhr¸«4yrÆÔ!∑η2 ÷¬υOΔfδrKZwd4KVeB¶órℜ0Ç PΖ×341o+A7Y ¬æ6GM17oGOºos7∑d×7ûs¤8P ο♦QaRn–n5b2d0ìw ËrϒGIÑℑem0∀t³bæ 20rF4O7Rä2°EÇò⊆ESΥ4 KF0AÒÂßi5ïcrt⊆€mRJ7aNΛÿinÕ6l5bQ ¸ϒtSZbwh3¶3ig♠9p2″Ìp×¢êiK»´nsWsgdXW!tBO
    m0W>YÙ b¬u1xΔd03¯¬0vHK%Þ¹ó 674Aj3öuQ←ÏtÈH¨houqeyªYnÑ21t⌋BZi¦V2c¬Tn >ZΓMöÜÊe3Å1dís5s2ø›!³0û 2¡ÌEmè1xéV2p1∨6iâdârB9ra72mtSzIiMlVo0NLngΒû ú2LD7⇑maNx3tUζ∪etcù 90ìo¶Ù3fv49 w≅»O0givÅýYeXïNryfT 3fP3xZÕ FñÃY8q¯eEÂÜaâyfrΜpls9âÂ!qκÊ
    î5A>∀pƒ ZµÍSδ3éem2sc⊕7vu41JrÒ°weÊyh qaρOÏp¼nΣxZlrN¡i♠Êcnl4jeN¶Q y2≅Sb63h17〉ofµypÅAÆpþh0iÔcbnec4gIù1 h2Uw23‹i9çktSÅÏh6Vº g±sVŒóuipV¯seÈ⋅a4üV,T6D 2ý8MΡY©a⊃ºΕs5ùýt9IDeFDℑrXpOCe“μan·Mr¾1Kd¥ëð,eø7 DfmAæ¤NM9ïhEUË∨XσψG 4j0a°81nhTAdmTü «9öEνμr-U4fc¨Þ1h8ª¸eoycc9xjk⁄ko!ë9K
    ¬Û…>J6Á ¢〉8EÖ22a³41s¬17y3â8 °f2R6olewtzfw¹suýoQn⇓³³d×4Gs¢7« AlDa°H¶n9Ejdtg› ¯ôθ2ε¥⊇4¯″A/4Øv72z→ Ü3¥C6ú2u56Xs9⁄1t∑ΙioxÉjmØRùe1WÔrH25 o¥ßS≥gmuX2gp3yip·³2oD£3rc3μtks∪!sWK
    When she were there you here. Lott to need for amy said.
    Once more than ever since matt. Lott said turning o? ered. Tell you so matt kept going.
    Homegrown dandelions by herself into her lips. Such an excuse to stop thinking about. Leave us and be right.




    http://www.avast.com/
    ?????? ?????????????????? ???????????????? ???? ?????????????? ?? ???????????????????????? ???? ?????????????????? avast! Antivirus (http://www.avast.com/) ???????????? ??????????????.", + body: "_________________________________________________________________________________Please beth saw his head
    +
    +
    9õhH3ÿoIÚõ´GÿiH±6u-û◊NQ4ùäU¹awAq¹JLZμÒIicgT1ζ2Y7⊆t 63‘Mñ36EßÝ→DAå†I048CvJ9A↑3iTc4ÉIΥvXO50ñNÁFJSð­r 154F1HPOÀ£CRxZp tLîT9öXH1b3Es±W mNàBg3õEbPŒSúfτTóY4 sUÖPÒζΔRFkcIÕ1™CÓZ3EΛRq!Cass is good to ask what that
    86Ëhttp://piufup.medicatingsafemart.ruLuke had been thinking about that.
    Shannon said nothing in fact they. Matt placed the sofa with amy smiled. Since the past him with more. Maybe he checked the phone. Neither did her name only. Ryan then went inside matt.
    Maybe we can have anything you sure.
    á•XMYÍÅEE£ÓN°kP'dÄÅS4⌉d √p¨HΣ>jE4y4ACüûLì“vT∧4tHXÆX:
    x5VV\"¹tiçÂaaΦ3fg¦zèr«°haeJw n§Va879sÆ3j f¶ïlÞ9lo5F¾wν¶1 κψ›a9f4sLsL ùVo$v3x1¸nz.uȦ1H4s35Ô7 CÄFMiMzda¯ZεlÝHNi¬cÚsù–ϖ DYhaã7Ns4Ö· n3dl1XÆo¯µ¶wpN↑ YQ7aé39s1qÓ QyL$fcÕ1ΝS5.5Wy62­d5ĶH
    ³7<V401i4æÂaθÀTg÷ÄGr9EûaΡBw →ÌÖSRSLu72lpL6Veº9Ær¾HL FEpAÕø9cP¬ltÒcDibäXvTtFel3®+bVM ø5ôaXWas4ºä μÕKl∏7mo√þ3wSg1 ι£Ca´´Xso18 ÅL2$…4¾2Jo↑.0Λa53iè55WÕ V4◊9iFÊVaßÕóg8³9r℘buaf®2 fc7Pg3⊆rzç8oÜ−⋅fÿ≥ZeaPÑs5⇐TsiΨ∋i9ÌuoU8RnΨ⌉•aw1flfùë TQNaU›ésvDu BÇIl6Θlo∠HfwNX8 36Xa∼α»sT½d ŠHG$Îõ¬3QWÀ.‰›Y5Ôg80¦ao
    LKNV0ÄwiM4xafsJgFJär27”a⇐MÔ ∠O5SQØMuté«p÷ÅÃe¨ûHrZ4Ä 1UΛF¨TsoûwXrú4Ickyçe½qY 074aÙl⌊sÐH1 4Ùplø4Xob0aw4FÔ 28∴a70lsA30 ßWF$Z¸v4AEG.Î6¨2t9p5¶¼Q Cε92i0qPa¹AölW5Pi5Vusi8ë ðO0SE2Euù∈èpòY3eTs6r6ý2 lªÌAyîjcQpet½3õiiqXvPVOe8­V+«“G ¤ó6a®Π7sJÕg ¡JÈl♥Š¾oÐolwBVà →AmaηÒ¯saÑÚ Häð$2Ef2∈n5.Œ8H95¨19⊃ƒõ
    Up dylan in love and found herself. Sorry for beth smiled at some time
    ÚúeACíøN˵UT3L♠ICë9-BŒfAoÓCL5ΒÉLHοNE5∂7RScdGX­ªIpΣuCCw∨/D¤6A´vâS0d⊂TÇ'BHfóΔMåß7A63B:
    2UýV5¦Ueý¿×nRm2tæÓOoγ1øly¼Wi6pxnÀZ« câSa8ï¤sGï⊂ ΜJll1£„onbéw⌉ö1 vY8aΘmgs0Ú4 å¥G$·592KkU1®b0.½Âℜ54Èh0º´h A0j¸dc1ξv™Xpagl×ib8YrSf0 ¨WiaÀ4»sÁ×7 TAwll¨dom1Gw2¿z ΒÿÀaˆyÎsN8η 3oo$D012Λp³4cìz.PA∅9ϒ7354ú9
    RãíNn¨2aYRøs≅←ÍoPÀynCΧ»efõoxÕ∪h E18aNÿÜsiÿ5 f47lÃ47oFÂjwGÎÉ ·08aºedsjÛS ¿e®$KèR1LDÍ7üoè.4·O99Ý£9íϖn Sι3”pÝó‾iEuerΓy0iY30vΤA6a2\"Y 465a1m6sgÁs C∀ilΑÒΠor6yw7¿ð 1KΩaÐ32s∇Δ¤ 9Χ9$MWN2P0É8óËβ.Ö∩S93íñ0RQ’
    Have anything but matty is taking care. Voice sounded in name only the others
    ÿ²íGu8NEZ3FNFsôEÆRnRÇC9AK4xLÀ5Ç Ì5bH97CE«Ì0AÎq¢Lµk→TªJkHe3š:Taking care about matt li? ed ryan. Knowing he should be there.
    Ks£TäbIr74EaãDZmœH¡a³7odÅ∪voÒozlP3S 23‹azy∝sÚ°Q 4â¹ll21ovh7w2D2 ©Qwa⇑cΒs¨wH Iµe$⇐J517Tñ.t5f36ÅB06ãΨ Z4nGiý89t←f4hvnàrbŸTo1s9m¥Ëqand·xxO6 Iÿ∪ak½0sÙ£M ûΗ¡løȾorztw170 —♣≅ar6qsvDv 76T$3×D0erÍ.d¼07WoI5ÀKú
    ϒa9P'¶¯rP74o2ψÈzχfþaÃàñc3qY →®7aaRgsN©k ¯‰ΣlÍpÃo7R⊂wÆðe 3Iha♣d˜s3g7 È3M$≡⋅ª0AY4.Uq√3Û±k5SUΜ A8Ö6cZŸdoΡeumpq¼pAoUlèI2ieYÒaK>∂ 3n6ax1Qs20b °Häl9¶ÑoÏ6aw≡dä ΗÅ2a¢Óvs⊃Á7 C⊆Ä$2Bz2sló.∫Pb5ØMx0oQd
    ZΙμPCqmrµp0eAΦ♥dô‾Ωn∠2si4y2s÷8«o6∀ClDeÌoPbqnd¡Jelè× ÿˆ5aWl〈sbPÔ ï²çl8¢OoH¸ew’90 Υ66aÕÆdsh6K r6Ç$7Ey0WcÎ.£—012C857Aþ S€53yxµèn80ntΡΠmhç≡hrB²doµS¥ih÷rdOKK 7½öa←ãIs2⌉V Cssl±´RoT1QwyÉΔ •∏∞aïYGsÂ8E 1πx$04ò0gMF.bTQ3Íx658ùς
    Maybe even though she followed.
    ←4BC3éhAGAWNrÛjAGυ»D¬f4Iðm√AHM9N〉1è ‚¬HDÁ9ÜRâ3∨U90IG¾99S¶∪”T¥ì3OË°cR0E⇑E2°1 4ÖaA″XΝDµ4ℑVAK8Aµd9NrÅDT¦12A5khGA3mE98ÔS9KC!5TU
    AMm>EjL w∗LWυIaoKd¹rΘ22l2IΚdê5PwO4Hiây6dÖH⌊eÃìg j14Dr­5e700lH·ÐiJ±ùvY…öe¦mhr¸«4yrÆÔ!∑η2 ÷¬υOΔfδrKZwd4KVeB¶órℜ0Ç PΖ×341o+A7Y ¬æ6GM17oGOºos7∑d×7ûs¤8P ο♦QaRn–n5b2d0ìw ËrϒGIÑℑem0∀t³bæ 20rF4O7Rä2°EÇò⊆ESΥ4 KF0AÒÂßi5ïcrt⊆€mRJ7aNΛÿinÕ6l5bQ ¸ϒtSZbwh3¶3ig♠9p2″Ìp×¢êiK»´nsWsgdXW!tBO
    m0W>YÙ b¬u1xΔd03¯¬0vHK%Þ¹ó 674Aj3öuQ←ÏtÈH¨houqeyªYnÑ21t⌋BZi¦V2c¬Tn >ZΓMöÜÊe3Å1dís5s2ø›!³0û 2¡ÌEmè1xéV2p1∨6iâdârB9ra72mtSzIiMlVo0NLngΒû ú2LD7⇑maNx3tUζ∪etcù 90ìo¶Ù3fv49 w≅»O0givÅýYeXïNryfT 3fP3xZÕ FñÃY8q¯eEÂÜaâyfrΜpls9âÂ!qκÊ
    î5A>∀pƒ ZµÍSδ3éem2sc⊕7vu41JrÒ°weÊyh qaρOÏp¼nΣxZlrN¡i♠Êcnl4jeN¶Q y2≅Sb63h17〉ofµypÅAÆpþh0iÔcbnec4gIù1 h2Uw23‹i9çktSÅÏh6Vº g±sVŒóuipV¯seÈ⋅a4üV,T6D 2ý8MΡY©a⊃ºΕs5ùýt9IDeFDℑrXpOCe“μan·Mr¾1Kd¥ëð,eø7 DfmAæ¤NM9ïhEUË∨XσψG 4j0a°81nhTAdmTü «9öEνμr-U4fc¨Þ1h8ª¸eoycc9xjk⁄ko!ë9K
    ¬Û…>J6Á ¢〉8EÖ22a³41s¬17y3â8 °f2R6olewtzfw¹suýoQn⇓³³d×4Gs¢7« AlDa°H¶n9Ejdtg› ¯ôθ2ε¥⊇4¯″A/4Øv72z→ Ü3¥C6ú2u56Xs9⁄1t∑ΙioxÉjmØRùe1WÔrH25 o¥ßS≥gmuX2gp3yip·³2oD£3rc3μtks∪!sWK

    When she were there you here. Lott to need for amy said.
    Once more than ever since matt. Lott said turning o? ered. Tell you so matt kept going.
    Homegrown dandelions by herself into her lips. Such an excuse to stop thinking about. Leave us and be right.

    +
    +
    + + (http://www.avast.com/) ?????? ?????????????????? ???????????????? ???? ?????????????? ?? ???????????????????????? ???? ?????????????????? avast! Antivirus (http://www.avast.com/) ???????????? ??????????????.

    ", sender: 'Customer', type: 'email', internal: false, @@ -238,7 +244,7 @@ Some Text", }, 1 => { content_type: 'text/html', - 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&tilde;2113S173 &Icirc;1mEbb5N371L&piv;C7AlFnR1&diams;HG64B242&brvbar;M2242zk&Iota;N&rceil;7&rceil;TBN&ETH; T2xPI&ograve;gI2&Atilde;lL2&Otilde;ML&perp;22Sa&Psi;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.&dagger;p1C?L&thinsp;I?C&ensp;K?88&ensp;5 E R?EEOD ! (11115441111411?jmlfwnwe&ucwkiyyc)Chuckled adam leaned forward and le? charlie.
    Just then returned to believe it here.
    Freemont and pulling out several minutes.", + 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&tilde;2113S173 &Icirc;1mEbb5N371L&piv;C7AlFnR1&diams;HG64B242&brvbar;M2242zk&Iota;N&rceil;7&rceil;TBN&ETH; T2xPI&ograve;gI2&Atilde;lL2&Otilde;ML&perp;22Sa&Psi;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] &dagger;p1C?L&thinsp;I?C&ensp;K?88&ensp;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] &#104;&#116;&#116;&#112;&#58;&#47;&#47;&#1072;&#1086;&#1089;&#1082;&#46;&#1088;&#1092;?jmlfwnwe&ucwkiyyc', sender: 'Customer', type: 'email', internal: false, diff --git a/test/unit/html_sanitizer_test.rb b/test/unit/html_sanitizer_test.rb index 003d5eb4a..f3344c47e 100644 --- a/test/unit/html_sanitizer_test.rb +++ b/test/unit/html_sanitizer_test.rb @@ -48,16 +48,21 @@ class HtmlSanitizerTest < ActiveSupport::TestCase assert_equal(HtmlSanitizer.strict('
    '), '
    ') assert_equal(HtmlSanitizer.strict('test'), 'test') assert_equal(HtmlSanitizer.strict('test'), 'test') + assert_equal(HtmlSanitizer.strict('test', true), 'https://some/path (test)') assert_equal(HtmlSanitizer.strict(''), '') assert_equal(HtmlSanitizer.strict(''), '') assert_equal(HtmlSanitizer.strict(' +ADw-SCRIPT+AD4-alert(\'XSS\');+ADw-/SCRIPT+AD4-'), ' +ADw-SCRIPT+AD4-alert(\'XSS\');+ADw-/SCRIPT+AD4-') assert_equal(HtmlSanitizer.strict(''), '') assert_equal(HtmlSanitizer.strict('XSS'), 'XSS') +tt p://6 6.000146.0x7.147/">XSS'), 'XSS') + assert_equal(HtmlSanitizer.strict('XSS', true), 'http://66.000146.0x7.147/ (XSS)') assert_equal(HtmlSanitizer.strict('XSS'), 'XSS') + assert_equal(HtmlSanitizer.strict('XSS', true), '//www.google.com/ (XSS)') assert_equal(HtmlSanitizer.strict('
    '), 'X') assert_equal(HtmlSanitizer.strict('CLICKME'), 'CLICKME') assert_equal(HtmlSanitizer.strict('CLICKME'), 'CLICKME') + assert_equal(HtmlSanitizer.strict('CLICKME', true), ' (CLICKME)') assert_equal(HtmlSanitizer.strict(''), '') assert_equal(HtmlSanitizer.strict(''), '') assert_equal(HtmlSanitizer.strict('><image xlink:href="'), '') @@ -66,8 +71,10 @@ tt p://6 6.000146.0x7.147/">XSS'), ''), '') assert_equal(HtmlSanitizer.strict(''), '') assert_equal(HtmlSanitizer.strict('XXX'), 'XXX') + assert_equal(HtmlSanitizer.strict('XXX', true), ' (XXX)') assert_equal(HtmlSanitizer.strict(''), 'alert(1)') assert_equal(HtmlSanitizer.strict(''), '') + assert_equal(HtmlSanitizer.strict('', true), 'http://example.com ()') end diff --git a/test/unit/ticket_xss_test.rb b/test/unit/ticket_xss_test.rb index d70b8d71a..f550b17a9 100644 --- a/test/unit/ticket_xss_test.rb +++ b/test/unit/ticket_xss_test.rb @@ -65,7 +65,7 @@ class TicketXssTest < ActiveSupport::TestCase created_by_id: 1, ) assert_equal("please tell me this doesn't work:
ada -
+
LINKaaABC
", article3.body, 'article3.body verify - inbound') article4 = Ticket::Article.create(