email - Unix mail command: Sort by newest first

07
2014-07
  • kyubiko

    When I use the "mail" command, it prints a list of messages in my inbox in a format like this: 1 Super User Mon Jun 9 17:13 86/4716 Complete Registration With Stack Exchange However I've noticed that it does this with the oldest messages first. Is there a way to change this behaviour?

  • Answers
  • Rich Homolka

    To make this as an answer, I'd suggest to use pine.

    The mail command really isn't made for interactive use. It's for bare bones, your system is completely hosed, and you're searching for some email from cron. For anything else, use something newer and designed for day to day use, such as pine or mutt.


  • Related Question

    How to export email addresses from Apple Mail?
  • Shaun

    When sending an email to someone in Apple Mail it remembers their address, so if you try and send another email to them it'll prompt you with it - even if you haven't added them to the address book.

    Is there any way of exporting those remembered addresses, or saving them to the address book?


  • Related Answers
  • fideli

    In Mail, go to Window -> Previous Recipients. You can then add them to your Address Book. If you want to export the list to a file, you can do so in the Terminal by directly accessing the sqlite database with sqlite3. Excerpt from link (formatting mine):

    This turns out to be more complicated than I had hoped, but it is possible.

    The Apple mail program uses a database program available in Unix called “sqlite3.” The executable is in /usr/bin. For information about this program, type “man sqlite3” in a terminal window. Also, there is information on the web, at www.sqlite.org. A friend whose day job is in database administration helped me work this out.

    First, go the proper directory in a terminal window:

    cd ~/Library/Application Support/AddressBook
    

    The file of interest is MailRecents-v4abcdmr.

    Note that the file command describes this as:

    $ file MailRecents-v4abcdmr
    MailRecents-v4.abcdmr: SQLite database (Version 3)
    
    $ sqlite3 MailRecents-v4.abcdmr
    SQLite version 3.4.0
    Enter ".help" for instructions
    sqlite>
    

    Let’s see the headers:

    sqlite> .headers ON
    

    Now, let’s get some information about what’s in this database file:

    sqlite> select * from SQLITE_MASTER; /* don’t forget the semicolon */
    /* lots of output */
    

    The table ZABCDMAILRECENT is of interest to us. Note that the last 3 columns are called ZLASTNAME, ZFIRSTNAME, and ZEMAIL. We want these from the table, in columns, in filename.txt.

    sqlite> .mode columns ZABCDMAILRECENT
    sqlite> .width 15 15 36 /* make sure the columns are wide enough */
    sqlite> .output filename.txt /* note: no ‘;’ */
    sqlite:> select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT;
    sqlite> .exit
    

    Done. The email names and addresses are now in filename.txt, one per line.

    Maybe, someday, someone at Apple will add this capability to mail.

  • Niklas B

    To export to a CSV file:

    Run as one line:

    sqlite3 -csv ~/Library/Application\ Support/AddressBook/MailRecents-v4.abcdmr 'select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT;'

    To export to file "recent.csv":

    sqlite3 -csv ~/Library/Application\ Support/AddressBook/MailRecents-v4.abcdmr 'select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT;'>recent.csv

  • Johan Ronnestam

    This is a stupid, but simple way to do it.

    Mark all mails, choose print - but change to save to PDF, then export to Word, then export to TXT file format and start to filter the file with Text Wrangler.

    Easy but stupid ;)