aiwilliams-mlist 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/VERSION.yml +1 -1
- data/lib/mlist/email_post.rb +10 -2
- data/lib/mlist/list.rb +14 -2
- data/lib/mlist/mail_list.rb +1 -1
- data/lib/mlist/util/email_helpers.rb +7 -1
- data/lib/mlist/util/tmail_methods.rb +14 -7
- metadata +3 -2
data/CHANGELOG
ADDED
data/VERSION.yml
CHANGED
data/lib/mlist/email_post.rb
CHANGED
@@ -10,6 +10,8 @@ module MList
|
|
10
10
|
# list outside of the methods provided herein.
|
11
11
|
#
|
12
12
|
class EmailPost
|
13
|
+
include MList::Util::EmailHelpers
|
14
|
+
|
13
15
|
ATTRIBUTE_NAMES = %w(html text mailer subject subscriber)
|
14
16
|
ATTRIBUTE_NAMES.each do |attribute_name|
|
15
17
|
define_method(attribute_name) do
|
@@ -63,9 +65,15 @@ module MList
|
|
63
65
|
builder.mime_version = "1.0"
|
64
66
|
builder.mailer = mailer
|
65
67
|
|
66
|
-
|
68
|
+
if parent_identifier
|
69
|
+
builder.in_reply_to = parent_identifier
|
70
|
+
builder.references = [bracket(parent_identifier)]
|
71
|
+
end
|
72
|
+
|
73
|
+
from = subscriber.email_address
|
74
|
+
from = "#{subscriber.display_name} #{bracket(from)}" if subscriber.respond_to?(:display_name)
|
75
|
+
builder.from = from
|
67
76
|
|
68
|
-
builder.from = subscriber.email_address
|
69
77
|
builder.subject = subject
|
70
78
|
|
71
79
|
if html
|
data/lib/mlist/list.rb
CHANGED
@@ -7,7 +7,8 @@ module MList
|
|
7
7
|
#
|
8
8
|
module List
|
9
9
|
|
10
|
-
# Answers whether this list is active or not.
|
10
|
+
# Answers whether this list is active or not. All lists are active all the
|
11
|
+
# time by default.
|
11
12
|
#
|
12
13
|
def active?
|
13
14
|
true
|
@@ -41,8 +42,19 @@ module MList
|
|
41
42
|
address
|
42
43
|
end
|
43
44
|
|
45
|
+
# A list is responsible for answering the recipient subscribers.
|
46
|
+
|
47
|
+
# The subscriber of the incoming message is provided if the list would
|
48
|
+
# like to exclude it from the returned list. It is not assumed that it
|
49
|
+
# will be included or excluded, thereby allowing the list to decide. This
|
50
|
+
# default implementation does not include the sending subscriber in the
|
51
|
+
# list of recipients.
|
52
|
+
#
|
53
|
+
# Your 'subscriber' instance MUST respond to :email_address. They may
|
54
|
+
# optionally respond to :display_name.
|
55
|
+
#
|
44
56
|
def recipients(subscriber)
|
45
|
-
subscribers.
|
57
|
+
subscribers.reject {|s| s.email_address == subscriber.email_address}
|
46
58
|
end
|
47
59
|
|
48
60
|
def subscriber(email_address)
|
data/lib/mlist/mail_list.rb
CHANGED
@@ -116,7 +116,7 @@ module MList
|
|
116
116
|
prepare_list_headers(delivery)
|
117
117
|
delivery.subject = list_subject(message)
|
118
118
|
delivery.to = address
|
119
|
-
delivery.bcc = message.recipients
|
119
|
+
delivery.bcc = message.recipients.collect(&:email_address)
|
120
120
|
delivery.reply_to = "#{label} <#{post_url}>"
|
121
121
|
end
|
122
122
|
|
@@ -14,8 +14,14 @@ module MList
|
|
14
14
|
text.to_s.gsub(/\r\n?/, "\n")
|
15
15
|
end
|
16
16
|
|
17
|
+
BRACKETS_RE = /\A<(.*?)>\Z/
|
18
|
+
|
19
|
+
def bracket(string)
|
20
|
+
string.blank? || string =~ BRACKETS_RE ? string : "<#{string}>"
|
21
|
+
end
|
22
|
+
|
17
23
|
def remove_brackets(string)
|
18
|
-
string =~
|
24
|
+
string =~ BRACKETS_RE ? $1 : string
|
19
25
|
end
|
20
26
|
|
21
27
|
def remove_regard(string)
|
@@ -33,14 +33,21 @@ module MList
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def text
|
36
|
-
|
37
|
-
when 'text/plain'
|
38
|
-
tmail.body.strip
|
39
|
-
when 'multipart/alternative'
|
40
|
-
text_part = tmail.parts.detect {|part| part.content_type == 'text/plain'}
|
41
|
-
text_part.body.strip if text_part
|
42
|
-
end
|
36
|
+
returning('') {|content| extract_text_content(tmail, content)}
|
43
37
|
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def extract_text_content(part, collector)
|
41
|
+
case part.content_type
|
42
|
+
when 'text/plain'
|
43
|
+
collector << part.body.strip
|
44
|
+
when 'multipart/alternative'
|
45
|
+
text_part = part.parts.detect {|part| part.content_type == 'text/plain'}
|
46
|
+
collector << text_part.body.strip if text_part
|
47
|
+
when 'multipart/mixed', 'multipart/related'
|
48
|
+
part.parts.each {|mixed_part| extract_text_content(mixed_part, collector)}
|
49
|
+
end
|
50
|
+
end
|
44
51
|
end
|
45
52
|
|
46
53
|
module TMailWriters
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aiwilliams-mlist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Williams
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02-
|
12
|
+
date: 2009-02-07 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,6 +22,7 @@ extensions: []
|
|
22
22
|
extra_rdoc_files: []
|
23
23
|
|
24
24
|
files:
|
25
|
+
- CHANGELOG
|
25
26
|
- Rakefile
|
26
27
|
- README
|
27
28
|
- VERSION.yml
|