Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Negrao.Felipe

Textarea PHP para enviar para email

Recommended Posts

Olá,

 

Estou tendo um problema.

Tenho um formulário que capta algumas informações e depois envia o email

O meu código envia o email perfeitamente somente o textarea que não consigo enviar.

 

formulario.php:

<form method="POST" action="envio.php" target="central">

<fieldset><legend> Entre com seus dados: </legend>

<p><b>Nome:*</b> <input type="text" name="nome" size="20" maxlength="40" /></p>

<p><b>Email:*</b> <input type="text" name="email" size="40" maxlength="60"/></p>

<p><b>Telefone:*</b> <input type="text" name="tel" size="20" maxlength="13" /></p>

<p><b>Assunto:*</b> <input type="text" name="assunto" size="60" maxlength="70" /></p>

<p><b>Seu Email:*</b><br /><textarea name="corpo" rows="10" cols="55"></textarea></p><br />

</fieldset>

<div align="center"><input type="submit" name="submit" value="Enviar" /></div>

</form>

envio.php:

<?php

$emailenviar="negrao@localhost.com";

$nome=$_POST['nome'];

$email=$_POST['email'];

$tel=$_POST['tel'];

if(!empty($_POST['assunto'])){

$assunto=$_POST['assunto'];

}else{$assunto=NULL;}

if(!empty($_POST['corpo'])){

$corpo=$_POST['corpo'];

}else{$corpo=NULL;}

$mensagem =

"Nome: $nome

Email: $email

Telefone: $tel

Texto:

$corpo";

$mensagem = wordwrap($mensagem, 69);

mail($emailenviar,$assunto,$mensagem,'from: contato@site.com');

echo "Mensagem Enviada !!!";

?>

Mas quando chega o email ele aparece somente assim:

Nome: (o que foi escrito no campo nome)

Email: (o que foi escrito no campo email)

Telefone: (o que foi escrito no campo Telefone)

Texto: (vem em branco)

 

O que pode estar acontecendo?? Somente no textarea que ele não consegue pegar o texto e passar para a variável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você der um var_dump, o conteúdo do textarea aparece aí?

var_dump($mensagem);

 

Eu testei aqui com o seu código e apareceu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça primeiro os post, depois as condiçoes:

 

$nome=$_POST['nome'];
$email=$_POST['email'];
$tel=$_POST['tel'];
$assunto=$_POST['assunto'];
$corpo=$_POST['corpo'];

//depois faz as condicoes...

 

Continua com o mesmo erro :upset:

 

Se você der um var_dump, o conteúdo do textarea aparece aí?

var_dump($mensagem);

 

Eu testei aqui com o seu código e apareceu.

 

Não, ele aparece NULL.

 

Se eu dou um echo $corpo a mensagem aparece, mas ela é pega nas condições falando que é vazia :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comente essas duas linhas para fazer um teste:

//if(!empty($_POST['corpo'])){ // comentar essa
$corpo=$_POST['corpo']; // <- deixar somente essa
//}else{$corpo=NULL;} // e comentar essa

 

ou valide dessa forma:

 

if($_POST['corpo']!= ""){
$corpo=$_POST['corpo'];
}else{$corpo=NULL;}

 

 

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comente essas duas linhas para fazer um teste:

//if(!empty($_POST['corpo'])){ // comentar essa
$corpo=$_POST['corpo']; // <- deixar somente essa
//}else{$corpo=NULL;} // e comentar essa

 

ou valide dessa forma:

 

if($_POST['corpo']!= ""){
$corpo=$_POST['corpo'];
}else{$corpo=NULL;}

 

At+

 

Eu troquei a forma de validação.

Da esse erro Undefined index: $corpo

 

Quando eu tiro a forma de validação p/ esse campo ele funciona tranquilo. Manda o email com tudo certo.

 

O erro está na validação, mas não sei como corrigir.

 

Tentei fazer a validação assim:

$corpo=$_POST['corpo'];
if(empty ($_POST['$corpo'])){
  echo "<br>Escreva uma mensagem no email</br>";
  $erro=1;
}

 

mas continua dando erro, diz que o $corpo esta nulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

No seu HTML, troque o nome do textarea para

<textarea name="testecorpo"></textarea>

, apenas para testarmos. Não esqueça de trocar também no script de recebimento dos dados.

 

"Undefined index", quer dizer que não está encontrando no array essa chave.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você usou desta forma?

if($_POST['corpo']!= ""){ 
  $corpo=$_POST['corpo']; 
}else{
  $corpo=NULL;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continua com o mesmo erro :upset:

 

 

 

Não, ele aparece NULL.

 

Se eu dou um echo $corpo a mensagem aparece, mas ela é pega nas condições falando que é vazia :wacko:

 

 

Realmente muito estranho. Está parecendo que o problema é no ambiente, e talvez não no seu código. Tente em outro servidor e com outro navegador.

 

Aproveite e deixe todas as variáveis assim:

$var = @$_POST['campo'];

 

O '@' irá evitar erros do tipo 'Undefined index'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, ai continua com erro

olha como já está meu código

formulario.php

<form method="POST" action="envio.php" target="central">
   	<fieldset><legend> Entre com seus dados: </legend>
       	<p><b>Nome:*</b> <input type="text" name="nome" size="20" maxlength="40" value="<?php if(isset($_POST['nome'])) echo $_POST['nome']?>" /></p>
           <p><b>Email:*</b> <input type="text" name="email" size="40" maxlength="60" value="<?php if(isset($_POST['email'])) echo $_POST['email']?>"/></p>
           <p><b>Telefone:*</b> <input type="text" name="tel" size="20" maxlength="13" value="<?php if(isset($_POST['tel'])) echo $_POST['tel'] ?>"/></p>
           <p><b>Assunto:*</b> <input type="text" name="assunto" size="60" maxlength="70" value="<?php if(isset($_POST['assunto'])) echo $_POST['assunto'] ?>" /></p>
           <p><b>Seu Email:*</b><br /><textarea name="testecorpo" rows="10" cols="55"><?php if(isset($_POST['testecorpo'])) echo $_POST['testecorpo'] ?></textarea></p><br />
       </fieldset>
       <div align="center"><input type="submit" name="submit" value="Enviar"  /></div>
</form>

envio.php

<?php
var_dump($_POST)
//Recebimento das variaveis
$nome=@$_POST['nome'];
$email=@$_POST['email'];
$tel=@$_POST['tel'];
if (@$_POST['assunto']!=""){
	$assunto=@$_POST['assunto'];
}else{$assunto=NULL;}
if (@$_POST['testecorpo']!=""){
	$corpo=@$_POST['testecorpo'];
}else {$corpo=NULL;}
$destino="negrao@localhost.com";
//---------------------------------------------------------------------------------------
//Tratamento de erro
$erro=0;
if(!preg_match("/^[a-z A-Z]+$/",$nome)){
	echo "<br>Escreva um Nome Válido (SOMENTE LETRAS)</br>";
	$erro=1;
}
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i",$email)){
	echo "<br>Escreva um email válido</br>";
	$erro=1;
}
if(!is_numeric($tel)){
	echo "<br>Escreva um Telefone valido (somente números)</br>";
	$erro=1;
}
if($assunto=NULL){
	echo "<br>Escreva um assunto para o email</br>";
	$erro=1;
}
if($corpo=NULL){
	echo "<br>Escreva uma mensagem no email</br>";
	$erro=1;
}
// Ação quando há erros
if($erro==1){
?>
<form method="POST" action="formulario.php" target="central">
	<input type="hidden" name="nome" value="<?php echo $_POST['nome'] ?>" />
       <input type="hidden" name="email" value="<?php echo $_POST['email'] ?>" />
       <input type="hidden" name="telefone" value="<?php echo $_POST['tel'] ?>" />
       <input type="hidden" name="assunto" value="<?php echo $_POST['assunto'] ?>" />
       <input type="hidden" name="corpo" value="<?php echo $_POST['testecorpo'] ?>" />
	<div align='center'><center><p>
	<input type='submit' value='Voltar' name='voltar' />
	</p></center></div>
   </form>
<?php      
// Ação quando não há erros 
}else{
//Envio do EMAIL   
	$mensagem = 
	"
	Nome: $nome
	Email: $email
	Telefone: $tel
	Texto:
	$corpo";

	$mensagem = wordwrap($mensagem, 69);

	mail($destino,$assunto,$mensagem,'from: contato@site.com');

	echo "Mensagem Enviada !!!";
	 }
?>

 

Ele não acusa erros, mas também não coloca os textos nas variáveis $corpo e nem $assunto.

Ele ate envia o email mas faltando o conteúdo dessas 2 variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara coloca assim para ver se funciona:

 

$nome=$_POST['nome'];
$email=$_POST['email'];
$tel=$_POST['tel'];
$assunto=$_POST['assunto'];
$corpo=$_POST['testecorpo'];
if ($_POST['testecorpo']==""){
    echo"<script>alert('Porfavor digite o texto');</script>";
 }

Cara aqui rodou certinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.