See Cookbook:PmForm. You can create local PmForm templates in the page Site.LocalTemplates?.

#mailform

This form is displayed when form=#mailform is displayed by a pmform target.

[[#mailform]]
(:template default successpage='' :)
(:input pmform target={$$target} successpage="{$$successpage}" :)
(:input default request=1:)
(:messages:)
||width='' 
||$[Your address]: ||(:input text from size=30:) ||
||$[Subject]:      ||(:input text subject size=30:) ||
$[Message]:\\
(:input textarea text rows=15 cols=60:)\\
{$Captcha} (:input captcha:) \\
(:input submit name=post value='$[Send]':)
(:input end:)
[[#mailformend]]

#mailpost

This specifies the message to be sent when fmt=#mailpost is given by a pmform target. It verifies the existence of a from address, subject, and message text.

[[#mailpost]]
(:template require from errmsg="$[Missing 'from' address]" :)
(:template require subject errmsg="$[Missing message subject]" :)
(:template require text errmsg="$[Message text required]" :) 
(:template require if="captcha" errmsg="$[Captcha required]" :)
{$$text}

==========
Sent via PmForm at {$$PageUrl}
[[#mailpostend]]

#commentform

[[#commentform]]
(:input pmform target=comments:)
(:input default request=1:)
(:input default author "{$Author}" :)
'''Post a comment:'''
(:messages:)
Name: (:input text author:) \\
Comments: \\
(:input textarea text rows=3 cols=40:) \\
(:input submit name=post value="$[Post]" :)
(:input hidden csum "Posted a comment via PmForm":)
(:input end:)
[[#commentformend]]

#talkpost

[[#talkpost]]
(:template defaults where=above :) 
(:template require author errmsg="$[Missing name]":)
(:template require text errmsg="$[Missing message]":)
(:template require text match="-*http:*,-*https:*" errmsg="Please don't post external links":)
>>talkpost<<
-> Posted by {$$author} on {$$CurrentTime}
{$$text}
>><<

[[#talkpostend]]