From be5e69a7dccaa6c76408f9b7883980bd79bdba28 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 11:00:36 +0000 Subject: First skeletal version of separate mail handling library. --- lib/mail_handler/backends/mail_backend.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 lib/mail_handler/backends/mail_backend.rb (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb new file mode 100644 index 000000000..ad1322923 --- /dev/null +++ b/lib/mail_handler/backends/mail_backend.rb @@ -0,0 +1,12 @@ +require 'mail' + +module MailHandler + module Backends + module MailBackend + + def backend() + 'Mail' + end + end + end +end \ No newline at end of file -- cgit v1.2.3 From faa38d57e2eb87c288741e9cba5550e9532282ca Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 11:38:32 +0000 Subject: Add methods for both backends to generate a mail object from raw data. --- lib/mail_handler/backends/mail_backend.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb index ad1322923..f7dbb7624 100644 --- a/lib/mail_handler/backends/mail_backend.rb +++ b/lib/mail_handler/backends/mail_backend.rb @@ -7,6 +7,11 @@ module MailHandler def backend() 'Mail' end + + def mail_from_raw_email(data) + Mail.new(data) + end + end end end \ No newline at end of file -- cgit v1.2.3 From 8834f67db8cd94a0285dd1bb4702db834e08e995 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 12:48:16 +0000 Subject: Use mail handler for making mail objects of attached emails. Add a flag to use base64 decoding or not. Note that currently the Mail-based backend doesn't use it - I think that eventually we'll want to have the mail handler wrap the mail object with it's own interface. --- lib/mail_handler/backends/mail_backend.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb index f7dbb7624..6a5fff13f 100644 --- a/lib/mail_handler/backends/mail_backend.rb +++ b/lib/mail_handler/backends/mail_backend.rb @@ -8,7 +8,8 @@ module MailHandler 'Mail' end - def mail_from_raw_email(data) + # Note that the decode flag is not yet used + def mail_from_raw_email(data, decode=true) Mail.new(data) end -- cgit v1.2.3 From 388c75bfbd18fcaf273d95c21dc132ad19f0cefe Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 16:12:23 +0000 Subject: Move handling of TNEF mail attachments to mail handler --- lib/mail_handler/backends/mail_backend.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb index 6a5fff13f..a6f2a6a44 100644 --- a/lib/mail_handler/backends/mail_backend.rb +++ b/lib/mail_handler/backends/mail_backend.rb @@ -13,6 +13,15 @@ module MailHandler Mail.new(data) end + # Extracts all attachments from the given TNEF file as a Mail object + def mail_from_tnef(content) + main = Mail.new + tnef_attachments(content).each do |attachment| + main.add_file(attachment) + end + main.ready_to_send! + main + end end end end \ No newline at end of file -- cgit v1.2.3 From daf42a44bf019128374f3cc636d95b8308a01f2e Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 16:39:46 +0000 Subject: Move _get_file_part_name to mail handler. --- lib/mail_handler/backends/mail_backend.rb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb index a6f2a6a44..fd2fa627f 100644 --- a/lib/mail_handler/backends/mail_backend.rb +++ b/lib/mail_handler/backends/mail_backend.rb @@ -22,6 +22,13 @@ module MailHandler main.ready_to_send! main end + + # Return a copy of the file name for the mail part + def get_part_file_name(mail_part) + part_file_name = mail_part.filename + part_file_name.nil? ? nil : part_file_name.dup + end + end end end \ No newline at end of file -- cgit v1.2.3 From f5ced2133cd1a66e18b225208fa96f4f36a20889 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 16:56:06 +0000 Subject: Move address_from_name_and_email to mail handler. --- lib/mail_handler/backends/mail_backend.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb index fd2fa627f..bc4bf564c 100644 --- a/lib/mail_handler/backends/mail_backend.rb +++ b/lib/mail_handler/backends/mail_backend.rb @@ -29,6 +29,19 @@ module MailHandler part_file_name.nil? ? nil : part_file_name.dup end + # Format + def address_from_name_and_email(name, email) + if !MySociety::Validate.is_valid_email(email) + raise "invalid email " + email + " passed to address_from_name_and_email" + end + if name.nil? + return Mail::Address.new(email) + end + address = Mail::Address.new + address.display_name = name + address.address = email + address.to_s + end end end end \ No newline at end of file -- cgit v1.2.3 From 125ca970ad4e2b5e424265c632ae31c6dde62da7 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 15 Nov 2012 17:25:11 +0000 Subject: Wrap address parsing in a address_from_string method in the mail handler. --- lib/mail_handler/backends/mail_backend.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/mail_handler/backends/mail_backend.rb') diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb index bc4bf564c..0e198adf0 100644 --- a/lib/mail_handler/backends/mail_backend.rb +++ b/lib/mail_handler/backends/mail_backend.rb @@ -42,6 +42,10 @@ module MailHandler address.address = email address.to_s end + + def address_from_string(string) + Mail::Address.new(string).address + end end end end \ No newline at end of file -- cgit v1.2.3