I use procmail, metamail (also available from here), pstotext, and (soon) html-to-ascii to turn all my messages to ASCII text since that's the lowest common denominator for me.
Here's my simple procmail recipe (this depends upon C-shell, not Bourne shell.):
:0
*^content-type: 
{
	:0fw
	|setenv METAMAIL_PAGER cat; setenv MM_NOTTTY 1; \
		setenv MAILCAPS ~/.mailcap.print; \
		setenv KEYHEADS '*'; formail -c | metamail
}
To use this, you must create a file $HOME/.mailcap.print with these contents:
application/dvi; dvi-app-name %s message/delivery-status; cat %s image/*; uuencode %s < %s audio/basic; uuencode %s < %s compress/compress; print=uuencode %s < %s application/postscript ; pstotext %s ; description='A Postscript File';\ compose='getfilename Postscript %s' postscript-file; pstotext %s */*; uuencode %s < %s
Finally, you'll need to apply this patch to metamail. It makes the -x flag work properly through procmail.
*** src/metamail/metamail.c.orig	Thu Dec  5 17:41:32 1996
--- src/metamail/metamail.c	Thu Dec  5 17:41:32 1996
***************
*** 2330,2336 ****
              ConsumeRestOfPart(OutputFP);
      }
  #if !defined(AMIGA) && !defined(MSDOS)
!     if (UsingStandardInput && feof(InputFP) && !freopen("/dev/tty", "r", stdin)) {
          fprintf(stderr, "Warning: Cannot freopen /dev/tty to stdin");
      } else InputFP = stdin;
  #endif
--- 2330,2336 ----
              ConsumeRestOfPart(OutputFP);
      }
  #if !defined(AMIGA) && !defined(MSDOS)
!     if (!MustNotBeTty && UsingStandardInput && feof(InputFP) && !freopen("/dev/tty", "r", stdin)) {
          fprintf(stderr, "Warning: Cannot freopen /dev/tty to stdin");
      } else InputFP = stdin;
  #endif
And you should be ready to rock-n-roll! Changing the above recipe to Bourne shell would probably be trivial.
Date Last Modified: Thu Feb 15 16:01:22 UTC 2007