Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/mail/elements/content_transfer_encoding_element.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class ContentTransferEncodingElement
include Mail::Utilities

def initialize(string)
content_transfer_encoding = Mail::Parsers::ContentTransferEncodingParser.new.parse(string)
content_transfer_encoding = Mail::Parsers::ContentTransferEncodingParser.new.parse(string.to_s)
@encoding = content_transfer_encoding.encoding
end

Expand Down
16 changes: 8 additions & 8 deletions lib/mail/envelope.rb
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
# encoding: utf-8
#
#
# = Mail Envelope
#
#
# The Envelope class provides a field for the first line in an
# mbox file, that looks like "From mikel@test.lindsaar.net DATETIME"
#
#
# This envelope class reads that line, and turns it into an
# Envelope.from and Envelope.date for your use.
module Mail
class Envelope < StructuredField

def initialize(*args)
super(FIELD_NAME, strip_field(FIELD_NAME, args.last))
super(FIELD_NAME, args.last.to_s)
end

def element
@element ||= Mail::EnvelopeFromElement.new(value)
end

def date
::DateTime.parse("#{element.date_time}")
end

def from
element.address
end

end
end
30 changes: 15 additions & 15 deletions lib/mail/fields/bcc_field.rb
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
# encoding: utf-8
#
#
# = Blind Carbon Copy Field
#
#
# The Bcc field inherits from StructuredField and handles the Bcc: header
# field in the email.
#
#
# Sending bcc to a mail message will instantiate a Mail::Field object that
# has a BccField as its field type. This includes all Mail::CommonAddress
# module instance metods.
#
#
# Only one Bcc field can appear in a header, though it can have multiple
# addresses and groups of addresses.
#
#
# == Examples:
#
#
# mail = Mail.new
# mail.bcc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
# mail.bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
# mail[:bcc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::BccField:0x180e1c4
# mail['bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::BccField:0x180e1c4
# mail['Bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::BccField:0x180e1c4
#
#
# mail[:bcc].encoded #=> '' # Bcc field does not get output into an email
# mail[:bcc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
# mail[:bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
# mail[:bcc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
#
#
require 'mail/fields/common/common_address'

module Mail
class BccField < StructuredField

include Mail::CommonAddress

FIELD_NAME = 'bcc'
CAPITALIZED_FIELD = 'Bcc'

def initialize(value = '', charset = 'utf-8')
@charset = charset
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
super(CAPITALIZED_FIELD, value || "", charset)
self
end

def include_in_headers=(include_in_headers)
@include_in_headers = include_in_headers
end
Expand All @@ -58,10 +58,10 @@ def encoded
''
end
end

def decoded
do_decode
end

end
end
30 changes: 15 additions & 15 deletions lib/mail/fields/cc_field.rb
Original file line number Diff line number Diff line change
@@ -1,54 +1,54 @@
# encoding: utf-8
#
#
# = Carbon Copy Field
#
#
# The Cc field inherits from StructuredField and handles the Cc: header
# field in the email.
#
#
# Sending cc to a mail message will instantiate a Mail::Field object that
# has a CcField as its field type. This includes all Mail::CommonAddress
# module instance metods.
#
#
# Only one Cc field can appear in a header, though it can have multiple
# addresses and groups of addresses.
#
#
# == Examples:
#
#
# mail = Mail.new
# mail.cc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
# mail.cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
# mail[:cc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::CcField:0x180e1c4
# mail['cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::CcField:0x180e1c4
# mail['Cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::CcField:0x180e1c4
#
#
# mail[:cc].encoded #=> 'Cc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
# mail[:cc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
# mail[:cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
# mail[:cc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
#
#
require 'mail/fields/common/common_address'

module Mail
class CcField < StructuredField

include Mail::CommonAddress

FIELD_NAME = 'cc'
CAPITALIZED_FIELD = 'Cc'

def initialize(value = nil, charset = 'utf-8')
self.charset = charset
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
super(CAPITALIZED_FIELD, value || "", charset)
self
end

def encoded
do_encode(CAPITALIZED_FIELD)
end

def decoded
do_decode
end

end
end
24 changes: 12 additions & 12 deletions lib/mail/fields/comments_field.rb
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
# encoding: utf-8
#
#
# = Comments Field
#
#
# The Comments field inherits from UnstructuredField and handles the Comments:
# header field in the email.
#
#
# Sending comments to a mail message will instantiate a Mail::Field object that
# has a CommentsField as its field type.
#
#
# An email header can have as many comments fields as it wants. There is no upper
# limit, the comments field is also optional (that is, no comment is needed)
#
#
# == Examples:
#
#
# mail = Mail.new
# mail.comments = 'This is a comment'
# mail.comments #=> 'This is a comment'
# mail[:comments] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::CommentsField:0x180e1c4
# mail['comments'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::CommentsField:0x180e1c4
# mail['comments'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::CommentsField:0x180e1c4
#
#
# mail.comments = "This is another comment"
# mail[:comments].map { |c| c.to_s }
# mail[:comments].map { |c| c.to_s }
# #=> ['This is a comment', "This is another comment"]
#
module Mail
class CommentsField < UnstructuredField

FIELD_NAME = 'comments'
CAPITALIZED_FIELD = 'Comments'

def initialize(value = nil, charset = 'utf-8')
@charset = charset
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value))
super(CAPITALIZED_FIELD, value || "")
self.parse
self
end

end
end
8 changes: 0 additions & 8 deletions lib/mail/fields/common/common_field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,6 @@ def responsible_for?( val )

private

def strip_field(field_name, value)
if value.is_a?(Array)
value
else
value.to_s.sub(/\A#{field_name}:\s+/i, EMPTY)
end
end

FILENAME_RE = /\b(filename|name)=([^;"\r\n]+\s[^;"\r\n]+)/
def ensure_filename_quoted(value)
if value.is_a?(String)
Expand Down
14 changes: 7 additions & 7 deletions lib/mail/fields/content_description_field.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# encoding: utf-8
#
#
#
#
#
#
module Mail
class ContentDescriptionField < UnstructuredField

FIELD_NAME = 'content-description'
CAPITALIZED_FIELD = 'Content-Description'

def initialize(value = nil, charset = 'utf-8')
self.charset = charset
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
super(CAPITALIZED_FIELD, value || "", charset)
self.parse
self
end

end
end
2 changes: 1 addition & 1 deletion lib/mail/fields/content_disposition_field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class ContentDispositionField < StructuredField
def initialize(value = nil, charset = 'utf-8')
self.charset = charset
ensure_filename_quoted(value)
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
super(CAPITALIZED_FIELD, value || "", charset)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Example (where you probably saw some failing specs, I assume) of expecting a string value.

self.parse
self
end
Expand Down
34 changes: 17 additions & 17 deletions lib/mail/fields/content_id_field.rb
Original file line number Diff line number Diff line change
@@ -1,62 +1,62 @@
# encoding: utf-8
#
#
#
#
#
#
module Mail
class ContentIdField < StructuredField

FIELD_NAME = 'content-id'
CAPITALIZED_FIELD = "Content-ID"

def initialize(value = nil, charset = 'utf-8')
self.charset = charset
@uniq = 1
if value.blank?
value = generate_content_id
else
value = strip_field(FIELD_NAME, value)
value = value.to_s
end
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
super(CAPITALIZED_FIELD, value || "", charset)
self.parse
self
end

def parse(val = value)
unless val.blank?
@element = Mail::MessageIdsElement.new(val)
end
end

def element
@element ||= Mail::MessageIdsElement.new(value)
end

def name
'Content-ID'
end

def content_id
element.message_id
end

def to_s
"<#{content_id}>"
end

# TODO: Fix this up
def encoded
"#{CAPITALIZED_FIELD}: #{to_s}\r\n"
end

def decoded
"#{to_s}"
end

private

def generate_content_id
"<#{Mail.random_tag}@#{::Socket.gethostname}.mail>"
end

end
end
Loading