[MlMt] Mailing List Submailboxes - Fixing bad list-ids

Ethan Schoonover es at ethanschoonover.com
Wed Jun 2 16:30:59 EDT 2021

# Better MailMate Mailing List Submailbox Naming

I've revised my previous mailing list submailbox naming format string and the improved (and documented) code is below. You can just use the Quick Instructions if wish and ignore the rest, but I’ve documented the way this works if you want to dig in a bit.

This is a complete rewrite of my previous code in this thread and I recommend you use this version vs the earlier code I submitted.

Benny, I don’t know if you’d consider making this a default, but I think it’s a good improvement on the current default.

-Ethan Schoonover
es at ethanschoonover.com

## What & Why

The Mailing Lists smart mailbox in MailMate is **very** powerful and something I use a heavily. However the default MailMate Mailing List submailbox naming format string results in some garbled subfolder names like the following:

54533714ba0665d954ad3759bmc list

By writing a new submailbox format string, we can clean these up and show, in most cases, a sensible mailbox name. Follow the quick instructions below to do this, or dig into the details farther down.

## Quick Instructions

1. Double click your "Mailing Lists" smart mailbox in MailMate
2. Select the "Submailboxes" tab
3. Copy the following code (this is the same as the **CLEAN VERSION** snipped below) and paste it into your Mailing Lists > Submailboxes > Mailbox Name Format field.


## Summary

This submailbox string will look for each of the following variables from the mailing list messages in turn, choosing the first that is available based on the order presented below.

In the special case of the List ID, these sometimes return a gibberish (to human eyes) alphanumeric string of characters. In those cases, the List-ID is not used (technically it is used but regex replaced with the options from the remainder of the sequence below).

### Options for list naming, in order

1. Subject Blob
2. List ID Description if not all alphanumerics
	* if alphanumerics only, then continue with options below
3. From Name
4. List ID Identifier (final part)
5. From Address

Below you will find three versions of the code for this mailing list naming string. The nested version is easy to read, the "commented" version can be pasted in so you can see how your lists names are being assigned, and the "clean" version is uncommented and what you will ultimately want to use.

## Commented Code - Nested format (DO NOT PASTE IN, FOR REFERENCE ONLY)

First: use the subject blob if present. This is the prefix part of the subject that is often in brackets [Like This]. I prioritize this because it seems to be an intentional and consistent list-naming method. If it is present we select it and capitalize it.

If there is no blob we use the list description (again, if present). Unfortunately this sometimes is a random string of alphanumerics (blame poorly written marketing mailing list software, not MailMate). If that is the case, we effectively just keep going through out list (technically we regex replace the list-id with one of the following options, resulting in some code duplication as noted by the starred code comments in double brackets below).

Moving on, if we haven't found a good match yet we try the From Name and then finally the List-ID Identifier and, if all else fails, the From Address (something every mail is guaranteed to have).

Note: the starred (* or **) elements represent a duplicated sequence, required in order to use the List-ID when present.

	[[HAS-SUB-BLOB]] ${subject.blob:/capitalize}:
	[[NO-SUB-BLOB]] ${list-id.description:?
		[[HAS-LISTID]] ${list-id.description/^[a-z]*\d.*/
			[[BAD-LISTID]] ${from.name:
				[[*NO-FROM-NAME*]] ${list-id.identifier.final-level:?
					[[*HAS-LISTID-FINAL*]] ${list-id.identifier.final-level:/capitalize}:
					[[*NO-LISTID-FINAL*]] ${from.address}
		[[NO-LISTID]] ${from.name:
			[[**NO-FROM-NAME**]] ${list-id.identifier.final-level:?
				[[**HAS-LISTID-FINAL**]] ${list-id.identifier.final-level:/capitalize}:
					[[**NO-LISTID-FINAL**]] ${from.address}

## COMMENTED VERSION (if you want to tweak/understand)

Paste this if you want to see how it works with your lists.

${subject.blob:?[[HAS-SUB-BLOB]] ${subject.blob:/capitalize}:[[NO-SUB-BLOB]] ${list-id.description:?[[HAS-LISTID]] ${list-id.description/^[a-z]*\d.*/[[BAD-LISTID]] ${from.name:[[*NO-FROM-NAME*]] ${list-id.identifier.final-level:?[[*HAS-LISTID-FINAL*]] ${list-id.identifier.final-level:/capitalize}:[[*NO-LISTID-FINAL*]] ${from.address}}}/}:[[NO-LISTID]] ${from.name:[[**NO-FROM-NAME**]] ${list-id.identifier.final-level:?[[**HAS-LISTID-FINAL**]] ${list-id.identifier.final-level:/capitalize}:[[**NO-LISTID-FINAL**]] ${from.address}}}}}

## CLEAN VERSION (no comments, USE THIS ONE if you just want to fix it fast)

Paste this in if you just want better list names and don't need to see how it's working.


## ORIGINAL MailMate Mailing Lists Subfolder Format String

Paste this in if you want to revert to the original MailMate behavior.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freron.com/pipermail/mailmate/attachments/20210602/8a801068/attachment.htm>

More information about the mailmate mailing list