Recently I've been looking more and more into mutt, the email client. I've been a very happy M2 (Opera built-in email client) user for almost 3 years now. But still I felt I was missing something if I didn't try out mutt. I've been a pine user as well, many many years ago :) So, decided to give it a go, I started about a month ago.
I struggled a bit while getting a reasonable .muttrc
file together. Fortunately, there's plenty of examples out there. After getting a working config, the problem was to get back my contacts list.
Mutt has a simple address book integration (through abook
) and stores the contacts into an alias
file, typically ~/.mutt/aliases
. Now, Opera can of course export all your mail contacts to an .adr
file, a simple "addressbook" text file. Did that, and I needed to convert it to mutt's aliases format.
Ten minutes later, a Perl script to do just that was ready. Here it is:
#!/usr/bin/env perl
#
# Convert Opera contacts file (.adr) into
# mutt aliases file format.
#
# Usage:
# perl opera-adr-to-mutt-aliases.pl < ~/.opera/contacts.adr >> ~/.mutt/aliases
#
# Cosimo, 31/Jan/2011
#
use strict;
use warnings;
use utf8;
sub harvest ($) {
my ($contact_info) = @_;
my ($id) = $contact_info =~ m{^ s+ ID = (.*) $}mx;
my ($name) = $contact_info =~ m{^ s+ NAME = (.*) $}mx;
my ($email) = $contact_info =~ m{^ s+ MAIL = (.*) $}mx;
return if ! $id and ! $email;
return {
ID => $id,
NAME => $name,
MAIL => $email,
};
}
my $adr_file_contents = q{};
$adr_file_contents .= $_ while <STDIN>;
my @contacts = split m{#CONTACT}, $adr_file_contents;
for (@contacts) {
my $contact = harvest($_) or next;
my ($first_word) = $contact->{MAIL} =~ m{ (S+) @ }x;
printf "alias %s %s <%s>n",
lc($first_word), $contact->{NAME}, $contact->{MAIL};
}
Download link: https://gist.github.com/803454