Previous: Utility procedures, Up: Contacts [Contents]
Let’s see how we could export the addresses in the mu database to the addressbook format of the venerable mutt6 e-mail client.
The addressbook format that mutt uses is a sequence of lines that look something like:
alias <nick> [<name>] "<" <email> ">"
mu guile provides the procedure (mu:contact->string <mu:contact>
format) that we can use to do the conversion.
We may want to focus on people with whom we have frequent correspondence; so we may want to limit ourselves to people we have seen at least 10 times in the last year.
It is a bit hard to guess the nick name for e-mail contacts, but
mu:contact->string tries something based on the name. You can always
adjust them later by hand, obviously.
#!/bin/sh
exec guile -s $0 $ !#
(use-modules (mu))
(mu:initialize)
;; Get a list of contacts that were seen at least 20 times since 2010
(define (selected-contacts)
(let ((addrs '())
(start (car (mktime (car (strptime "%F" "2010-01-01")))))
(minfreq 20))
(mu:for-each-contact
(lambda (contact)
(if (and (mu:email contact)
(>= (mu:frequency contact) minfreq)
(>= (mu:last-seen contact) start))
(set! addrs (cons contact addrs)))))
addrs))
(for-each
(lambda (contact)
(format #t "~a\n" (mu:contact->string contact "mutt-alias")))
(selected-contacts))
This simple program could be improved in many ways; this is left as an excercise to the reader.