Now at Github

ripMIME's primary pupose is to extract attachments out of a MIME encoded email packages.

ripMIME is written by PLDaniels, it is being released under a BSD-revised style hence making it suitable for use in commercial software and additionally compatible with the GPL class of licences.

I've been working on ripMIME for over 12 years now, it has become the defacto tool for extracting attachments out of MIME sources and is used in dozens of email filtering systems. It does cost money to keep ripMIME going so donations are always appreciated.


ripMIME -i <mime file> -d <directory>[-p prefix] [-e [header file]] [-vVh] [--version]
		[--no_nameless] [--unique_names [--prefix|--postfix|--infix]][--paranoid] [--mailbox] 
		[--formdata] [--debug][--no-tnef] [--no-quotedprintable] [--no-uudecode]

Options available :
	-i : Input MIME encoded file (use '-' to input from STDIN)
					If <mime file> is a directory, it will be recursed
	-d : Output directory
	-p : Specify prefix filename to be used on files without a filename (default 'text')
	-e [headers file name] : Dump headers from mailpack (default '_headers_')
	-v : Turn on verbosity
	-q : Run quietly, do no report non-fatal errors

	--verbose-contenttype : Turn on verbosity of file content type
	--verbose-oldstyle : Uses the v1.2.x style or filename reporting
	--verbose-defects: Display a summary of defects in the email
	--verbose-mime: Displays 'Email is MIME' if the email is MIME

	--stdout : All reporting goes to stdout (Default)
	--stderr : All reporting goes to stderr
	--syslog : All reporting goes to syslog

	--no-paranoid : [ Deprecated ] Turns off strict ascii-alnum filenaming
	--paranoid: Converts all filenames to strict 7-bit compliance
	--name-by-type: Saves a given attachment by its content-type if it has no other name
	--no-nameless : Do not save nameless attachments
	--overwrite : Overwrite files if they have the same name on extraction
	--unique-names : Dont overwrite existing files (This is the default behaviour)
	--prefix : rename by putting unique code at the front of the filename
	--postfix : rename by putting unique code at the end of the filename
	--infix : rename by putting unique code in the middle of the filename

	--mailbox : Process mailbox file
	--formdata : Process as form data (from HTML form etc)

	--no-tnef : Turn off TNEF/winmail.dat decoding
	--no-ole : Turn off OLE decoding
	--no-uudecode : Turns off the facility of detecting UUencoded attachments in emails
	--no-quotedprintable : Turns off the facility of decoding QuotedPrintable data
	--no-doublecr : Turns off saving of double-CR embedded data
	--no-mht : Turns off MHT (a Microsoft mailpack attachment format ) decoding
	--no-multiple-filenames : Turns off the multiple filename exploit handling

	--disable-header-fix : Turns off attempts to fix broken headers
	--disable-qmail-bounce : Turns off qmail bounced email testing
	--recursion-max  : Set the maximum recursion level to 'level'
	--timeout      : Set the maximum number of CPU seconds ripMIME can run for

	--debug : Produces detailed information about the whole decoding process
	--extended-errors:      Produces more return codes, even for non-fatals
	-V --version : Give version information
	--buildcodes : Give the build information (tstamp, date and system information)
	-h : This message (help)

	Simple example of decoding a file 'mailpack' into a temporary directory (tmp);
		ripmime -i mailpack -v -d tmp

OS Compatibility

Because ripMIME is written to ANSI/POSIX specifications as much as possible, it should be portable across most *NIX's. If you find ripMIME doesn't work on your *NIX system, then please contact us about it and we'll see what can be done.


Stable Releases

Support options

  • As ripMIME is an OpenSource project, no support is provided. ripMIME is provided "as-is". If you wish to support the ripMIME project or want commercial support, you can look at purchasing a licence of Xamime or alterMIME Pro. These commercial projects fund and push the development of ripMIME and associated products. Additional features can be discussed and purchased if required.

  • For non-support, bug-reports, funded feature requests and other reasons, please see this page.

  • For online community forum support, please see the PLDaniels OpenSource forums. Note: after registration there will be a delay before you can post, for obvious reasons.