Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

Envio de formulário HTML para email


  • Por favor inicie sessão para responder
19 respostas a este tópico

#1 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 28 de Fevereiro de 2012 - 21:05

Boas

gostaria de pedir uma ajuda com um formulario que tenho num ficheiro HTML e que depois é enviado o conteudo do mesmo via PHP para email, so que a minha questão é a seguinte eu consigo enviar pro email so que não vao os dados do formulário e não estou vendo o porque.

Deixo aqui o codigo do formulário HTML e do PHP para ver se me conseguem ajudar.

Código (HTML):
<form action="envia.php" method="post" name="Pedido_de_Orcamento_Administracao_de_Condominios" id="Pedido_de_Orcamento_Administracao_de_Condominios" >
<table border="0" width="100%" id="table1">
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Nome:</font></b></td>
<td>
<input type="text" name="nome" size="100" style="border: 2px solid #7C9537; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Telefone:</font></b></td>
<td>
<input type="text" name="telefone" size="15" maxlength="9" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Telemóvel:</font></b></td>
<td>
<input type="text" name="telemovel" size="15" maxlength="9" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">E-mail:</font></b></td>
<td>
<input type="text" name="email" size="100" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Morada:</font></b></td>
<td>
<input type="text" name="morada" size="100" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Código
Postal:</font></b></td>
<td>
<input type="text" name="cp4" size="6" maxlength="4" style="border: 2px solid #7C9537"> -&nbsp;&nbsp;
<input type="text" name="cp3" size="6" maxlength="3" style="border: 2px solid #7C9537"> -&nbsp;&nbsp;
<input type="text" name="localidade" size="74" maxlength="50" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Fracções
Habitacionais:</font></b></td>
<td>
<input type="text" name="frachab" size="6" maxlength="4" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Fracções
Comerciais:</font></b></td>
<td>
<input type="text" name="fraccom" size="6" maxlength="4" style="border: 2px solid #7C9537"></td>
<td width="130">&nbsp;</td>
</tr>
<tr>
<td width="111">&nbsp;</td>
<td width="102"><b><font face="Century Gothic" size="2">Garagens:</font></b></td>
<td>
<select size="1" name="Garagens" style="border: 2px solid #7C9537; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; font-family:arial; font-size:10pt">
<option selected>----</option>
<option>Sim</option>
<option>Não</option>
</select></td>
<td width="130">&nbsp;</td>
</tr>
</table>
<p align="center"><font face="Arial">
<input type="submit" value="Enviar" name="enviar" style="font-weight: bold; font-family: Century Gothic; font-size: 12pt"></font>&nbsp;
<font face="Arial">
<input type="reset" value="Limpar" name="Limpar" style="font-family: Century Gothic; font-size: 12pt; font-weight: bold"></font></p>
</form>


Código (PHP):
<?php
$hoje_tmp = getdate();
$hoje = ($hoje_tmp[hours].":".$hoje_tmp[minutes].":".$hoje_tmp[seconds]);
$nome=$_POST["nome"];
$telefone=$_POST["telefone"];
$telemovel=$_POST["telemovel"];
$email=$_POST["email"];
$morada=$_POST["morada"];
$cp4=$_POST["cp4"];
$cp3=$_POST["cp3"];
$localidade=$_POST["localidade"];
$frachab=$_POST["frachab"];
$nome=$_POST["nome"];
$fraccom=$_POST["fraccom"];
global $email; //transforma em variavel global a variável e-mail
$enviou = mail("rui_lages@hotmail.com", // aqui voce coloca o seu e-mail
"Pedido de Orçamento para Administração de Condomínios",
"Nome: $nome
Telefone: $telefone
telemóvel: $telemovel
e-mail: $email
Morada: $morada
Codigo postal: $Cp4 "-" $CP3 "-" $localidade // aqui quero que apareça a dizer codigo postal: XXXX - XXX - lisboa

Mensagem: $mensagem",
"From: $email <$nome>");
if ($enviou){
header('location:http://www.vandagere.pt/obrigado.html');
}
else {
header('location:http://www.vandagere.pt/erro_envio.html');
}
?>

Tenho alguma urgencia nisto pois já deveria ter acabdo este projecto meu e nao há maneira de acertar com este envio dos dados para e-mail

#2 fil79

fil79

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1387 mensagens

Publicado 28 de Fevereiro de 2012 - 22:34

1º- Usa as tags de código para facilitar a leitura

2º-Qual o erro que dá?

#3 AndreLC

AndreLC

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 442 mensagens

Publicado 28 de Fevereiro de 2012 - 22:42

Estás a testar em localhost ou em servidor?

#4 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 28 de Fevereiro de 2012 - 23:50

boas

estou a tentar em servidor, e infelizmente o servidor nao aceita ASP, porque senao eu ja tinha isto feito, pois eu nao percebo muito de PHP.

o erro que me dá nao é bem um erro e o seguinte ele envia o mail só que não aprecem lá os campos com os dados que são inseridos, no email que recepciono aparece 0 ou entao -233.

cumprimentos

#5 J-M

J-M

    null

  • Novo Membro
  • Pip
  • 1 mensagens

Publicado 29 de Fevereiro de 2012 - 00:16

Tenta concatenar a mensagem numa variavel (ex. $assunto) e coloca a variavel a seguir ao email.

#6 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 29 de Fevereiro de 2012 - 00:30

boas

poderias dar um exemplo a serio nao sou la muito bom com PHP

cumprimentos

#7 AndreLC

AndreLC

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 442 mensagens

Publicado 29 de Fevereiro de 2012 - 00:58

Código (PHP):
<?php

$nome       = $_POST["nome"];
$telefone   = $_POST['telefone'];
$telemovel  = $_POST['telemovel'];
$email      = $_POST['email'];
$morada     = $_POST['morada'];
$cp4            = $_POST["cp4"];
$cp3            = $_POST["cp3"];
$localidade = $_POST["localidade"];
$mensagem   = $_POST['mensagem'];
$assunto    = "Pedido de Orçamento para Administração de Condomínios"; //Coloca aqui o assunto que queres que apareça no e-mail

global $email; //função para validar a variável $email no script todo

//aqui envia o e-mail para ti
mail ("rui_lages@hotmail.com",                       //email onde o php vai enviar os dados do form
      "$assunto",
      "Nome: $nome\nTelefone: $telefone\nTelemóvel: $telemovel\nE-mail: $email\nMorada: $morada\nCódigo Postal: $cp4 "-" $cp3 "-" $localidade\nMensagem: $mensagem",
      "From: $email"
     );

//aqui são as configurações para enviar o e-mail para o visitante
$site   = "rui_lages@hotmail.com";                    //o e-mail que aparecerá na caixa postal do visitante
$titulo = "RE: E-mail Enviado";                      //titulo da mensagem enviada para o visitante, muda para o que pretenderes
$msg    = "Obrigado por efectuar o Pedido de Orçamento para Administração de Condomínios"; //Muda para o que pretenderes

//aqui envia o e-mail de auto-resposta para o visitante
$ok= @mail("$email",
     "$titulo",
     "$msg",
     "From: $site"
    );
header("Location: http://www.vandagere.pt/obrigado.html");
?>

Exemplo que possui também e-mail de resposta automática. Por exemplo, se fosse para uma newsletter tanto enviava para ti os dados que o assinante subscreveu, bem como envia um e-mail para o mesmo a agradecer por ter subscrevido a newsletter, por exemplo.

Atenção que tinhas a variável $nome repetida e tinhas nomes de variáveis diferentes ($cp4 VS $Cp4 e $cp3 VS $CP3) cuidado que o PHP é case sensitive na declaração de variáveis.  :)

#8 fil79

fil79

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1387 mensagens

Publicado 29 de Fevereiro de 2012 - 11:34

A melhor maneira de enviares emails é por autenticação SMTP. Evita a função mail, para além de ter pouca flexibilidade, existem servidores que não a suportam.

http://www.oficinadanet.com.br/artigo/1031/php__enviando_e-mail_autenticado 

#9 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 29 de Fevereiro de 2012 - 17:33

boas

a todos obrigado por tentarem ajudar só que após tentativa de ajuda do ANDRECL e de testar o que ele me postou, o email é enviado so que aparece unicamente -123

e nao envia os campos

o que será que ainda esta mal.

Vou deixar aqui as alterações que tive que fazer ao exemplo que ele deu.

Código (PHP):
<?php

$nome       = $_POST["nome"]; // caixa de texto
$telefone   = $_POST['telefone'];
$telemovel  = $_POST['telemovel'];
$email      = $_POST['email'];
$morada     = $_POST['morada'];
$cp4        = $_POST["cp4"];
$cp3        = $_POST["cp3"];
$localidade = $_POST["localidade"];
$frachab    = $_POST["frachab"];
$fraccom    = $_POST["fraccom"];
$garagens   = $_POST["garagens"]; // este campo é um dropdown de escolha entre sim e não
$mensagem   = $_POST['mensagem'];
$assunto    = "Pedido de Orçamento para Administração de Condomínios"; //Coloca aqui o assunto que queres que apareça no e-mail

global $email; //função para validar a variável $email no script todo

//aqui envia o e-mail para ti
mail ("rui_lages@hotmail.com",                       //email onde o php vai enviar os dados do form
      "$assunto",
      "Nome: $nome\nTelefone: $telefone\n Telemóvel: $telemovel\n E-mail: $email\n Morada: $morada\n Código Postal: $cp4 "-" $cp3 "-" $localidade\n Fracções Habitacionaveis: $frachab\n Fracções Comerciais: $fraccom\n Garagens: $garagens\n Mensagem: $mensagem",
      "From: $email"
     );

//aqui são as configurações para enviar o e-mail para o visitante
$site   = "rui_lages@hotmail.com";                    //o e-mail que aparecerá na caixa postal do visitante
$titulo = "RE: E-mail Enviado";                      //titulo da mensagem enviada para o visitante, muda para o que pretenderes
$msg    = "Obrigado por efectuar o Pedido de Orçamento para Administração de Condomínios"; //Muda para o que pretenderes

//aqui envia o e-mail de auto-resposta para o visitante
$ok= @mail("$email",
     "$titulo",
     "$msg",
     "From: $site"
    );
header("Location: http://www.vandagere.pt/obrigado.html"); // esta é a pagina caso seja o envio efectuado
?>

Já estou a desesperar com esta linguagem HELP

EDIT: Não te esqueças de usar as tags code. :)

#10 acao

acao

    CRLF

  • Membro
  • PipPipPipPipPip
  • 750 mensagens

Publicado 01 de Março de 2012 - 00:46

boas
ainda sou novato em php mas penso que falta,    no inicio do php:
if (isset($_POST['Enviar'])){
os craks que confirmem!
cumps
acao

#11 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 01 de Março de 2012 - 01:45

boas caro amigo acao

antes de mais obrigado pela tentativa de ajuda só que penso que o que me disse era caso fosse o formulario feito mesmo em PHP, o que o caso aqui nao ocorre devido a eu ter o formulario num ficheiro PHp com o action"envia.php" que é o fiheiro que vai ler os dados em do post do formulkario de cada campo

cumprimentos

#12 acao

acao

    CRLF

  • Membro
  • PipPipPipPipPip
  • 750 mensagens

Publicado 01 de Março de 2012 - 10:39

Ver Mensagemsalvador069, em 01 de Março de 2012 - 01:45, disse:

boas caro amigo acao

antes de mais obrigado pela tentativa de ajuda só que penso que o que me disse era caso fosse o formulario feito mesmo em PHP, o que o caso aqui nao ocorre devido a eu ter o formulario num ficheiro PHp com o action"envia.php" que é o fiheiro que vai ler os dados em do post do formulkario de cada campo

cumprimentos
pois estás correcto para esta situação o action tinha que estar "".
tenta correr só o ficheiro html para ver se as variaveis sao carregadas, coloca a parte de enviar email como comentário.
cumps
acao

#13 AndreLC

AndreLC

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 442 mensagens

Publicado 01 de Março de 2012 - 11:23

Ver Mensagemsalvador069, em 29 de Fevereiro de 2012 - 17:33, disse:


a todos obrigado por tentarem ajudar só que após tentativa de ajuda do ANDRECL e de testar o que ele me postou, o email é enviado so que aparece unicamente -123

e nao envia os campos

o 123 foi o que colocaste no indicativo do código postal, certo? Então a variável $cp3 está a aparecer. Falta ver o que está a acontecer com as restantes.

Como o acao sugeriu retira a parte do envio de e-mail e faz um echo às variáveis e vê se os dados estão a ser passados.

#14 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 01 de Março de 2012 - 19:59

Ver MensagemAndreLC, em 01 de Março de 2012 - 11:23, disse:

o 123 foi o que colocaste no indicativo do código postal, certo? Então a variável $cp3 está a aparecer. Falta ver o que está a acontecer com as restantes.

Como o acao sugeriu retira a parte do envio de e-mail e faz um echo às variáveis e vê se os dados estão a ser passados.

como é que eu faço esse echo que estão a indicar, pois umas vezes aparece -123 e outras 0 de valor.

cumprimentos

#15 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 01 de Março de 2012 - 21:17

boas a todos e obrigado pela ajuda que me tem dado, venho informar que já consegui que os dados fossem enviados só que o campo Garagens que eu tenho em html é uma combobox e o valor no php ou não é lido, ele quando se envia o email o campo aparece em branco alguem me pode dizer como posso fazer que ele envie o a opção escolhida na combobox

#16 AndreLC

AndreLC

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 442 mensagens

Publicado 01 de Março de 2012 - 23:48

Ver Mensagemsalvador069, em 01 de Março de 2012 - 19:59, disse:

como é que eu faço esse echo que estão a indicar, pois umas vezes aparece -123 e outras 0 de valor.

cumprimentos

Ao fazeres echo de uma variável estás a exibir o seu resultado.

Para veres os dados que colocaste no form.

Exemplo;

Código (PHP):
echo $nome;    
echo $telefone;
echo $telemovel;
echo $email;    
echo $morada;    
echo $cp4;      
echo $cp3;        
echo $localidade;
echo $frachab;  
echo $fraccom;  
echo $garagens;  
echo $mensagem;  
echo $assunto;


#17 AndreLC

AndreLC

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 442 mensagens

Publicado 02 de Março de 2012 - 00:02

Ver Mensagemsalvador069, em 01 de Março de 2012 - 21:17, disse:

boas a todos e obrigado pela ajuda que me tem dado, venho informar que já consegui que os dados fossem enviados só que o campo Garagens que eu tenho em html é uma combobox e o valor no php ou não é lido, ele quando se envia o email o campo aparece em branco alguem me pode dizer como posso fazer que ele envie o a opção escolhida na combobox

Qual era o problema? Explica como resolveste.

Estás a fazer:

Código (PHP):
$garagens   = $_POST["garagens"]; // este campo é um dropdown de escolha entre sim e não

Portanto, no select basta ter o name como garagens, isto é:

Código (HTML):
<select name="garagens">
    <option value="0" selected="selected">Seleccione uma opção</option>
    <option value="1">Sim</option>
    <option value="2">Não</option>
</select>


#18 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 02 de Março de 2012 - 00:13

boas

venho pedir aos moderadores que podem fechar o topico já consegui fazer o que queria, e MUITO OBRIGADO A TODOS os que tentaram ajudar-me

cumprimentos

#19 acao

acao

    CRLF

  • Membro
  • PipPipPipPipPip
  • 750 mensagens

Publicado 02 de Março de 2012 - 09:52

podes ser tu a fazer.
http://www.portugal-a-programar.pt/index.php?showtopic=25902

#20 salvador069

salvador069

    null

  • Membro
  • Pip
  • 13 mensagens

Publicado 02 de Março de 2012 - 23:19

boas

a resolução foi facil quando estava a mandar codigo postal: $cp4 "-" $cp3 "-" localidade não podia estar a usar "-" bastava so por $cp4 $cp3 $localidade

depois deu logo.

queria ja agora tirar uma duvida como faço para ter um campo de anexos *.doc *.docx e *.pdf no HTML e fazer o attach no envio do email em PHP

cumprimentos