acs-mail-lite uses the cr_items.name for the filename of the attachment.
When content::item::upload_file is used, the name is rewritten without an extension. This often confuses mail clients. However, cr_revisions.title retains the original filename.
Any complaints if I change the attachment filename to use cr_revisions.title instead of cr_items.name?
If you change the attachment to be "title" and the file actually has a title or doesn't have any (blank), then the attachment tagging won't work correctly and the file will be sent with no name.
I think it's upload_file that needs to be fixed, there's no reason to store the name of the item without extension. In 5.6 the line that removes the extension of the filename to fill the title is commented. What openacs version are you using?
Yes, you need to split the filename and extension, then generate the unique filenames then put the extension back on.
text_to_url doesn't care about extensions since it just generates a unique URL which doesn' need one, so reusing for this purpose requires some extra logic.