Olá pessoal!
Em resposta à uma quantidade realmente grande de emails,
escrevo esta coluna. Falaremos sobre uma rotina CGI para envio
de formulários sem o Outlook. E, aproveitando o assunto
de formulários, respondo à mais um "monte"
de emails, falando sobre aparência de formulários
(mudar fonte, cor, borda etc....). Então, vamos á
matéria!!!
CGI em Formulários
Existem outras formas de enviar
emails por rotinas programadas... você tem ASP, PHP
etc... Eu preferi falar sobre a CGI porque é bem prática
e fácil. A única coisa que não depende
delá é o servidor que tem que estar configurado.
Mas isso, você terá que ver com o administrador
do servidor.
O código é este:
#!/usr/bin/perl
# email.pl
#
# **********************************************************
# * Comentario: Processa formulário e o envia por e-mail
# *
# *
# **************************************************************
#
# ****************** inicializacao de variáveis que
serão usadas*********
$mail_prog = '/usr/sbin/sendmail';
$destination = 'AQUI O SEU EMAIL';
$subject = 'AQUI O TÍTULO
DO EMAIL';
$feedback = '/home/user/public_html/resposta02.htm';
$resperro = '/home/user/public_html/resposta04.htm';
$acesso = '0';
#*******************início do programa***************************
# Verifica o método utilizado e ativa entrada padrao
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
# Utiliza um arquivo
temporário para guardar informações até
enviá-las por e-mail
open(TMP, ">/tmp/$$");
# Lê cada par (name e value) separando os com o caracter
"="
# elimina espaços em branco e inicializa variáveis
necessárias
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-f0-9])/pack("C",
hex($1))/eg;
if ( $name eq 'feedback') {
$feedback = $value;
}
if ( $name eq 'nome') {
$nome = $value;
}
if ( $name eq 'email') {
$email = $value;
}
if ( $name eq 'obs') {
$obs = $value;
}
print TMP "$name
= $value
";
}
close(TMP);
if ( $nome eq '' or $obs eq '' or $email eq ''){
# Eu coloquei nesta proxima linha o valor de acesso=0
$acesso = '0';
}else{
$acesso = '1';
}
if ($acesso eq '1') {
# Envia e-mail com os dados acumulados no arquivo temporário
open(pipe_mail, "|$mail_prog $destination") || &erro("Não
pode enviar mail");
open(TMP, "/tmp/$$");
print pipe_mail "From: $email
";
print pipe_mail "Reply-to: $email
";
print pipe_mail "To: $destination
";
print pipe_mail "Subject: $subject
";
print pipe_mail "
";
while(
print pipe_mail $_;
}
close(TMP);
close(pipe_mail);
# Elimina arquivo temporário
unlink("/tmp/$$");
# Envia página como resposta
if ($feedback =~ ////) {
print "Location: $feedback
";
} else {
# Mensagem padrão para o browser esperar html
print "Content-type: text/html
";
open( FEED, $feedback);
while(
print $_;
}
close(FEED);
}
}
if ($acesso eq '0') {
print "Content-type: text/html
";
print;
open(RESP, $resperro);
while(
print $_;
}
close(RESP);
}
}
---------------------------------------------------------------
01 - Copie este código
para um txt e salve como email.pl.
02 - Os destaques em Verde no início
do código são as mudanças que você
deverá fazer:
$mail_prog = '/usr/sbin/sendmail';
= O Administrador do servidor te informará
este endereço, que é o programa de envio, usado
do servidor... sem este endereço correto, não
vai funcionar...
$destination = 'AQUI O SEU EMAIL';
= Aqui você coloca seu email,
oara onde serão enviadas as informações.
$subject = 'AQUI O TÍTULO
DO EMAIL'; = Aqui, você
indica um título para a mensagem que chegará
no seu email.
$feedback = '/home/user/public_html/confirma.htm';
= URL da págima de resposta com
a confirmação dos dados. Repare que não
basta colocar a URL http://........ O endereço deverá
ser o do servidor... por isso, você deve entrar em contato
com o administrador.
$resperro = '/home/user/public_html/erro.htm';
URL da página de resposta com a informação
de Erro no preenchimento, etc... vale o mesmo para o endereço
acima.
if
( $name eq 'nome') {
$nome = $value;
}
if ( $name eq 'email') {
$email = $value;
}
if ( $name eq 'obs') {
$obs = $value;
= Nestas condições, estão explicitados
3 nomes de campos que, obrigatoriamente, deverão existir
no seu formulário (nome, email e obs).
03 - Agora, no formulário.... na action,
você deverá indicar o locar da cgi, dessa vez,
pelo http.. Por exemplo: Action=http://www.meudominio.com.br/cgi-bin/email.pl
OBS: para indicar uma action para o form,
basta selecionar a linha vermelha pontilhada do formulário
que no painel de propriedades aparecerá o campo para
isso.
---------------------------------------------------------------
Aplicando um CSS para um formulário:
Como foi dito na coluna anterior, utilizaremos o painel CSS do Dreamweaver.
Veja no exemplo vários css e suas informações:
É isso pessoal. Continuem mandando seus emails com dúvidas, sugestões, críticas etc... E até a próxima!
Dica de Áudio:
Álbum: Eric Clapton Unplugged
Artista: Eric Clapton
Comentários: Muito violão
pra galera eheh... vale a pena escutar este CD...
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Raphael Simas é Diretor de Arte da produtora Café Azul Mídia Digital e utiliza o Macromedia Fireworks como principal ferramenta para a criação para web.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.