1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
# encoding: utf-8
# frozen_string_literal: true
require 'mail/parsers/envelope_from_parser'
require 'date'
module Mail
class EnvelopeFromElement #:nodoc:
attr_reader :date_time, :address
def initialize(string)
envelope_from = Mail::Parsers::EnvelopeFromParser.parse(string)
@address = envelope_from.address
@date_time = ::DateTime.parse(envelope_from.ctime_date) if envelope_from.ctime_date
end
# RFC 4155:
# a timestamp indicating the UTC date and time when the message
# was originally received, conformant with the syntax of the
# traditional UNIX 'ctime' output sans timezone (note that the
# use of UTC precludes the need for a timezone indicator);
def formatted_date_time
if date_time
if date_time.respond_to?(:ctime)
date_time.ctime
else
date_time.strftime '%a %b %e %T %Y'
end
end
end
def to_s
if date_time
"#{address} #{formatted_date_time}"
else
address
end
end
end
end
|