mail 1.2.5 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of mail might be problematic. Click here for more details.
- data/CHANGELOG.rdoc +11 -1
- data/README.rdoc +27 -0
- data/Rakefile +32 -7
- data/TODO.rdoc +19 -0
- data/lib/mail/configuration.rb +7 -0
- data/lib/mail/elements/address_list.rb +4 -0
- data/lib/mail/encodings/encodings.rb +8 -1
- data/lib/mail/fields/common/common_address.rb +2 -1
- data/lib/mail/network/delivery_methods/sendmail.rb +10 -6
- data/lib/mail/network/delivery_methods/test_mailer.rb +6 -0
- data/lib/mail/version.rb +1 -1
- data/lib/tasks/corpus.rake +124 -0
- data/lib/tasks/treetop.rake +10 -0
- metadata +132 -133
- data/.gitignore +0 -4
- data/Manifest.txt +0 -113
data/CHANGELOG.rdoc
CHANGED
@@ -1,13 +1,23 @@
|
|
1
|
+
== Wed Nov 18 04:26:21 UTC 2009 Mikel Lindsaar <raasdnil@gmail.com>
|
2
|
+
|
3
|
+
* Changed Encodings.param_encode(string) so it intelligently encodes and quotes needed
|
4
|
+
items and leaves plain, no special char, US-ASCII alone unquoted.
|
5
|
+
|
6
|
+
== Sat Nov 14 08:20:21 UTC 2009 Mikel Lindsaar <raasdnil@gmail.com>
|
7
|
+
|
8
|
+
* Resolved Issue #10 - empty/nil cc/bcc field causes exception (Mail::Field::ParseError)
|
9
|
+
|
1
10
|
== Fri Nov 13 00:31:04 UTC 2009 Mikel Lindsaar <raasdnil@gmail.com>
|
2
11
|
|
3
12
|
* Hacked and mutilated the network section, made it easier to extend out with other
|
4
13
|
delivery and retriever methods. API changed SLIGHTLY with this. Please check the
|
5
14
|
readme
|
15
|
+
* Resolved Issue #8 - Mail::SMTP now delivers to all mail.destinations
|
6
16
|
* Version bump to 1.2.5
|
7
17
|
|
8
18
|
== Thu Nov 12 02:58:01 UTC 2009 Mikel Lindsaar <raasdnil@gmail.com>
|
9
19
|
|
10
|
-
* Resolved Issue #
|
20
|
+
* Resolved Issue #5 - Message ID not handling multiple periods in left hand side
|
11
21
|
* Resolved Issue #6 - Ordering of add_file and body items causes invalid emails
|
12
22
|
|
13
23
|
== Tue Nov 10 08:15:14 UTC 2009 Mikel Lindsaar <raasdnil@gmail.com>
|
data/README.rdoc
CHANGED
@@ -445,6 +445,33 @@ Of course... Mail will round trip an attachment as well
|
|
445
445
|
@round_tripped_mail.attachments.length #=> 1
|
446
446
|
@round_tripped_mail.attachments.first.filename #=> 'myfile.pdf'
|
447
447
|
|
448
|
+
== Using Mail with Testing or Spec'ing Libraries
|
449
|
+
|
450
|
+
If mail is part of your system, you'll need a way to test it without actually
|
451
|
+
sending emails, the TestMailer can do this for you.
|
452
|
+
|
453
|
+
require 'mail'
|
454
|
+
=> true
|
455
|
+
Mail.defaults do
|
456
|
+
delivery_method(:test)
|
457
|
+
end
|
458
|
+
=> #<Mail::Configuration:0x19345a8 @delivery_method=Mail::TestMailer>
|
459
|
+
Mail.deliveries
|
460
|
+
=> []
|
461
|
+
Mail.deliver do
|
462
|
+
to 'mikel@me.com'
|
463
|
+
from 'you@you.com'
|
464
|
+
subject 'testing'
|
465
|
+
body 'hello'
|
466
|
+
end
|
467
|
+
=> #<Mail::Message:0x19284ec ...
|
468
|
+
Mail.deliveries.length
|
469
|
+
=> 1
|
470
|
+
Mail.deliveries.first
|
471
|
+
=> #<Mail::Message:0x19284ec ...
|
472
|
+
Mail.deliveries.clear
|
473
|
+
=> []
|
474
|
+
|
448
475
|
== Excerpts from TREC Spam Corpus 2005
|
449
476
|
|
450
477
|
The spec fixture files in spec/fixtures/emails/from_trec_2005 are from the
|
data/Rakefile
CHANGED
@@ -1,30 +1,55 @@
|
|
1
|
-
require 'rake'
|
2
1
|
require 'rake/rdoctask'
|
2
|
+
require 'rake/gempackagetask'
|
3
3
|
require 'rake/testtask'
|
4
|
-
require 'rubygems'
|
5
4
|
require 'spec/rake/spectask'
|
6
5
|
require 'cucumber/rake/task'
|
6
|
+
require 'bundler'
|
7
7
|
|
8
|
-
|
8
|
+
spec = Gem::Specification.new do |s|
|
9
|
+
s.name = "mail"
|
10
|
+
s.version = "1.2.6"
|
11
|
+
s.author = "Mike Lindsaar"
|
12
|
+
s.email = "raasdnil@gmail.com"
|
13
|
+
s.homepage = "http://github.com/mikel/mail"
|
14
|
+
s.description = "A really Ruby Mail handler."
|
15
|
+
s.summary = "Mail provides a nice Ruby DSL for making, sending and reading emails."
|
16
|
+
|
17
|
+
s.platform = Gem::Platform::RUBY
|
18
|
+
s.has_rdoc = true
|
19
|
+
s.extra_rdoc_files = ["README.rdoc", "CHANGELOG.rdoc", "TODO.rdoc"]
|
20
|
+
|
21
|
+
manifest = Bundler::Environment.load(File.dirname(__FILE__) + '/Gemfile')
|
22
|
+
manifest.dependencies.each do |dep|
|
23
|
+
next if dep.only && dep.only.include?("test")
|
24
|
+
s.add_dependency(dep.name, dep.version)
|
25
|
+
end
|
26
|
+
|
27
|
+
s.require_path = 'lib'
|
28
|
+
s.files = %w(README.rdoc Rakefile TODO.rdoc) + Dir.glob("lib/**/*")
|
29
|
+
end
|
30
|
+
|
31
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
32
|
+
pkg.gem_spec = spec
|
33
|
+
end
|
9
34
|
|
35
|
+
task :default => :spec
|
10
36
|
Cucumber::Rake::Task.new do |t|
|
11
37
|
t.cucumber_opts = "spec/features --format pretty"
|
12
38
|
end
|
13
39
|
|
14
40
|
Spec::Rake::SpecTask.new(:rcov) do |t|
|
15
|
-
|
16
|
-
t.spec_files = FileList['**/test/**/tc_*.rb', '**/spec/**/*_spec.rb']
|
41
|
+
t.spec_files = FileList['test/**/tc_*.rb', 'spec/**/*_spec.rb']
|
17
42
|
t.rcov = true
|
18
43
|
t.rcov_opts = t.rcov_opts << ['--exclude', '/Library,/opt,/System']
|
19
44
|
end
|
20
45
|
|
21
46
|
Spec::Rake::SpecTask.new(:spec) do |t|
|
22
|
-
t.spec_files = FileList['
|
47
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
23
48
|
end
|
24
49
|
|
25
50
|
Rake::TestTask.new(:test) do |t|
|
26
51
|
t.libs << 'test'
|
27
|
-
t.pattern = '
|
52
|
+
t.pattern = 'test/**/tc_*.rb'
|
28
53
|
t.verbose = true
|
29
54
|
t.warning = false
|
30
55
|
end
|
data/TODO.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
== Not really in any order:
|
2
|
+
|
3
|
+
* Make body, part, field, header, message all responding correctly to :encoded
|
4
|
+
and :decoded messages. And remove ":to_s" as a method on these
|
5
|
+
classes. Encoded needs to return the field, encoded, ready to send in the
|
6
|
+
mail system, that is, US-ASCII. Decoded needs to return the field decoded ready to
|
7
|
+
view. :to_s is (unfortunately) ambiguous in this case. Maybe return a warning
|
8
|
+
with :to_s and say "please use encoded or decoded instead" or :to_s returns
|
9
|
+
"Showing you the encoded view by default, call :decoded to see the decoded view"
|
10
|
+
|
11
|
+
* Refactor out the multibyte and string handling. Make ActiveSupport a dependancy
|
12
|
+
|
13
|
+
* Clean up the relationship between message, parts and bodies. Need to make sure
|
14
|
+
once parsed, that a body knows what encoding it is, for example.
|
15
|
+
|
16
|
+
* Cleanup the treetop parsers......... do I _really_ need that many entrance files?
|
17
|
+
|
18
|
+
* Simplify the relationship of Headers and Fields. Doing too much of the Field work
|
19
|
+
in the Header class on instantiating fields. Header should just say "Field, do it!"
|
data/lib/mail/configuration.rb
CHANGED
@@ -75,6 +75,13 @@ module Mail
|
|
75
75
|
end
|
76
76
|
set_settings(Mail::POP3, host_array, &block)
|
77
77
|
end
|
78
|
+
|
79
|
+
def sendmail(sendmail_path = nil)
|
80
|
+
delivery_method :sendmail
|
81
|
+
set_settings(Mail::Sendmail) do
|
82
|
+
path sendmail_path
|
83
|
+
end
|
84
|
+
end
|
78
85
|
|
79
86
|
# Allows you to define the retriever method for mail, defaults to POP3
|
80
87
|
#
|
@@ -18,6 +18,10 @@ module Mail
|
|
18
18
|
# a.addresses #=> [#<Mail::Address:14943130 Address: |ada@test.lindsaar.net...
|
19
19
|
# a.group_names #=> ["My Group"]
|
20
20
|
def initialize(string)
|
21
|
+
if string.blank?
|
22
|
+
@address_nodes = []
|
23
|
+
return self
|
24
|
+
end
|
21
25
|
parser = Mail::AddressListsParser.new
|
22
26
|
if tree = parser.parse(string)
|
23
27
|
@address_nodes = tree.addresses
|
@@ -41,7 +41,14 @@ module Mail
|
|
41
41
|
#
|
42
42
|
# Mail::Encodings.param_encode("This is fun") #=> "us-ascii'en'This%20is%20fun"
|
43
43
|
def Encodings.param_encode(str)
|
44
|
-
|
44
|
+
case
|
45
|
+
when str.ascii_only? && str =~ TOKEN_UNSAFE
|
46
|
+
%Q{"#{str}"}
|
47
|
+
when str.ascii_only?
|
48
|
+
str
|
49
|
+
else
|
50
|
+
RubyVer.param_encode(str)
|
51
|
+
end
|
45
52
|
end
|
46
53
|
|
47
54
|
# Decodes a parameter value using URI Escaping.
|
@@ -47,7 +47,7 @@ module Mail
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def do_encode(field_name)
|
50
|
-
return ''
|
50
|
+
return '' if value.blank?
|
51
51
|
address_array = tree.addresses.reject { |a| group_addresses.include?(a.encoded) }.compact.map { |a| a.encoded }
|
52
52
|
address_text = address_array.join(", \r\n\t")
|
53
53
|
group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.encoded }.join(", \r\n\t")};" }
|
@@ -57,6 +57,7 @@ module Mail
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def do_decode
|
60
|
+
return nil if value.blank?
|
60
61
|
address_array = tree.addresses.reject { |a| group_addresses.include?(a.decoded) }.map { |a| a.decoded }
|
61
62
|
address_text = address_array.join(", ")
|
62
63
|
group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.decoded }.join(", ")};" }
|
@@ -1,18 +1,22 @@
|
|
1
1
|
module Mail
|
2
2
|
class Sendmail
|
3
3
|
include Singleton
|
4
|
-
|
4
|
+
|
5
5
|
def settings(&block)
|
6
6
|
if block_given?
|
7
7
|
instance_eval(&block)
|
8
8
|
end
|
9
9
|
self
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
|
+
def path(value = nil)
|
13
|
+
value ? @path = value : @path
|
14
|
+
end
|
15
|
+
|
12
16
|
def Sendmail.deliver!(mail)
|
13
|
-
#
|
14
|
-
|
17
|
+
IO.popen("#{Mail.defaults.sendmail.path} #{mail.destinations.join(" ")}", "w+") do |io|
|
18
|
+
io.puts mail.to_s
|
19
|
+
end
|
15
20
|
end
|
16
|
-
|
17
21
|
end
|
18
|
-
end
|
22
|
+
end
|
@@ -2,6 +2,12 @@ module Mail
|
|
2
2
|
class TestMailer
|
3
3
|
include Singleton
|
4
4
|
|
5
|
+
# The Test Mailer provides a mail delivery method that does not hit
|
6
|
+
# your network or mail agent, in this way you can send all the emails
|
7
|
+
# you want and they will just be appended to Mail.deliveries
|
8
|
+
#
|
9
|
+
# See the README under Using Mail with Testing or Spec'ing Libraries
|
10
|
+
# for more information.
|
5
11
|
def TestMailer.deliver!(mail)
|
6
12
|
Mail.deliveries << mail
|
7
13
|
end
|
data/lib/mail/version.rb
CHANGED
@@ -0,0 +1,124 @@
|
|
1
|
+
namespace :corpus do
|
2
|
+
|
3
|
+
task :load_mail do
|
4
|
+
require 'lib/mail'
|
5
|
+
end
|
6
|
+
|
7
|
+
# Used to run parsing against an arbitrary corpus of email.
|
8
|
+
# For example: http://plg.uwaterloo.ca/~gvcormac/treccorpus/
|
9
|
+
desc "Provide a LOCATION=/some/dir to verify parsing in bulk"
|
10
|
+
task :verify_all => :load_mail do
|
11
|
+
|
12
|
+
root_of_corpus = ENV['LOCATION']
|
13
|
+
@save_failures_to = ENV['SAVE_TO']
|
14
|
+
@failed_emails = []
|
15
|
+
@checked_count = 0
|
16
|
+
|
17
|
+
if root_of_corpus
|
18
|
+
root_of_corpus = File.expand_path(root_of_corpus)
|
19
|
+
if not File.directory?(root_of_corpus)
|
20
|
+
raise "\n\tPath '#{root_of_corpus}' is not a directory.\n\n"
|
21
|
+
end
|
22
|
+
else
|
23
|
+
raise "\n\tSupply path to corpus: LOCATION=/path/to/corpus\n\n"
|
24
|
+
end
|
25
|
+
|
26
|
+
if @save_failures_to
|
27
|
+
if not File.directory?(@save_failures_to)
|
28
|
+
raise "\n\tPath '#{@save_failures_to}' is not a directory.\n\n"
|
29
|
+
end
|
30
|
+
@save_failures_to = File.expand_path(@save_failures_to)
|
31
|
+
puts "Mail which fails to parse will be saved in '#{@save_failures_to}'"
|
32
|
+
end
|
33
|
+
|
34
|
+
puts "Checking '#{root_of_corpus}' directory (recursively)"
|
35
|
+
|
36
|
+
# we're tracking all the errors separately, don't clutter terminal
|
37
|
+
$stderr_backup = $stderr.dup
|
38
|
+
$stderr.reopen("/dev/null", "w")
|
39
|
+
STDERR = $stderr
|
40
|
+
|
41
|
+
dir_node(root_of_corpus)
|
42
|
+
|
43
|
+
# put our toys back now that we're done with them
|
44
|
+
$stderr = $stderr_backup.dup
|
45
|
+
STDERR = $stderr
|
46
|
+
|
47
|
+
puts "\n\n"
|
48
|
+
|
49
|
+
if @failed_emails.any?
|
50
|
+
report_failures_to_stdout
|
51
|
+
end
|
52
|
+
puts "Out of Total: #{@checked_count}"
|
53
|
+
|
54
|
+
if @save_failures_to
|
55
|
+
puts "Add SAVE_TO=/some/dir to save failed emails to for review.,"
|
56
|
+
puts "May result in a lot of saved files. Do a dry run first!\n\n"
|
57
|
+
else
|
58
|
+
puts "There are no errors"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def dir_node(path)
|
63
|
+
puts "\n\n"
|
64
|
+
puts "Checking emails in '#{path}':"
|
65
|
+
|
66
|
+
entries = Dir.entries(path)
|
67
|
+
|
68
|
+
entries.each do |entry|
|
69
|
+
next if ['.', '..'].include?(entry)
|
70
|
+
full_path = File.join(path, entry)
|
71
|
+
|
72
|
+
if File.file?(full_path)
|
73
|
+
file_node(full_path)
|
74
|
+
elsif File.directory?(full_path)
|
75
|
+
dir_node(full_path)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def file_node(path)
|
81
|
+
verify(path)
|
82
|
+
end
|
83
|
+
|
84
|
+
def verify(path)
|
85
|
+
result, message = parse_as_mail(path)
|
86
|
+
if result
|
87
|
+
print '.'
|
88
|
+
$stdout.flush
|
89
|
+
else
|
90
|
+
save_failure(path, message)
|
91
|
+
print 'x'
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def save_failure(path, message)
|
96
|
+
@failed_emails << [path, message]
|
97
|
+
if @save_failures_to
|
98
|
+
email_basename = File.basename(path)
|
99
|
+
failure_as_filename = message.gsub(/\W/, '_')
|
100
|
+
new_email_name = [failure_as_filename, email_basename].join("_")
|
101
|
+
File.open(File.join(@save_failures_to, new_email_name), 'w+') do |fh|
|
102
|
+
fh << File.read(path)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def parse_as_mail(path)
|
108
|
+
@checked_count += 1
|
109
|
+
begin
|
110
|
+
parsed_mail = Mail.read(path)
|
111
|
+
[true, nil]
|
112
|
+
rescue => e
|
113
|
+
[false, e.message]
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def report_failures_to_stdout
|
118
|
+
@failed_emails.each do |failed|
|
119
|
+
puts "#{failed[0]} : #{failed[1]}"
|
120
|
+
end
|
121
|
+
puts "Failed: #{@failed_emails.size}"
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
metadata
CHANGED
@@ -1,56 +1,56 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Mike Lindsaar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-19 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: tlsmail
|
17
17
|
type: :runtime
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: "
|
23
|
+
version: "0"
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: treetop
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: "
|
33
|
+
version: "0"
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: activesupport
|
37
37
|
type: :runtime
|
38
38
|
version_requirement:
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: "
|
43
|
+
version: "0"
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
47
|
-
type: :
|
46
|
+
name: mime-types
|
47
|
+
type: :runtime
|
48
48
|
version_requirement:
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: "0"
|
54
54
|
version:
|
55
55
|
description: A really Ruby Mail handler.
|
56
56
|
email: raasdnil@gmail.com
|
@@ -60,128 +60,130 @@ extensions: []
|
|
60
60
|
|
61
61
|
extra_rdoc_files:
|
62
62
|
- README.rdoc
|
63
|
+
- CHANGELOG.rdoc
|
64
|
+
- TODO.rdoc
|
63
65
|
files:
|
64
|
-
- ./.gitignore
|
65
|
-
- ./CHANGELOG.rdoc
|
66
|
-
- ./Manifest.txt
|
67
|
-
- ./Rakefile
|
68
|
-
- ./README.rdoc
|
69
|
-
- ./lib/mail.rb
|
70
|
-
- ./lib/mail/attachment.rb
|
71
|
-
- ./lib/mail/body.rb
|
72
|
-
- ./lib/mail/configuration.rb
|
73
|
-
- ./lib/mail/core_extensions/blank.rb
|
74
|
-
- ./lib/mail/core_extensions/nil.rb
|
75
|
-
- ./lib/mail/core_extensions/string.rb
|
76
|
-
- ./lib/mail/core_extensions.rb
|
77
|
-
- ./lib/mail/elements/address.rb
|
78
|
-
- ./lib/mail/elements/address_list.rb
|
79
|
-
- ./lib/mail/elements/content_disposition_element.rb
|
80
|
-
- ./lib/mail/elements/content_location_element.rb
|
81
|
-
- ./lib/mail/elements/content_transfer_encoding_element.rb
|
82
|
-
- ./lib/mail/elements/content_type_element.rb
|
83
|
-
- ./lib/mail/elements/date_time_element.rb
|
84
|
-
- ./lib/mail/elements/envelope_from_element.rb
|
85
|
-
- ./lib/mail/elements/message_ids_element.rb
|
86
|
-
- ./lib/mail/elements/mime_version_element.rb
|
87
|
-
- ./lib/mail/elements/phrase_list.rb
|
88
|
-
- ./lib/mail/elements/received_element.rb
|
89
|
-
- ./lib/mail/encodings/base64.rb
|
90
|
-
- ./lib/mail/encodings/encodings.rb
|
91
|
-
- ./lib/mail/encodings/quoted_printable.rb
|
92
|
-
- ./lib/mail/envelope.rb
|
93
|
-
- ./lib/mail/field.rb
|
94
|
-
- ./lib/mail/field_list.rb
|
95
|
-
- ./lib/mail/fields/bcc_field.rb
|
96
|
-
- ./lib/mail/fields/cc_field.rb
|
97
|
-
- ./lib/mail/fields/comments_field.rb
|
98
|
-
- ./lib/mail/fields/common/common_address.rb
|
99
|
-
- ./lib/mail/fields/common/common_date.rb
|
100
|
-
- ./lib/mail/fields/common/common_field.rb
|
101
|
-
- ./lib/mail/fields/common/common_message_id.rb
|
102
|
-
- ./lib/mail/fields/common/parameter_hash.rb
|
103
|
-
- ./lib/mail/fields/content_description_field.rb
|
104
|
-
- ./lib/mail/fields/content_disposition_field.rb
|
105
|
-
- ./lib/mail/fields/content_id_field.rb
|
106
|
-
- ./lib/mail/fields/content_location_field.rb
|
107
|
-
- ./lib/mail/fields/content_transfer_encoding_field.rb
|
108
|
-
- ./lib/mail/fields/content_type_field.rb
|
109
|
-
- ./lib/mail/fields/date_field.rb
|
110
|
-
- ./lib/mail/fields/from_field.rb
|
111
|
-
- ./lib/mail/fields/in_reply_to_field.rb
|
112
|
-
- ./lib/mail/fields/keywords_field.rb
|
113
|
-
- ./lib/mail/fields/message_id_field.rb
|
114
|
-
- ./lib/mail/fields/mime_version_field.rb
|
115
|
-
- ./lib/mail/fields/optional_field.rb
|
116
|
-
- ./lib/mail/fields/received_field.rb
|
117
|
-
- ./lib/mail/fields/references_field.rb
|
118
|
-
- ./lib/mail/fields/reply_to_field.rb
|
119
|
-
- ./lib/mail/fields/resent_bcc_field.rb
|
120
|
-
- ./lib/mail/fields/resent_cc_field.rb
|
121
|
-
- ./lib/mail/fields/resent_date_field.rb
|
122
|
-
- ./lib/mail/fields/resent_from_field.rb
|
123
|
-
- ./lib/mail/fields/resent_message_id_field.rb
|
124
|
-
- ./lib/mail/fields/resent_sender_field.rb
|
125
|
-
- ./lib/mail/fields/resent_to_field.rb
|
126
|
-
- ./lib/mail/fields/return_path_field.rb
|
127
|
-
- ./lib/mail/fields/sender_field.rb
|
128
|
-
- ./lib/mail/fields/structured_field.rb
|
129
|
-
- ./lib/mail/fields/subject_field.rb
|
130
|
-
- ./lib/mail/fields/to_field.rb
|
131
|
-
- ./lib/mail/fields/unstructured_field.rb
|
132
|
-
- ./lib/mail/header.rb
|
133
|
-
- ./lib/mail/mail.rb
|
134
|
-
- ./lib/mail/message.rb
|
135
|
-
- ./lib/mail/network/deliverable.rb
|
136
|
-
- ./lib/mail/network/delivery_methods/file_delivery.rb
|
137
|
-
- ./lib/mail/network/delivery_methods/sendmail.rb
|
138
|
-
- ./lib/mail/network/delivery_methods/smtp.rb
|
139
|
-
- ./lib/mail/network/delivery_methods/test_mailer.rb
|
140
|
-
- ./lib/mail/network/retrievable.rb
|
141
|
-
- ./lib/mail/network/retriever_methods/imap.rb
|
142
|
-
- ./lib/mail/network/retriever_methods/pop3.rb
|
143
|
-
- ./lib/mail/parsers/address_lists.rb
|
144
|
-
- ./lib/mail/parsers/address_lists.treetop
|
145
|
-
- ./lib/mail/parsers/content_disposition.rb
|
146
|
-
- ./lib/mail/parsers/content_disposition.treetop
|
147
|
-
- ./lib/mail/parsers/content_location.rb
|
148
|
-
- ./lib/mail/parsers/content_location.treetop
|
149
|
-
- ./lib/mail/parsers/content_transfer_encoding.rb
|
150
|
-
- ./lib/mail/parsers/content_transfer_encoding.treetop
|
151
|
-
- ./lib/mail/parsers/content_type.rb
|
152
|
-
- ./lib/mail/parsers/content_type.treetop
|
153
|
-
- ./lib/mail/parsers/date_time.rb
|
154
|
-
- ./lib/mail/parsers/date_time.treetop
|
155
|
-
- ./lib/mail/parsers/envelope_from.rb
|
156
|
-
- ./lib/mail/parsers/envelope_from.treetop
|
157
|
-
- ./lib/mail/parsers/message_ids.rb
|
158
|
-
- ./lib/mail/parsers/message_ids.treetop
|
159
|
-
- ./lib/mail/parsers/mime_version.rb
|
160
|
-
- ./lib/mail/parsers/mime_version.treetop
|
161
|
-
- ./lib/mail/parsers/phrase_lists.rb
|
162
|
-
- ./lib/mail/parsers/phrase_lists.treetop
|
163
|
-
- ./lib/mail/parsers/received.rb
|
164
|
-
- ./lib/mail/parsers/received.treetop
|
165
|
-
- ./lib/mail/parsers/rfc2045.rb
|
166
|
-
- ./lib/mail/parsers/rfc2045.treetop
|
167
|
-
- ./lib/mail/parsers/rfc2822.rb
|
168
|
-
- ./lib/mail/parsers/rfc2822.treetop
|
169
|
-
- ./lib/mail/parsers/rfc2822_obsolete.rb
|
170
|
-
- ./lib/mail/parsers/rfc2822_obsolete.treetop
|
171
|
-
- ./lib/mail/part.rb
|
172
|
-
- ./lib/mail/patterns.rb
|
173
|
-
- ./lib/mail/utilities.rb
|
174
|
-
- ./lib/mail/version.rb
|
175
|
-
- ./lib/mail/version_specific/ruby_1_8.rb
|
176
|
-
- ./lib/mail/version_specific/ruby_1_9.rb
|
177
66
|
- README.rdoc
|
67
|
+
- Rakefile
|
68
|
+
- TODO.rdoc
|
69
|
+
- lib/mail/attachment.rb
|
70
|
+
- lib/mail/body.rb
|
71
|
+
- lib/mail/configuration.rb
|
72
|
+
- lib/mail/core_extensions/blank.rb
|
73
|
+
- lib/mail/core_extensions/nil.rb
|
74
|
+
- lib/mail/core_extensions/string.rb
|
75
|
+
- lib/mail/core_extensions.rb
|
76
|
+
- lib/mail/elements/address.rb
|
77
|
+
- lib/mail/elements/address_list.rb
|
78
|
+
- lib/mail/elements/content_disposition_element.rb
|
79
|
+
- lib/mail/elements/content_location_element.rb
|
80
|
+
- lib/mail/elements/content_transfer_encoding_element.rb
|
81
|
+
- lib/mail/elements/content_type_element.rb
|
82
|
+
- lib/mail/elements/date_time_element.rb
|
83
|
+
- lib/mail/elements/envelope_from_element.rb
|
84
|
+
- lib/mail/elements/message_ids_element.rb
|
85
|
+
- lib/mail/elements/mime_version_element.rb
|
86
|
+
- lib/mail/elements/phrase_list.rb
|
87
|
+
- lib/mail/elements/received_element.rb
|
88
|
+
- lib/mail/encodings/base64.rb
|
89
|
+
- lib/mail/encodings/encodings.rb
|
90
|
+
- lib/mail/encodings/quoted_printable.rb
|
91
|
+
- lib/mail/envelope.rb
|
92
|
+
- lib/mail/field.rb
|
93
|
+
- lib/mail/field_list.rb
|
94
|
+
- lib/mail/fields/bcc_field.rb
|
95
|
+
- lib/mail/fields/cc_field.rb
|
96
|
+
- lib/mail/fields/comments_field.rb
|
97
|
+
- lib/mail/fields/common/common_address.rb
|
98
|
+
- lib/mail/fields/common/common_date.rb
|
99
|
+
- lib/mail/fields/common/common_field.rb
|
100
|
+
- lib/mail/fields/common/common_message_id.rb
|
101
|
+
- lib/mail/fields/common/parameter_hash.rb
|
102
|
+
- lib/mail/fields/content_description_field.rb
|
103
|
+
- lib/mail/fields/content_disposition_field.rb
|
104
|
+
- lib/mail/fields/content_id_field.rb
|
105
|
+
- lib/mail/fields/content_location_field.rb
|
106
|
+
- lib/mail/fields/content_transfer_encoding_field.rb
|
107
|
+
- lib/mail/fields/content_type_field.rb
|
108
|
+
- lib/mail/fields/date_field.rb
|
109
|
+
- lib/mail/fields/from_field.rb
|
110
|
+
- lib/mail/fields/in_reply_to_field.rb
|
111
|
+
- lib/mail/fields/keywords_field.rb
|
112
|
+
- lib/mail/fields/message_id_field.rb
|
113
|
+
- lib/mail/fields/mime_version_field.rb
|
114
|
+
- lib/mail/fields/optional_field.rb
|
115
|
+
- lib/mail/fields/received_field.rb
|
116
|
+
- lib/mail/fields/references_field.rb
|
117
|
+
- lib/mail/fields/reply_to_field.rb
|
118
|
+
- lib/mail/fields/resent_bcc_field.rb
|
119
|
+
- lib/mail/fields/resent_cc_field.rb
|
120
|
+
- lib/mail/fields/resent_date_field.rb
|
121
|
+
- lib/mail/fields/resent_from_field.rb
|
122
|
+
- lib/mail/fields/resent_message_id_field.rb
|
123
|
+
- lib/mail/fields/resent_sender_field.rb
|
124
|
+
- lib/mail/fields/resent_to_field.rb
|
125
|
+
- lib/mail/fields/return_path_field.rb
|
126
|
+
- lib/mail/fields/sender_field.rb
|
127
|
+
- lib/mail/fields/structured_field.rb
|
128
|
+
- lib/mail/fields/subject_field.rb
|
129
|
+
- lib/mail/fields/to_field.rb
|
130
|
+
- lib/mail/fields/unstructured_field.rb
|
131
|
+
- lib/mail/header.rb
|
132
|
+
- lib/mail/mail.rb
|
133
|
+
- lib/mail/message.rb
|
134
|
+
- lib/mail/network/deliverable.rb
|
135
|
+
- lib/mail/network/delivery_methods/file_delivery.rb
|
136
|
+
- lib/mail/network/delivery_methods/sendmail.rb
|
137
|
+
- lib/mail/network/delivery_methods/smtp.rb
|
138
|
+
- lib/mail/network/delivery_methods/test_mailer.rb
|
139
|
+
- lib/mail/network/retrievable.rb
|
140
|
+
- lib/mail/network/retriever_methods/imap.rb
|
141
|
+
- lib/mail/network/retriever_methods/pop3.rb
|
142
|
+
- lib/mail/parsers/address_lists.rb
|
143
|
+
- lib/mail/parsers/address_lists.treetop
|
144
|
+
- lib/mail/parsers/content_disposition.rb
|
145
|
+
- lib/mail/parsers/content_disposition.treetop
|
146
|
+
- lib/mail/parsers/content_location.rb
|
147
|
+
- lib/mail/parsers/content_location.treetop
|
148
|
+
- lib/mail/parsers/content_transfer_encoding.rb
|
149
|
+
- lib/mail/parsers/content_transfer_encoding.treetop
|
150
|
+
- lib/mail/parsers/content_type.rb
|
151
|
+
- lib/mail/parsers/content_type.treetop
|
152
|
+
- lib/mail/parsers/date_time.rb
|
153
|
+
- lib/mail/parsers/date_time.treetop
|
154
|
+
- lib/mail/parsers/envelope_from.rb
|
155
|
+
- lib/mail/parsers/envelope_from.treetop
|
156
|
+
- lib/mail/parsers/message_ids.rb
|
157
|
+
- lib/mail/parsers/message_ids.treetop
|
158
|
+
- lib/mail/parsers/mime_version.rb
|
159
|
+
- lib/mail/parsers/mime_version.treetop
|
160
|
+
- lib/mail/parsers/phrase_lists.rb
|
161
|
+
- lib/mail/parsers/phrase_lists.treetop
|
162
|
+
- lib/mail/parsers/received.rb
|
163
|
+
- lib/mail/parsers/received.treetop
|
164
|
+
- lib/mail/parsers/rfc2045.rb
|
165
|
+
- lib/mail/parsers/rfc2045.treetop
|
166
|
+
- lib/mail/parsers/rfc2822.rb
|
167
|
+
- lib/mail/parsers/rfc2822.treetop
|
168
|
+
- lib/mail/parsers/rfc2822_obsolete.rb
|
169
|
+
- lib/mail/parsers/rfc2822_obsolete.treetop
|
170
|
+
- lib/mail/part.rb
|
171
|
+
- lib/mail/patterns.rb
|
172
|
+
- lib/mail/utilities.rb
|
173
|
+
- lib/mail/version.rb
|
174
|
+
- lib/mail/version_specific/ruby_1_8.rb
|
175
|
+
- lib/mail/version_specific/ruby_1_9.rb
|
176
|
+
- lib/mail.rb
|
177
|
+
- lib/tasks/corpus.rake
|
178
|
+
- lib/tasks/treetop.rake
|
179
|
+
- CHANGELOG.rdoc
|
178
180
|
has_rdoc: true
|
179
181
|
homepage: http://github.com/mikel/mail
|
180
182
|
licenses: []
|
181
183
|
|
182
184
|
post_install_message:
|
183
|
-
rdoc_options:
|
184
|
-
|
185
|
+
rdoc_options: []
|
186
|
+
|
185
187
|
require_paths:
|
186
188
|
- lib
|
187
189
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -194,13 +196,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
196
|
requirements:
|
195
197
|
- - ">="
|
196
198
|
- !ruby/object:Gem::Version
|
197
|
-
version:
|
199
|
+
version: "0"
|
198
200
|
version:
|
199
|
-
requirements:
|
200
|
-
|
201
|
-
- mime/types, A list of a lot of Mime Types
|
202
|
-
- tlsmail, Used for encrypted SMTP, only if you are on RUBY_VERSION <= 1.8.6
|
203
|
-
- activesupport, Because it has lots of goodies
|
201
|
+
requirements: []
|
202
|
+
|
204
203
|
rubyforge_project:
|
205
204
|
rubygems_version: 1.3.5
|
206
205
|
signing_key:
|
data/.gitignore
DELETED
data/Manifest.txt
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
.gitignore
|
2
|
-
CHANGELOG.rdoc
|
3
|
-
Manifest.txt
|
4
|
-
Rakefile
|
5
|
-
README.rdoc
|
6
|
-
lib/mail.rb
|
7
|
-
lib/mail/attachment.rb
|
8
|
-
lib/mail/body.rb
|
9
|
-
lib/mail/configuration.rb
|
10
|
-
lib/mail/core_extensions/blank.rb
|
11
|
-
lib/mail/core_extensions/nil.rb
|
12
|
-
lib/mail/core_extensions/string.rb
|
13
|
-
lib/mail/core_extensions.rb
|
14
|
-
lib/mail/elements/address.rb
|
15
|
-
lib/mail/elements/address_list.rb
|
16
|
-
lib/mail/elements/content_disposition_element.rb
|
17
|
-
lib/mail/elements/content_location_element.rb
|
18
|
-
lib/mail/elements/content_transfer_encoding_element.rb
|
19
|
-
lib/mail/elements/content_type_element.rb
|
20
|
-
lib/mail/elements/date_time_element.rb
|
21
|
-
lib/mail/elements/envelope_from_element.rb
|
22
|
-
lib/mail/elements/message_ids_element.rb
|
23
|
-
lib/mail/elements/mime_version_element.rb
|
24
|
-
lib/mail/elements/phrase_list.rb
|
25
|
-
lib/mail/elements/received_element.rb
|
26
|
-
lib/mail/encodings/base64.rb
|
27
|
-
lib/mail/encodings/encodings.rb
|
28
|
-
lib/mail/encodings/quoted_printable.rb
|
29
|
-
lib/mail/envelope.rb
|
30
|
-
lib/mail/field.rb
|
31
|
-
lib/mail/field_list.rb
|
32
|
-
lib/mail/fields/bcc_field.rb
|
33
|
-
lib/mail/fields/cc_field.rb
|
34
|
-
lib/mail/fields/comments_field.rb
|
35
|
-
lib/mail/fields/common/common_address.rb
|
36
|
-
lib/mail/fields/common/common_date.rb
|
37
|
-
lib/mail/fields/common/common_field.rb
|
38
|
-
lib/mail/fields/common/common_message_id.rb
|
39
|
-
lib/mail/fields/common/parameter_hash.rb
|
40
|
-
lib/mail/fields/content_description_field.rb
|
41
|
-
lib/mail/fields/content_disposition_field.rb
|
42
|
-
lib/mail/fields/content_id_field.rb
|
43
|
-
lib/mail/fields/content_location_field.rb
|
44
|
-
lib/mail/fields/content_transfer_encoding_field.rb
|
45
|
-
lib/mail/fields/content_type_field.rb
|
46
|
-
lib/mail/fields/date_field.rb
|
47
|
-
lib/mail/fields/from_field.rb
|
48
|
-
lib/mail/fields/in_reply_to_field.rb
|
49
|
-
lib/mail/fields/keywords_field.rb
|
50
|
-
lib/mail/fields/message_id_field.rb
|
51
|
-
lib/mail/fields/mime_version_field.rb
|
52
|
-
lib/mail/fields/optional_field.rb
|
53
|
-
lib/mail/fields/received_field.rb
|
54
|
-
lib/mail/fields/references_field.rb
|
55
|
-
lib/mail/fields/reply_to_field.rb
|
56
|
-
lib/mail/fields/resent_bcc_field.rb
|
57
|
-
lib/mail/fields/resent_cc_field.rb
|
58
|
-
lib/mail/fields/resent_date_field.rb
|
59
|
-
lib/mail/fields/resent_from_field.rb
|
60
|
-
lib/mail/fields/resent_message_id_field.rb
|
61
|
-
lib/mail/fields/resent_sender_field.rb
|
62
|
-
lib/mail/fields/resent_to_field.rb
|
63
|
-
lib/mail/fields/return_path_field.rb
|
64
|
-
lib/mail/fields/sender_field.rb
|
65
|
-
lib/mail/fields/structured_field.rb
|
66
|
-
lib/mail/fields/subject_field.rb
|
67
|
-
lib/mail/fields/to_field.rb
|
68
|
-
lib/mail/fields/unstructured_field.rb
|
69
|
-
lib/mail/header.rb
|
70
|
-
lib/mail/mail.rb
|
71
|
-
lib/mail/message.rb
|
72
|
-
lib/mail/network/deliverable.rb
|
73
|
-
lib/mail/network/delivery_methods/file_delivery.rb
|
74
|
-
lib/mail/network/delivery_methods/sendmail.rb
|
75
|
-
lib/mail/network/delivery_methods/smtp.rb
|
76
|
-
lib/mail/network/delivery_methods/test_mailer.rb
|
77
|
-
lib/mail/network/retrievable.rb
|
78
|
-
lib/mail/network/retriever_methods/imap.rb
|
79
|
-
lib/mail/network/retriever_methods/pop3.rb
|
80
|
-
lib/mail/parsers/address_lists.rb
|
81
|
-
lib/mail/parsers/address_lists.treetop
|
82
|
-
lib/mail/parsers/content_disposition.rb
|
83
|
-
lib/mail/parsers/content_disposition.treetop
|
84
|
-
lib/mail/parsers/content_location.rb
|
85
|
-
lib/mail/parsers/content_location.treetop
|
86
|
-
lib/mail/parsers/content_transfer_encoding.rb
|
87
|
-
lib/mail/parsers/content_transfer_encoding.treetop
|
88
|
-
lib/mail/parsers/content_type.rb
|
89
|
-
lib/mail/parsers/content_type.treetop
|
90
|
-
lib/mail/parsers/date_time.rb
|
91
|
-
lib/mail/parsers/date_time.treetop
|
92
|
-
lib/mail/parsers/envelope_from.rb
|
93
|
-
lib/mail/parsers/envelope_from.treetop
|
94
|
-
lib/mail/parsers/message_ids.rb
|
95
|
-
lib/mail/parsers/message_ids.treetop
|
96
|
-
lib/mail/parsers/mime_version.rb
|
97
|
-
lib/mail/parsers/mime_version.treetop
|
98
|
-
lib/mail/parsers/phrase_lists.rb
|
99
|
-
lib/mail/parsers/phrase_lists.treetop
|
100
|
-
lib/mail/parsers/received.rb
|
101
|
-
lib/mail/parsers/received.treetop
|
102
|
-
lib/mail/parsers/rfc2045.rb
|
103
|
-
lib/mail/parsers/rfc2045.treetop
|
104
|
-
lib/mail/parsers/rfc2822.rb
|
105
|
-
lib/mail/parsers/rfc2822.treetop
|
106
|
-
lib/mail/parsers/rfc2822_obsolete.rb
|
107
|
-
lib/mail/parsers/rfc2822_obsolete.treetop
|
108
|
-
lib/mail/part.rb
|
109
|
-
lib/mail/patterns.rb
|
110
|
-
lib/mail/utilities.rb
|
111
|
-
lib/mail/version.rb
|
112
|
-
lib/mail/version_specific/ruby_1_8.rb
|
113
|
-
lib/mail/version_specific/ruby_1_9.rb
|