Table Of Contents
The download can be found on "ATN (addons.thunderbird.net)": Download
These features should be working in Thunderbird 60.*:
- Extract attachments to the default Thunderbird download folder.
- Extract attachments to a specified folder.
- Extract the attachments from an entire Thunderbird message folder.
- Can automatically intelligently rename files to avoid replacing existing files.
- Progress Dialog to inform you of which message and attachment is currently being extracted
Not yet tested or not working features in Thunderbird 60.*:
- You can choose to mark messages as read and or delete them after attachment extraction.
- Optionally notifies you when its done extracting, if more than 1 message is selected.
- Internal Detaching can suppress confirmation on every email.
- Supports deleting and detaching* of attachments. *(with internal detacher).
- Can filter attachment extraction based on the filename of the attachment.
3.1 Supplied languages
The add-on has been translated into about 14 languages so far. But some translations are not completely up to date.
3.2 Create and improve localization
The add-on localization can be done on the Crowdin localization platform (starting in November 2019). Please, no longer use BabelZilla for the translation, as it is no longer compatible with current add-ons from Thunderbird 68 and newer.
4.1 Attachment Extractor #Date# timestamp codes
|Character||Description||Example returned values|
|d||Day of the month, 2 digits with leading zeros||01 to 31|
|D||A textual representation of a day, three letters||Mon through Sun|
|j||Day of the month without leading zeros||1 to 31|
|l (lowercase 'L')||A full textual representation of the day of the week||Sunday through Saturday|
|N||ISO-8601 numeric representation of the day of the week||1 (for Monday) through 7 (for Sunday)|
|S||English ordinal suffix for the day of the month, 2 characters||st, nd, rd or th. Works well with j|
|w||Numeric representation of the day of the week||0 (for Sunday) through 6 (for Saturday)|
|F||A full textual representation of a month, such as January or March||January through December|
|m||Numeric representation of a month, with leading zeros||01 through 12|
|M||A short textual representation of a month, three letters||Jan through Dec|
|n||Numeric representation of a month, without leading zeros||1 through 12|
|Y||A full numeric representation of a year, 4 digits||Examples: 1999 or 2003|
|y||A two digit representation of a year||Examples: 99 or 03|
|a||Lowercase Ante meridiem and Post meridiem||am or pm|
|A||Uppercase Ante meridiem and Post meridiem||AM or PM|
|g||12-hour format of an hour without leading zeros||1 through 12|
|G||24-hour format of an hour without leading zeros||0 through 23|
|h||12-hour format of an hour with leading zeros||01 through 12|
|H||24-hour format of an hour with leading zeros||00 through 23|
|i||Minutes with leading zeros||00 to 59|
|s||Seconds, with leading zeros||00 through 59|
|U||Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)|
4.2 Detached Images Fix
Thunderbird has an option to Display Attachments Inline (which is enabled by default) which works well until you detach the attachment. The attachment icon links to the detached file correctly but the inline image doesn't. The fix works by changing the code of message that Thunderbird displays within the messagepane or standalone window to point to the detached file so the image displays inline the same before.
4.2.1 Security Considerations:
By default Thunderbird, (quite sensibly) blocks all access to your local computer from within emails. To work the fix opens up hole in this block which could allow a script (and therefore an outside attacker) to access; copy; open; or delete the attachment you detached from your computer. A few caveats to this seemingly huge problem:
- The hole is only opened up just after the email has loaded and is open for less than a second before being closed again;
- Only the attachments you previously detached from that email are exposed;
- The 'attacker' would have to guess the correct name of the attachment to be able to guess what URI to access.
On balance the prior add-on author believed the convenience outweighs the potential risk.
4.3 Keys to use for relative savepath
Any of the keys in quotes below should work:
#define NS_APP_APPLICATION_REGISTRY_DIR "AppRegD" #define NS_APP_DEFAULTS_50_DIR "DefRt" // The root dir of all defaults dirs #define NS_APP_PREF_DEFAULTS_50_DIR "PrfDef" #define NS_APP_PROFILE_DEFAULTS_50_DIR "profDef" // The profile defaults of the "current" // locale. Should be first choice. #define NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR "ProfDefNoLoc" // The profile defaults of the "default" installed locale. Second choice when above is not available. #define NS_APP_USER_PROFILES_ROOT_DIR "DefProfRt" // The dir where user profile dirs live. #define NS_APP_USER_PROFILES_LOCAL_ROOT_DIR "DefProfLRt" // The dir where user profile temp dirs live. #define NS_APP_RES_DIR "ARes" #define NS_APP_CHROME_DIR "AChrom" #define NS_APP_SEARCH_DIR "SrchPlugns" #define NS_APP_PREFS_50_DIR "PrefD" // Directory which contains user prefs ##define NS_APP_PREFS_OVERRIDE_DIR "PrefDOverride" // Directory for per-profile defaults #define NS_APP_USER_PROFILE_50_DIR "ProfD" #define NS_APP_USER_PROFILE_LOCAL_50_DIR "ProfLD" #define NS_APP_USER_CHROME_DIR "UChrm" #define NS_APP_USER_SEARCH_DIR "UsrSrchPlugns" #define NS_APP_CACHE_PARENT_DIR "cachePDir" #define NS_APP_INSTALL_CLEANUP_DIR "XPIClnupD" //location of xpicleanup.dat xpicleanup.exe /* General OS specific locations */ #define NS_OS_HOME_DIR "Home" #define NS_OS_TEMP_DIR "TmpD" #define NS_OS_CURRENT_WORKING_DIR "CurWorkD" /* Files stored in this directory will appear on the user's desktop, * if there is one, otherwise it's just the same as "Home" */ #define NS_OS_DESKTOP_DIR "Desk" /* Property returns the directory in which the procces was started from. * On Unix this will be the path in the MOZILLA_FIVE_HOME env var and if * unset will be the current working directory. */ #define NS_OS_CURRENT_PROCESS_DIR "CurProcD" /* This location is similar to NS_OS_CURRENT_PROCESS_DIR, however, * NS_XPCOM_CURRENT_PROCESS_DIR can be overriden by passing a "bin * directory" to NS_InitXPCOM2(). */ #define NS_XPCOM_CURRENT_PROCESS_DIR "XCurProcD" /* Property will return the location of the application components * directory. By default, this directory will be contained in the * NS_XPCOM_CURRENT_PROCESS_DIR. */ #define NS_XPCOM_COMPONENT_DIR "ComsD" /* Property will return the current location of the the GRE directory. * If no GRE is used, this propery will behave like * NS_XPCOM_CURRENT_PROCESS_DIR. */ #define NS_GRE_DIR "GreD" /* Property will return the current location of the the GRE component * directory. If no GRE is used, this propery will behave like * NS_XPCOM_COMPONENT_DIR. */ #define NS_GRE_COMPONENT_DIR "GreComsD" /* Platform Specific Locations */ #if !defined (XP_UNIX) || defined(XP_MACOSX) #define NS_OS_SYSTEM_DIR "SysD" #endif #if defined (XP_MACOSX) #define NS_MAC_TRASH_DIR "Trsh" #define NS_MAC_STARTUP_DIR "Strt" #define NS_MAC_SHUTDOWN_DIR "Shdwn" #define NS_MAC_APPLE_MENU_DIR "ApplMenu" #define NS_MAC_CONTROL_PANELS_DIR "CntlPnl" #define NS_MAC_EXTENSIONS_DIR "Exts" #define NS_MAC_FONTS_DIR "Fnts" #define NS_MAC_PREFS_DIR "Prfs" #define NS_MAC_DOCUMENTS_DIR "Docs" #define NS_MAC_INTERNET_SEARCH_DIR "ISrch" #define NS_MAC_DEFAULT_DOWNLOAD_DIR "DfltDwnld" #define NS_MAC_USER_LIB_DIR "ULibDir" // Only available under OS X #define NS_OSX_USER_DESKTOP_DIR "UsrDsk" #define NS_OSX_LOCAL_DESKTOP_DIR "LocDsk" #define NS_OSX_USER_APPLICATIONS_DIR "UsrApp" #define NS_OSX_LOCAL_APPLICATIONS_DIR "LocApp" #define NS_OSX_USER_DOCUMENTS_DIR "UsrDocs" #define NS_OSX_LOCAL_DOCUMENTS_DIR "LocDocs" #define NS_OSX_USER_INTERNET_PLUGIN_DIR "UsrIntrntPlgn" #define NS_OSX_LOCAL_INTERNET_PLUGIN_DIR "LoclIntrntPlgn" #define NS_OSX_USER_FRAMEWORKS_DIR "UsrFrmwrks" #define NS_OSX_LOCAL_FRAMEWORKS_DIR "LocFrmwrks" #define NS_OSX_USER_PREFERENCES_DIR "UsrPrfs" #define NS_OSX_LOCAL_PREFERENCES_DIR "LocPrfs" #define NS_OSX_PICTURE_DOCUMENTS_DIR "Pct" #define NS_OSX_MOVIE_DOCUMENTS_DIR "Mov" #define NS_OSX_MUSIC_DOCUMENTS_DIR "Music" #define NS_OSX_INTERNET_SITES_DIR "IntrntSts" #elif defined (XP_WIN) #define NS_WIN_WINDOWS_DIR "WinD" #define NS_WIN_PROGRAM_FILES_DIR "ProgF" #define NS_WIN_DESKTOP_DIR "DeskV" // virtual folder at the root of the namespace #define NS_WIN_PROGRAMS_DIR "Progs" // User start menu programs directory! #define NS_WIN_CONTROLS_DIR "Cntls" #define NS_WIN_PRINTERS_DIR "Prnts" #define NS_WIN_PERSONAL_DIR "Pers" #define NS_WIN_FAVORITES_DIR "Favs" #define NS_WIN_STARTUP_DIR "Strt" #define NS_WIN_RECENT_DIR "Rcnt" #define NS_WIN_SEND_TO_DIR "SndTo" #define NS_WIN_BITBUCKET_DIR "Buckt" #define NS_WIN_STARTMENU_DIR "Strt" #define NS_WIN_DESKTOP_DIRECTORY "DeskP" // file sys dir which physically stores objects on desktop #define NS_WIN_DRIVES_DIR "Drivs" #define NS_WIN_NETWORK_DIR "NetW" #define NS_WIN_NETHOOD_DIR "netH" #define NS_WIN_FONTS_DIR "Fnts" #define NS_WIN_TEMPLATES_DIR "Tmpls" #define NS_WIN_COMMON_STARTMENU_DIR "CmStrt" #define NS_WIN_COMMON_PROGRAMS_DIR "CmPrgs" #define NS_WIN_COMMON_STARTUP_DIR "CmStrt" #define NS_WIN_COMMON_DESKTOP_DIRECTORY "CmDeskP" #define NS_WIN_APPDATA_DIR "AppData" #define NS_WIN_LOCAL_APPDATA_DIR "LocalAppData" #define NS_WIN_PRINTHOOD "PrntHd" #define NS_WIN_COOKIES_DIR "CookD" #define NS_WIN_DEFAULT_DOWNLOAD_DIR "DfltDwnld" #elif defined (XP_UNIX) #define NS_UNIX_LOCAL_DIR "Locl" #define NS_UNIX_LIB_DIR "LibD" #define NS_UNIX_XDG_DESKTOP_DIR "XDGDesk" #define NS_UNIX_XDG_DOCUMENTS_DIR "XDGDocs" #define NS_UNIX_XDG_DOWNLOAD_DIR "XDGDwnld" #define NS_UNIX_XDG_MUSIC_DIR "XDGMusic" #define NS_UNIX_XDG_PICTURES_DIR "XDGPict" #define NS_UNIX_XDG_PUBLIC_SHARE_DIR "XDGPubSh" #define NS_UNIX_XDG_TEMPLATES_DIR "XDGTempl" #define NS_UNIX_XDG_VIDEOS_DIR "XDGVids" #define NS_UNIX_DEFAULT_DOWNLOAD_DIR "DfltDwnld" #elif defined (XP_OS2) #define NS_OS2_DIR "OS2Dir" #elif defined (XP_BEOS) #define NS_BEOS_SETTINGS_DIR "Setngs" #endif