Abook is a text-based addressbook program designed to use with mutt mail client.
There is a chapter about using abook with mutt in the ArchWiki.
If you want to use Abook instead of aliases, remove the aliases configuration in .muttrc
and add this:
1 2 3
| set query_command= "abook --mutt-query '%s'" macro index,pager a "<pipe-message>abook --add-email-quiet<return>" "Add this sender to Abook" bind editor <Tab> complete-query
|
But sadly, the command abook --add-email-quiet
always gets names like “=?utf-8?B?55m+5ZCI5LuZ5a2Q?=” which is base64 encoded.
To convert the base64 string and automatically fit the correct encoding, you can use a shell function:
1 2 3
| conv() { eval `echo $1 | awk -F '?' '{ print "echo " $4 " | base64 -d | iconv -f " $2 }'` }
|
Then:
1
| $ conv name==?utf-8?B?55m+5ZCI5LuZ5a2Q?=
|
Or a python script like this:
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
| import email import email.header import sys import re def abookdecode(origin_name): name=email.Header.decode_header(origin_name) if name[0][1] is None: return name[0][0] else: return name[0][0].decode(name[0][1]).encode('utf-8') if '__main__'==__name__: infile=open(sys.argv[1],"r") content=infile.readlines() infile.close() outfile=open(sys.argv[1],"wb") for line in content: if line[0:4]=='name': outfile.write(line[0:5]+abookdecode(line[5:-1])+'\n') else: outfile.write(line) outfile.close()
|
And then change your .muttrc
to call the script:
1
| macro index,pager a "<pipe-message>abook --add-email-quiet && abook-decode ~/.abook/addressbook<return>" "Add this sender to Abook"
|
Now the addressbook will be written correctly.