- Save that script somewhere in your ${PATH}, make it executable, and
- change the invocation of iceweasel to any other HTML viewer if
- necessary. Then within the emacs client, press "|" to pipe the
- current message, then type "view-html".
-
- Keith mentions the following caveat, "Note that if iceweasel isn't
- already running, it seems to shut down when the script exits. I
- don't know why."
-
-* **msmtp, message mode and multiple accounts**
-
- As an alternative to running a mail server such as sendmail or
- postfix just to send email, it is possible to use
- [msmtp](http://msmtp.sourceforge.net/). This small application will
- look like /usr/bin/sendmail to a MUA such as emacs message mode, but
- will just forward the email to an external SMTP server. It's fairly
- easy to set up and it support several account for using different
- SMTP servers. The msmtp pages have several examples.
-
- A typical scenario is that you want to use the company SMTP server
- for email coming from your company email address, and your personal
- server for personal email. If msmtp is passed the envelope address
- on the command line (the -f/--from option) it will automatically
- pick the matching account. The only trick here seems to be getting
- emacs to actually pass the envelope from. There are a number of
- overlapping configuration variables that control this, and it's a
- little confusion, but setting these three works for me:
-
- - mail-specify-envelope-from: t
-
- - message-sendmail-envelope-from: header
-
- - mail-envelope-from: header
-
- With that in place, you need a .msmtprc with the accounts configured
- for the domains you want to send out using specific SMTP servers and
- the rest will go to the default account.
-
-* <span id="address_completion">**how to get email address completion**</span>
-
- There are currently two solutions to this:
-
- * [bbdb](http://bbdb.sourceforge.net) is a contact database for
- emacs that works quite nicely together with message mode,
- including address autocompletion.
-
- * You can also use the notmuch database as a mail address book
- itself. To do this you need a command line tool that outputs
- likely address candidates based on a search string. There are currently two available:
-
- * The python tool notmuch_address.py ('git clone
- http://jkr.acm.jhu.edu/git/notmuch_addresses.git`) (slower, but
- no compilation required so good for testing the setup)
-
- * The vala-based
- [addrlookup](http://github.com/spaetz/vala-notmuch) (faster, but
- needs compiling). This is how you compile the (3rd party) tool
- "addrlookup" to give you address completion:
-
- * you need the addrlookup binary, first of all. Grab
- http://github.com/spaetz/vala-notmuch/raw/static-sources/src/addrlookup.c
- and build it with `cc -o addrlookup addrlookup.c ``pkg-config
- --cflags --libs gobject-2.0`` -lnotmuch`. That should give you
- the binary that you can test already.
-
- * EUDC is integrated into emacs and can be used for tab
- completion of email addresses. The code I use is here
- http://gist.github.com/359425. It was announce in [this
- mail](http://mid.gmane.org/87fx3uflkx.fsf@jhu.edu)
- (id:87fx3uflkx.fsf@jhu.edu) which contains links to the git
- repositories which contain the files.
-
-* <span id="sign_messages_gpg">**how to sign/encrypt my messages with
- gpg**</span>
-
- You can manually sign your messages with gpg by invoking `M-x
- mml-secure-sign-pgpmime` (or `M-x
- mml-secure-encrypt-pgpmime`). These functions are available via the
- convenient (*cough cough*) keybindings `C-c C-m s p` and `C-c C-m c
- p` by default. To sign my outgoing mail by default, I use this hook
- in my .emacs file:
-
- ;;sign messages by default
- (add-hook 'message-setup-hook 'mml-secure-sign-pgpmime)
-
- This inserts the blurb `<#part sign=pgpmime>` into the beginning of
- my mail text body and will be converted into a pgp signature when
- sending (so I can just manually delete that line if I do not want a
- mail to be signed).
+Save that script somewhere in your `${PATH}`, make it executable,
+and change the invocation of `iceweasel` to any other HTML viewer if
+necessary. Then within the emacs client, press '|' to pipe the
+current message, then type "view-html".
+
+Keith mentions the following caveat, "Note that if iceweasel isn't
+already running, it seems to shut down when the script exits. I
+don't know why."
+
+## msmtp, message mode and multiple accounts
+
+As an alternative to running a mail server such as sendmail or postfix
+just to send email, it is possible to use
+[msmtp](http://msmtp.sourceforge.net/). This small application will
+look like `/usr/bin/sendmail` to a MUA such as emacs message mode, but
+will just forward the email to an external SMTP server. It's fairly
+easy to set up and it supports several accounts for using different
+SMTP servers. The msmtp pages have several examples.
+
+A typical scenario is that you want to use the company SMTP server
+for email coming from your company email address, and your personal
+server for personal email. If msmtp is passed the envelope address
+on the command line (the -f/--from option) it will automatically
+pick the matching account. The only trick here seems to be getting
+emacs to actually pass the envelope from. There are a number of
+overlapping configuration variables that control this, and it's a
+little confusion, but setting these three works for me:
+
+ - `mail-specify-envelope-from`: `t`
+
+ - `message-sendmail-envelope-from`: `header`
+
+ - `mail-envelope-from`: `header`
+
+With that in place, you need a `.msmtprc` with the accounts configured
+for the domains you want to send out using specific SMTP servers and
+the rest will go to the default account.
+
+If you have a hard time getting the above to work for you, as I did,
+it's also possible to add a message-send-mail-hook in your .emacs to
+send the from header explicitly as an argument to msmtp as described
+[here](http://www.emacswiki.org/cgi-bin/wiki/GnusMSMTP#toc2) on the
+emacswiki.
+
+
+## <span id="address_completion">Address completion when composing</span>
+
+There are currently two solutions to this:
+
+[bbdb](http://bbdb.sourceforge.net) is a contact database for emacs
+that works quite nicely together with message mode, including
+address autocompletion.
+
+You can also use the notmuch database as a mail address book itself.
+To do this you need a command line tool that outputs likely address
+candidates based on a search string. There are currently two
+available:
+
+ * The python tool `notmuch_address.py` (`git clone
+ http://commonmeasure.org/~jkr/git/notmuch_addresses.git`) (slower, but
+ no compilation required so good for testing the setup)
+
+ * The vala-based
+ [addrlookup](http://github.com/spaetz/vala-notmuch) (faster, but
+ needs compiling). The addrlookup binary needs to be compiled.
+ Grab
+ `http://github.com/spaetz/vala-notmuch/raw/static-sources/src/addrlookup.c`
+ and build it with:
+
+ cc -o addrlookup addrlookup.c `pkg-config --cflags --libs gobject-2.0` -lnotmuch
+
+You can perform tab-completion using either of these programs. Just add the following to your .emacs:
+
+ (require 'notmuch-address)
+ (setq notmuch-address-command "/path/to/address_fetching_program")
+ (notmuch-address-message-insinuate)
+
+
+## How to sign/encrypt messages with gpg
+
+Messages can by signed using gpg by invoking `M-x
+mml-secure-sign-pgpmime` (or `M-x
+mml-secure-encrypt-pgpmime`). These functions are available via the
+standard `message-mode` keybindings `C-c C-m s p` and `C-c C-m c
+p`. To sign outgoing mail by default, use the `message-setup-hook`
+in your `.emacs` file:
+
+ ;; Sign messages by default.
+ (add-hook 'message-setup-hook 'mml-secure-sign-pgpmime)
+
+This inserts the required `<#part sign=pgpmime>` into the beginning
+of the mail text body and will be converted into a pgp signature
+when sending (so one can just manually delete that line if signing
+is not required).
+
+Alternatively, you may prefer to use `mml-secure-message-sign-pgpmime` instead
+of `mml-secure-sign-pgpmime` to sign the whole message instead of just one
+part.
+
+### Troubleshooting message-mode gpg support
+
+- If you have trouble with expired subkeys, you may have encounted
+ emacs bug #7931. This is fixed in git commit 301ea744c on
+ 2011-02-02. Note that if you have the Debian package easypg
+ installed, it will shadow the fixed version of easypg included with
+ emacs.