Hello, Loek > I have a filter defined that writes attachments to directory > blablabla/%OSUBJ if certain messages from certain clients contain > attachments. This works, except when %OSUBJ contains symbols that > are not allowed in directory names, like : and '
> How do I filter these symbols? I'll need to put something around > %OSUBJ, but what? > Also, I need to make sure the directory names do not become too > long, so an instruction to truncate the directory name to say 50 > characters would be welcome. > I can find the needed directory names also in the mails themselves, > but SETPATTREGEXP etc. don't seem to work either. > Anything else I can do? Look at this template (version for testing and understanding): %_TOREPLACE="'te'sta':tor::"%- %_illchars=`\<\>\:\"\/\\\|\'`%- %SETPATTREGEXP="(?ms)^([^%_illchars]*)([%_illchars]*|\z)([^%_illchars]*)([%_illchars]*|\z)([^%_illchars]*)([%_illchars]*|\z)([^%_illchars]*)([%_illchars]*|\z)"%- %REGEXPBLINDMATCH(%_TOREPLACE)%- %_OUTPUT="%SUBPATT(1)%SUBPATT(3)%SUBPATT(5)%SUBPATT(7)"%- TOREPLACE: %_TOREPLACE OUTPUT: %_OUTPUT %_LONGTEXT="1234567890123"%- %_LIMIT="5"%- %SETPATTREGEXP="(?ms)^(.{0,%_LIMIT})"%- %REGEXPBLINDMATCH(%_LONGTEXT)%- %_SHORTTEXT="%SUBPATT(1)"%- LONGTEXT: %_LONGTEXT LIMIT: %_LIMIT SHORTTEXT: %_SHORTTEXT First Regexp remove 4 illegal characters from %_TOREPLACE (or more, if those characters are together). If You want to remove more, You'll need add new ([^%_illchars]*)([%_illchars]*|\z) in %SETPATTREGEXP and new %SUBPATT(9/11/13...) in %_OUTPUT. You could also use %XMP_StrRepl from XMP plugin - this is a better version, but You must to install this plugin %_TOREPLACE(%OSUBJ)%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,'<',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,'>',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,':',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,'"',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,'/',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,'\',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,'|',))%- %_TOREPLACE(%XMP_StrRepl(%_TOREPLACE,"'",))%- Done: %_TOREPLACE%- In the second half of template is a regexp to limit the length of output (based on variable %_LIMIT). Now all You must to do is to create a quick template with handle - for example - 'spsubj' and with this content: %_TOREPLACE="%OSUBJ"%- %_illchars=`\<\>\:\"\/\\\|\'`%- %SETPATTREGEXP="(?ms)^([^%_illchars]*)([%_illchars]*|\z)([^%_illchars]*)([%_illchars]*|\z)([^%_illchars]*)([%_illchars]*|\z)([^%_illchars]*)([%_illchars]*|\z)"%- %REGEXPBLINDMATCH(%_TOREPLACE)%- %_OUTPUT="%SUBPATT(1)%SUBPATT(3)%SUBPATT(5)%SUBPATT(7)"%- %_LIMIT="40"%- %SETPATTREGEXP="(?ms)^(.{0,%_LIMIT})"%- %REGEXPBLINDMATCH(%_OUTPUT)%- %SUBPATT(1)%- This template will remove illegal characters from %OSUBJ (if not all of them, then add more parenthesis to regexp, as I described above, or use XMP) and will truncate a length of %OSUBJ to 40 characters. Now all You must to do is to add %QINCLUDE(spsubj) to path in Extract Attachments action in filter, from blablabla/%OSUBJ to blablabla/%QINCLUDE(spsubj). -- Pozdrowienia, Konrad Szkudlarczyk ________________________________________________ Current version is 5.2.2 | 'Using TBUDL' information: http://www.silverstones.com/thebat/TBUDLInfo.html