|
CGI How-To Form-Mail Script
Download Formmail.zip (which contains a sample form and readme file)
Form Configuration
The action of your form needs to point to "/scripts/formmail.pl", and the method must be
"POST". FormMail offers many ways to code your form, to tailor the resulting HTML page, and
to change the way the script performs. Below is a list of form fields you can use and how to implement them.
Necessary Form Fields
There is only one form field that you must have in your form, for FormMail to work correctly. This is the recipient field.
Field:
|
recipient
|
Description: |
This form field allows you to specify to whom you wish for
your form results to be mailed. Most likely you will want to configure this option as a
hidden form field with a value equal to that of your e-mail address.
|
Syntax:
|
<input type=hidden name="recipient" value="email@your_domain.tld">
|
Optional Form Fields
Field:
|
subject
|
Description:
|
The subject field will allow you to specify the subject that
you wish to appear in the e-mail that is sent to you after this form has been filled out.
If you do not have this option turned on, then the script will default to a message
subject: WWW Form Submission
|
Syntax:
|
If you wish to choose what the subject is:
<input type=hidden name="subject" value="Your Subject">
To allow the user to choose a subject:
<input type=text name="subject">
|
Field:
|
email
|
Description:
|
This form field will allow the user to specify their return e-mail
address. This will be put into the From: line of your message header. By default, an
email address with valid syntax is required
(this field name is in the "required" field of the form).
|
Syntax:
|
<input type=text name="email">
|
Field:
|
realname
|
Description:
|
The realname form
field will allow the user to input their real name. This field is useful for identification
purposes and will also be put into the From: line of your message header.
|
Syntax:
|
<input type=text name="realname">
|
Field:
|
redirect
|
Description:
|
If you wish to redirect the user to a different URL (thank-you page), rather
than having them see the default script generated response, you can use this hidden variable.
|
Syntax:
|
To choose the URL they will end up at:
<input type=hidden name="redirect" value="http://www.your_domain.tld/to/file.html">
|
Field:
|
required
|
Description:
|
You can require for certain fields in your form to be filled in
before the user can successfully submit the form. Simply place all field names that you
want to be mandatory into this field. If the required fields are not filled in, the user
will be notified that the data is missing.
To use a customized error page, see 'missing_fields_redirect'
|
Syntax:
|
If you want to require that they fill in the email and phone
fields in your form, so that you can reach them once you have received the mail, use
comma separated field names:
<input type=hidden name="required" value="email,phone">
|
Field: |
env_report
|
Description:
|
Allows you to have Environment variables included in the e-mail
message you receive after a user has filled out your form. Useful if you wish to know
what browser they were using, what domain they were coming from, etc. The following
is a list of valid environment variables that might be useful:
REMOTE_HOST - Sends the hostname making the request.
REMOTE_ADDR - Sends the IP address of the remote host making the request.
REMOTE_USER - If server supports authentication and script is protected, this is
the username they have authenticated as. *This is not usually set.*
HTTP_USER_AGENT - The browser the client is using to send the request.
HTTP_REFERER - The URL that the referred (via a link or redirection) the web client to the script.
|
Syntax:
|
If you wanted to
find the remote host and browser sending the
request, you would put the following into
your form:
<input type=hidden name="env_report" value="REMOTE_HOST,HTTP_USER_AGENT">
|
Field:
|
sort
|
Description:
|
This field allows you to choose the order in which you wish for
your variables to appear in the e-mail that FormMail generates. You can choose to have
the field sorted alphabetically or specify a set order in which you want the fields to
appear in your mail message. By leaving this field out, the order will simply default to
the order in which the browsers sends the information to the script (which is usually
the exact same order as they appeared in the form.) When sorting by a set order of fields,
you should include the phrase "order:" as the first part of your
value for the sort field, and then follow that with the field names you want to be
listed in the e-mail message, separated by commas. Version 1.6 allows a little more
flexibility in the listing of ordered fields, in that you can include spaces and line
breaks in the field without it messing up the sort. This is helpful when you have many form
fields and need to insert a line wrap.
|
Syntax:
|
To sort alphabetically:
<input type=hidden name="sort" value="alphabetic">
To sort by a set field order:
<input type=hidden name="sort" value="order:name1,name2,etc...">
|
Field:
|
print_config
|
Description:
|
print_config allows you to specify which of the config variables
you would like to have printed in your e-mail message. By default, no config fields are
printed to your e-mail. This is because the important form fields, like email, subject,
etc. are included in the header of the message. However some users have asked for
this option so they can have these fields printed in the body of the message. The
config fields that you wish to have printed should be in the value attribute of your
input tag separated by commas.
|
Syntax:
|
If you want to print the email and subject fields in the body of
your message, you would place the following form tag:
<input type=hidden name="print_config" value="email,subject">
|
Field:
|
print_blank_fields
|
Description: |
print_blank_fields
allows you to request that all form fields
are printed in the return HTML, regardless of
whether or not they were filled in. FormMail
defaults to turning this off, so that unused
form fields aren't e-mailed.
|
Syntax: |
If you want to print
all blank fields:
<input type=hidden
name="print_blank_fields"
value="1"> |
Field: |
title
|
Description: |
This form field
allows you to specify the title and header
that will appear on the resulting page if you
do not specify a redirect URL.
|
Syntax: |
If you wanted a
title of 'Feedback Form Results': <input type=hidden
name="title" value="Feedback
Form Results">
|
Field: |
return_link_url
|
Description: |
This field allows
you to specify a URL that will appear, as
return_link_title, on the following report
page. This field will not be used if you have
the redirect field set, but it is useful if
you allow the user to receive the report on
the following page, but want to offer them a
way to get back to your main page.
|
Syntax: |
<input
type=hidden name="return_link_url"
value="http://your_domain.tld/index.html"> |
Field: |
return_link_title
|
Description: |
This is the title
that will be used to link the user back to
the page you specify with return_link_url.
The two fields will be shown on the resulting
form page as:
|
Syntax: |
<input
type=hidden
name="return_link_title"
value="Back to Main Page"> |
Field: |
missing_fields_redirect
|
Description: |
This form field
allows you to specify a URL that users will
be redirected to if there are fields listed
in the required form field that are not
filled in. This is so you can customize an
error page instead of displaying the default. |
Syntax: |
<input
type=hidden
name="missing_fields_redirect"
value="http://your_domain.tld/error.html"> |
Field: |
background
|
Description: |
This form field
allow you to specify a background image that
will appear if you do not have the redirect
field set. This image will appear as the
background to the form results page.
|
Syntax: |
<input
type=hidden name="background"
value="http://your_domain.tld/image.gif"> |
Field: |
bgcolor
|
Description: |
This form field
allow you to specify a bgcolor for the form
results page in much the way you specify a
background image. This field should not be
set if the redirect field is.
|
Syntax: |
For a background
color of White: <input type=hidden
name="bgcolor"
value="#FFFFFF">
|
Field: |
text_color
|
Description: |
This field works in
the same way as bgcolor, except that it will
change the color of your text.
|
Syntax: |
For a text color of
Black: <input
type=hidden name="text_color"
value="#000000">
|
Field: |
link_color
|
Description: |
Changes the color of
links on the resulting page. Works in the
same way as text_color. Should not be defined
if redirect is.
|
Syntax: |
For a link color of
Red: <input
type=hidden name="link_color"
value="#FF0000">
|
Field: |
vlink_color
|
Description: |
Changes the color of
visited links on the resulting page. Works
exactly the same as link_color. Should not be
set if redirect is.
|
Syntax: |
For a visited link
color of Blue: <input
type=hidden name="vlink_color"
value="#0000FF">
|
Field: |
alink_color
|
Description: |
Changes the color of
active links on the resulting page. Works
exactly the same as link_color. Should not be
set if redirect is.
|
Syntax: |
For a active link
color of Blue: <input
type=hidden name="alink_color"
value="#0000FF">
|
Any other form fields that appear
in your script will be mailed back to you and displayed
on the resulting page if you do not have the redirect
field set. There is no limit as to how many other form
fields you can use with this form, except the limits
imposed by browsers and your server.
|