Tutorial HTML do ICMC-USP

Menu
On line desde 1995
aviso ATENÇÃO:
Este material não pode ser comercializado.
O Tutorial HTML do ICMC-USP não está ligado a provedores de acesso ou hospedagem, nem a sites comerciais.
Autora: Maria Alice Soares de Castro
Analista de Sistemas - ICMC-USP

Este trabalho não tem fins lucrativos. Ao dar cursos, palestras, escrever monografias e desenvolver quaisquer atividades com base neste tutorial, por favor: lembre-se de incluir os créditos de autoria e citar a fonte.

Obrigada! :-)
Maria Alice
Página Principal » Dúvidas respondidas
Novidade:
Páginas em "redesenho". Relate problemas com o uso destas páginas novas no formulário de contato

Dúvidas respondidas

Como fazer envio de um formulário por e-mail?

RESP: Uma das formas de se conseguir enviar um formulário para seu e-mail é usando a seguinte formatação:

<FORM ACTION="mailto:seu_email" METHOD="POST" ENCTYPE="text/plain">
Nome: <INPUT TYPE="TEXT" NAME="Nome"><br>
<TEXTAREA COLS="35" ROWS="5" NAME="comentario"> Deixe seu comentário </TEXTAREA>
<P><input type="submit" value="Envia mensagem">
<input type="reset" value="Apaga tudo!">
</FORM>

Essa formatação gera um formulário assim:
formulário mailto

Quando se submete este formulário, o ´mailto:´ do campo ACTION executa o programa de e-mail do usuário (por isso o formulário não irá funcionar se o usuário não estiver usando um computador com programa de e-mail corretamente configurado).

Na janela de e-mail que se abrir, aparecerão os dados entrados nos campos do formulário. No Internet Explorer aparece um alerta sobre o envio do e-mail:

aviso IExplorer

- é preciso enviar essa mensagem de e-mail para que os dados sejam enviados.

janela de e-mail com conteúdo do formulário

Assim, não há necessidade de um CGI script para submeter o formulário. Porém, usar o ´mailto:´ em um formulário só é interessante se o objetivo do formulário é somente enviar o e-mail.

É possível ver que essa formatação tem alguns inconvenientes:
1- Só irá funcionar se o usuário tiver um programa de e-mail definido como padrão;
2- não oferece retorno, isto é: por si só não dá nenhuma pista para o usuário se o formulário foi realmente enviado ou não (no Netscape é aberta a janelinha de e-mail, o que faz com que o usuário veja os dados que o formulário está enviando).

De qualquer forma, mesmo com rotinas de JavaScript extras, que melhorem o tratamento do formulário, o usuário terá alguns momentos de indecisão diante da janela de e-mail e dos alertas emitidos pelo browser: não saberá exatamente que mensagem é essa, se é necessário enviar o e-mail, e se o formulário, afinal de contas, foi realmente enviado.

Um exemplo de formulário com envio de e-mail aqui no tutorial é a página de contato, por meio da qual as dúvidas são enviadas para mim. O script associado a essa página de contato é em PHP e tem o seguinte "jeitão" básico:

<?php
// pega conteúdo entrado pelo formulário
$nome = $HTTP_POST_VARS[nome];
$email = $HTTP_POST_VARS [email];
$duvida = $HTTP_POST_VARS [duvida];
$pergunta = $HTTP_POST_VARS [pergunta];

// monta mensagens de resposta
$resp ="Seu e-mail com o assunto <b>«".$duvida."»</b> foi encaminhado com sucesso para a autora do tutorial e a resposta será enviada para o endereço ".$email.". <p>Devido ao número de mensagens recebidas, o atendimento poderá demorar alguns dias.<br><br> Agradecendo pela visita,<br>Maria Alice.</p>";
$retorno = "Seu e-mail com o assunto «".$duvida."» foi encaminhado com sucesso.\n\nDevido ao número de mensagens recebidas, o atendimento poderá demorar alguns dias.\n\nObrigada pela visita!\nMaria Alice\n----------------\nATENÇÃO: Não responda a esta mensagem!\nEste e-mail foi gerado automaticamente pela página de contato do\nTutorial HTML do ICMC-USP.
// envio da pergunta e da resposta automática
if (!empty($nome))
    $de = $nome." <".$email.">";
else
    $de = $email;
// e-mail com a pergunta, enviado para mim:
mail ($meu_email,"::".$duvida."::",$pergunta,"From: $de");
// resposta automática para quem enviou a dúvida:
mail ("$de","Obrigada pelo contato!",$retorno,"From: $meu_email"); // impressão de mensagem na página de resposta, após envio dos e-mails
echo "<p class=conteudo>".$resp."</p>";

?>

Esse script fica num arquivo com extensão .php, que é declarado no ACTION do formulário. Os nomes das variáveis de entrada (lidas por meio de $HTTP_POST_VARS) são os mesmos nomes indicados pelo atribudo NAME nos campos do formulário. Veja detalhes em CGI Scripts usando PHP.

Se você está hospedando seu site em um provedor gratuito, leia esta resposta.


Maria Alice

Volta às dúvidas respondidas
©1995-2005 - URL: http://www.icmc.usp.br/ensino/material/html/duvidas.php