<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 31 Oct 2016, at 4:10, Patrik Fältström wrote:</p>

<p dir="auto"></p></div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">I have one mailbox where I have the name of subfolders in the form of "${#date.month}".<br>
<br>
Can I also use that expression in one way or another in the rules?<br>
<br>
For example: "Move to folder /x/${#date.year}/${#date.month}"</p>

</blockquote></div>
<div style="white-space:normal">

<p dir="auto">Not as easily as that (although it would be nice if it were). The workaround is to create a bundle command and I've attached an example of that. That command can then be used in rules.</p>

<p dir="auto"></p></div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">And of course have that folder be created if it does not exist?</p>

</blockquote></div>
<div style="white-space:normal">

<p dir="auto">That always happens when moving something to a non-existing mailbox.</p>

<p dir="auto">I should explain the command (since it's undocumented):</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">{
    name          = 'Archive to Date';
    environment   = 'MM_FOLDER=${#date.month/-/\\//}\n';
</code></pre>

<p dir="auto">The <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">environment</code> is used to “transfer” a header value to the script. In this case a bit of regex is also used to convert <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">-</code> to <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">/</code>.</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">    output        = actions;
    command       = '#!/bin/bash
cat << END
{ actions = ( { type = moveMessage; mailbox = "/Archive/${MM_FOLDER}"; } ); }
END
';
</code></pre>

<p dir="auto">The <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">actions</code> output type is used when a script needs MailMate to perform various actions, e.g., setting tags, moving messages, creating new (and possibly send) messages, etc. MailMate expects a property list with the wanted actions. The <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">moveMessage</code> type requires a <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">mailbox</code> value. When this value starts with <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">/</code> then the mailbox name is automatically assumed to be located in the same mailbox as the message moved.</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">    uuid          = '57A0FF65-7E0B-4853-8355-A4708FD1BC5E';
}
</code></pre>

<p dir="auto">Note that if you create other commands then the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">uuid</code> <em>must</em> be unique. You can put such a value on the pasteboard with this snippet for a Terminal window:</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">uuidgen | tr -d "\n" | pbcopy
</code></pre>

<p dir="auto">Save the attached bundle in this folder:</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">~/Library/Application Support/MailMate/Bundles/
</code></pre>

<p dir="auto">Note that it should not be necessary to relaunch MailMate when making changes to bundles.</p>

<p dir="auto">-- <br>
Benny</p>
</div>
</div>
</body>
</html>