## Code review ### Main things [[!format diff """ +
"""]] This should have `ESCAPE=HTML` (see [[!cpan HTML::Template]]). The other TMPL_VARs probably should too. The method should be `post`, and the CGI should ideally not respond to `GET`s (because sending email isn't idempotent). ### Minor things It would be good to have the documentation specify exactly what "API" it expects from the mailing list: in this case it seems to be an address to which you can send a blank message with the desired subscription address in the `From:` header. I believe that works for most but not all mailing list managers (hopefully the ones where you're meant to mail the posting address with "subscribe" in the body have died out by now). [[!format diff """ +

Join

"""]] Might be better to have a separate parameter for the human-readable name? [[!format diff """ + my $list_subscribe_form = template('listsubscribeform.tmpl'); """]] I wonder whether this would benefit from an optional `template` parameter, with this as default? ``` listsubscribe: 'my supercool mailing list': supercool-subscribe@neato.great ``` This won't be available to [[plugins/websetup]], which doesn't understand hashes/dicts/maps. If it was a list of flat strings with a syntactic structure, like the language list for `po`, then it would be. Sorry, I can't think of a particularly good syntax... --[[smcv]]