Formmail

O FormMail é um programa CGI usado como um gateway padrão entre formulários em páginas HTML e o e-mail na Internet.

Seu uso possibilita a qualquer um, mesmo sem conhecimento de programação ou CGI, incluir formulários em suas páginas que, quando preenchidos, enviarão mensagens a qualquer endereço de e-mail na Internet.

INÍCIO RÁPIDO

Inclua na sua página o seguinte código HTML: Inclua na sua página, onde quer que a imagem do contador apareça, o seguinte código HTML:

  <form action="/cgi-bin/fm" method=GET>
<input type=hidden name="recipient"
value="<nome>@centroin.com.br">

Campo 1: <input type=text name="campo1">
Campo 2: <input type=text name="campo2">
...
<input type=submit value="Enviar">
<input type=reset value="Limpar">

</form>

Obs: Não esqueça, porém, de trocar (na segunda linha) o "<nome>" pelo seu endereço no CIP (ou trocar o "<nome>@centroin.com.br" por qualquer endereço de e-mail para qual você quer que o resultado do formulário seja enviado).

ÍNDICE:


COMO FUNCIONA O FORMMAIL

O FormMail se baseia em campos na sua página para enviar a mensagem (veja "Mais informações" para saber onde obter, na rede, mais informações sobre campos e formulários). É definindo o valor de terminado campo, ou permitindo que o usuário que lê sua página defina o valor preenchendo-o, que você dirige o FormMail.

De todos os campos, apenas um é obrigatório para que o FormMail funcione: o campo recipient.

INCLUINDO CAMPOS COM HTML
Antes de iniciarmos na lista de campos reconhecidos pelo FormMail, vamos passar por uma breve recapitulação sobre campos e formulários em HTML.

~ Definindo Formulários
Define-se um formulário com a tag <form>...</form>. Segue uma sintaxe mais completa:

<form action="<script>" method=GET>
...
</form>

O <script> deve ser substituído pelo endereço onde o script CGI se encontra e method pode ser GET ou POST (em maiúsculas!). No caso do FormMail do WebCIP, action deve ser "/cgi-bin/fm". O method pode ser GET ou POST.

Todas as informações contidas nos campos entre o <form>...</form> serão enviadas para o script especificado no atributo action. Assim, é possível definir vários formulários, via múltiplos <form>...</form>, numa mesma página HTML, cada um deles enviando seus dados para um script - ou um FormMail - diferente.

~ campos
Um campo é definido usando a seguinte construção:

<input type=<tipo> name=<nome> value=<valor>>

Onde <tipo> é o tipo do campo propriamente dito, <name> é seu nome e <value> seu valor.

Dos tipos existentes, alguns são de especial interesse aos usuários do FormMail, a saber:

Campos hidden
Campos hidden (do inglês, escondidos) não são apresentado aos usuários no momento de apresentação da página. Ao invés, eles existem para forçar a existência de um campo e, opcionalmente, atribuir-lhe um valor.

Exemplo:

<input type=hidden name="recipient"
value="webmaster@cip.com.br">

* Este exemplo, se usado num formulário destinado ao FormMail, fará com que os resultados sejam enviados, via e-mail, para o endereço "webmaster@cip.com.br". Note que isto foi definido pelo criador da página; ao usuário não será dada a opção de mudar o destinatário e o valor do campo sequer será mostrado.

Campos text
Campos text (textos) servem, como o próprio nome diz, para textos.
Alguns atributos interessantes para campos text:

SIZE
Este atributo define o tamanho, em caracteres, que o browser deve reservar para a apresentação do texto. Caso o usuário digite mais caracteres do que o cabe no espaço reservado, todo o texto será deslocado - visualmente - para a esquerda.
MAXLENGTH
Define o número máximo de caracteres permitido no campo. O usuário não conseguirá digitar mais caracteres do que especificado neste atributo.

Exemplo 1:

Assunto: <input type=text name="subject" size=40>
Idade: <input type=text name="idade" maxlength=2>

* Aqui, será fornecida ao usuário a oportunidade de preencher os dois campos, nomeados "subject" e "idade". O campo "subject" aparecerá com espaço para visualização de 40 caracteres e o campo "idade" não permitirá a digitação de mais que 2 caracteres.

Exemplo 2:

Area de interesse: <input type=text name="area" value="Programacao de computadores">

* Neste exemplo, o usuário estará digitando no campo "area". Como parte da inicialização do formulário, o campo receberá o valor "Programação de computadores".

Campos submit
Campos submit (do inglês, processar, enviar) é, sem dúvida, o principal e mais importante para o uso do FormMail. Aliás, campos submit são, na verdade, primordiais para qualquer formulário.
POR QUÊ?
Porque é a escolha deste campo que finaliza o preenchimento do formulário. Normalmente, os browsers (programas de visualização de páginas HTML, o programa que você está - deve estar - usando no momento) apresentam campos submit como um "botão pressionável". Pois a "pressão" deste "botão" indica que o formulário já está devidamente preenchido e deve ser enviado.

Exemplo:

  <form action="/cgi-bin/fm" action=GET>
<input type=hidden name="recipient"
value="webmaster@cip.com.br">
<p>
Formulário de teste, enviado para webmaster@cip.com.br
<br><br>
Nome: <input type=text name="nome"><br>
Idade: <input type=text name="idade" size=2
maxlength=2><br>
Sexo: <input type=text name="sexo" value="f"
size=1 maxlength=1><br>

<input type=submit value="Vai!">

 
Este exemplo, um trecho completo de HTML pronto para funcionar com o FormMail, seria apresentado como:

Formulário de teste, enviado para webmaster@cip.com.br

Nome:
Idade:
Sexo:

Experimente!

Campos reset
Como os campos submit, campos reset (do inglês, limpar, reinicializar) normalmente são apresentados no estilo "botão pressionável" e fazem com que o formulário seja reinicializado, fazendo com que seus campos recebam seus valores default (aqueles especificados pelo atributo value) ou fiquem em branco.

CAMPOS DO FORMMAIL

Dos campos dos seus formulários, alguns são reconhecidos pelo FormMail, outros são até requeridos.

Seguimos com os campos reconhecidos.

recipient

Do inglês, destinatário, este é o único campo obrigatório para se usar o FormMail - sem ele o programa não funcionará.

é este campo que especifica o destinatário para a mensagem com os dados do formulário. Normalmente este campo é definido como um campo hidden mas pode ser permitido que o usuário o informe, o que, definitivamente, não é uma boa idéia.

Muito provavelmente você definirá este campo como hidden, tendo como valor seu endereço de e-mail.

subject
O campo subject define o subject, propriamente dito, que constará no cabeçalho da mensagem enviada quando o formulário for preenchido.

Se você não especificar um campo subject, a mensagem será enviado com o subject "Resultado do formulário no WebCIP".

Se você definir este campo como hidden, todas as mensagens serão enviadas com o subject especificado. Se for um campo text, quem preencher o formulário poderá especificar o subject.

email

Este campo deve permitir que o usuário informe o seu (dele) endereço de e-mail para que você possa identificar quem efetivamente enviou a mensagem.

Adicionalmente, a mensagem que você receberá terá este endereço no campo "from:", facilitando uma possivel correspondência com quem preencheu o formulário.

Não há sentido em definir este campo com outro tipo a não ser text.

realname

Neste campo você permite que o usuário informe seu nome real. Isto é útil a propósito de identificação; o FormMail incluirá esta informação no campo "from:" da mensagem.

Não há sentido em definir este campo com outro tipo a não ser text.

redirect

Após o preenchimento e envio do formulário, o FormMail enviará ao usuário uma página default com um texto informando que os dados do formulário foram enviados com sucesso.

Se você preferir, você pode informar ao FormMail que não envie o usuário para a página default, mas sim para a página que você especificar no campo redirect.

Atenção: o FormMail espera uma referência completa ao endereço a ser redirecionado. Além disso, só é possível especificar o redirecionamento para documentos obtidos via HTTP. Em outras palavras, é necessário especificar "http://" ("http://web.cip.com.br/" se o documento estiver no WebCIP, por exemplo) no endereço para onde o usuário será redirecionado.

Veja a página de exemplos.

required

Você pode informar ao FormMail os campos do seu formulário que são de preenchimento obrigatório. Isso evita que você receba mensagens desnecessárias, com dados incompletos.

Se o usuário não preencher todos os campos obrigatórios, o FormMail o notificará sobre o que ele precisa preencher e apresentará um link para página que contém o formulário incompleto.

Veja a página de exemplos.

env_report
Informa ao FormMail que deve ser informados na mensagem os dados sobre algumas variáveis de ambiente do sistema, no momento em que o formulário for preenchido.

As variáveis de ambiente devem estar separadas por "," (vírgula).

Variáveis de ambiente
Está fora do escopo deste texto discutir o que venha a ser variáveis de ambiente do sistema mas, a grosso modo, entenda-as como um conjunto de valores que descreve o ambiente no qual o script está sendo executado.

Definitivamente, variáveis de ambiente não acrescentam nada à funcionalidade do FormMail mas pode lhe dar dados importantes sobre quem preenche seus formulários.

De todas a váriaveis de ambiente - ou, se você não está entendendo nada, de todos os valores possíveis para o campo env_report - possíveis, as mais (senão únicas) úteis são:

REMOTE_HOST
O nome da máquina de onde foi preenchido o formulário.
REMOTE_ADDR
O endereço IP da máquina de onde foi preenchido o formulário.
HTTP_USER_AGENT
O browser que o usuário usou para preencher o formulário. Tem a forma: "nome-do-software/versão biblioteca(s)/versão(ões)"

sort

Este campo permite que você especifique a ordenação pela qual deseja receber os campos na mensagem que lhe for enviada pelo FormMail.

Você pode especificar que o FormMail lhe envie os campos ordenados em ordem alfabética ou especificar, manualmente, a ordem desejada.

Se você não especificar este campo, a ordem em que os campos aparecerão na mensagem dependerá do browser utilizado pelo usuário e não será, necessáriamente, a mesma ordem em que os campos aparecem na sua página.

Para ordenar os campos alfabeticamente, use "alphabetic" como valor para este campo. Para escolher sua própria ordem, especifique os campos na ordem desejada, separados por "," (vírgula) e precedidos por "order:" (i.e. "order:campo1,campo2,campo3&qupt;).

Veja a página de exemplos.

print_config
Normalmente, campos considerados chave para o FormMail não são incluidos na listagem de campos, no corpo da mensagem. Campos como email e subject são incluídos automaticamente no cabeçalho da mensagem o que torna, na maioria das vezes, desnecessária sua repetição.

Contudo, o campo print_config serve para que você especifique quais campos-chave quer que tenham seus valores listados na mensagem. Os campos devem estar separados por vírgulas.

Veja a página de exemplos.

title
Se você não especificar um campo redirect, o campo title pode ser usado para definir o título da página para qual o usuário será enviado, após o preenchimento do formulário.

Esta opção não tem sentido - e será ignorada - se você especificar o campo redirect.

return_link_url
Se você não especificar um campo redirect, o campo return_link_url pode ser usado para definir o endereço do link que será apresentado na página default apresentada após o preenchimento do formulário.

Esta opção não tem sentido - e será ignorada - se você especificar o campo redirect.

return_link_title
Se você não especificar um campo redirect, o campo return_link_title pode ser usado para definir o título do link que será apresentado na página default apresentada após o preenchimento do formulário.

Esta opção não tem sentido - e será ignorada - se você especificar o campo redirect.

background
Se você não especificar um campo redirect, o campo background pode ser usado para definir o endereço de uma imagem que deve ser usada como imagem de fundo na página default apresentada após o preenchimento do formulário.

Esta opção não tem sentido - e será ignorada - se você especificar o campo redirect.

bgcolor
Similar ao campo background, definindo, porém, a cor de fundo (no mesmo formato do atribudo bgcolor da tag <body>...</body>) da página resultante.

text_color
Similar ao campo background, definindo, porém, a cor do texto (no mesmo formato do atribudo bgcolor da tag <body>...</body>) da página resultante.

link_color
Similar ao campo background, definindo, porém, a cor dos links (no mesmo formato do atribudo bgcolor da tag <body>...</body>) da página resultante.

vlink_color
Similar ao campo background, definindo, porém, a cor dos links "visitados" (no mesmo formato do atribudo bgcolor da tag <body>...</body>) da página resultante.

Alink_color
Similar ao campo background, definindo, porém, a cor do link "ativo" (no mesmo formato do atribudo bgcolor da tag <body>...</body>) da página resultante.

MAIS INFORMAÇÕES
Seguem endereços onde mais informações sobre assuntos tratados neste documento podem ser encontradas:


Página de Exemplos


1. Típico trecho de HTML, implementando um formulário para cadastramento: Os campos "email", "nome" e "telefone" são obrigatórios. Ao preencher o formulário, a mensagem será enviada para "silva@centroin.com.br" e terão o subject "Formulario de cadastramento".


<form action="/cgi-bin/fm" method=GET>

<input type=hidden name="subject"
value="Formulario de cadastramento">

<input type=hidden name="required"
value="email,nome,telefone">

<input type=hidden name="recipient"
value="silva@centroin.com.br">

E-mail: <input type=text name="email"><br>

Nome: <input type=text name="nome"><br>

Sexo: <input type=text name="sexo"
value="M" size=1 maxlength=1><br>

Telefone: <input type=text name="telefone"
size=15 maxlength=15>

<p>

<input type=submit value="Enviar">

<input type=reset value="Limpar">


</form>


E-mail:
Nome:
Sexo:
Telefone:


2. O mesmo exemplo anterior, porém ao finalizar o formulário, ao usuário não será apresentada a página default informando o envio do formulário, e sim uma outra página.


<form action="/cgi-bin/fm" method=GET>

<input type=hidden name="subject"
value="Formulario de cadastramento">

<input type=hidden name="recipient"
value="silva@centroin.com.br">

<input type=hidden

name="redirect"

value="http://web.cip.com.br/silva/formok.html">
<!- ^^^^^^^^ NOTE!!! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->

E-mail: <input type=text name="email"><br>

Nome: <input type=text name="nome"><br>

Sexo: <input type=text name="sexo" value="M" size=1 maxlength=1><br>

Telefone: <input type=text name="telefone" size=15 maxlength=15>

<p>

<input type=submit value="Enviar">

<input type=reset value="Limpar">


</form>


E-mail:
Nome:
Sexo:
Telefone:


3. Neste exemplo, o campo subject será definido por uma lista de valores possíveis.


<form action="/cgi-bin/fm" method=GET>

<input type=hidden name="recipient"
value="silva@centroin.com.br">

<h2>Informe o assunto preferido</h2>

E-mail: <input type=text name="email">

Nome real: <input type=text name="realname"><br>

Assunto: <select name="subject">
<option>Culinária
<option>Programação de computadores
<option>Simuladores de vôo
<option>Arquivo X
</select>

<h3 align=center>

<input type=submit value="Vai!">

<input type=reset value="Limpar!"></h3>


</form>


Informe o assunto preferido

E-mail: Nome real:
Assunto: