    # File lib/vmail/imap_client.rb, line 218
        def extract_row_data(fetch_data)
          seqno = fetch_data.seqno
          uid = fetch_data.attr['UID']
          # log "fetched seqno #{seqno} uid #{uid}"
          envelope = fetch_data.attr["ENVELOPE"]
          size = fetch_data.attr["RFC822.SIZE"]
          flags = fetch_data.attr["FLAGS"]
          address_struct = if @mailbox == mailbox_aliases['sent']
                             structs = envelope.to || envelope.cc
                             structs.nil? ? nil : structs.first
                           else
                             envelope.from.first
                           end
          address = if address_struct.nil?
                      "unknown"
                    elsif address_struct.name
                      "#{Mail::Encodings.unquote_and_convert_to(address_struct.name, 'UTF-8')} <#{[address_struct.mailbox, address_struct.host].join('@')}>"
                    else
                      [Mail::Encodings.unquote_and_convert_to(address_struct.mailbox, 'UTF-8'), Mail::Encodings.unquote_and_convert_to(address_struct.host, 'UTF-8')].join('@')
                    end
          if @mailbox == mailbox_aliases['sent'] && envelope.to && envelope.cc
            total_recips = (envelope.to + envelope.cc).size
            address += " + #{total_recips - 1}"
          end
          date = begin
                   Time.parse(envelope.date).localtime
                 rescue ArgumentError
                   Time.now
                 end

          date_formatted = if date.year != Time.now.year
                             date.strftime "%b %d %Y" rescue envelope.date.to_s
                           else
                             date.strftime "%b %d %I:%M%P" rescue envelope.date.to_s
                           end
          subject = envelope.subject || ''
          subject = Mail::Encodings.unquote_and_convert_to(subject, 'UTF-8')
          flags = format_flags(flags)
          mid_width = @width - 38
          address_col_width = (mid_width * 0.3).ceil
          subject_col_width = (mid_width * 0.7).floor
          identifier = [seqno.to_i, uid.to_i].join(':')
          row_text = [ flags.col(2),
                       (date_formatted || '').col(14),
                       address.col(address_col_width),
                       subject.col(subject_col_width),
                       number_to_human_size(size).rcol(7),
                       identifier.to_s
          ].join(' | ')
          {:uid => uid, :seqno => seqno, :row_text => row_text}
        rescue
          log "error extracting header for uid #{uid} seqno #{seqno}: #$!\n#{$!.backtrace}"
          row_text = "#{seqno.to_s} : error extracting this header"
          {:uid => uid, :seqno => seqno, :row_text => row_text}
        end