Login: Senha: Registrar-se - Esqueci minha senha
.: Menu
Home
Artigos
Sign. dos Sonhos
Papel de Parede
Ilusões de Ótica
.: Bancos
Emoticons e Gifs
Ícones
Logos
.: Serviços
Mural de Recados
Usuários Online
Bloco de Notas
Formmail
Meu IP
.: Geradores
Gerador de Senhas
Barra de Rolagem
Recomende
Pop-up
Inverter Link
.: Canais
Apostilas
Arte/Cultura
Blog
Busca
Celular
Downloads
E-mail Grátis
Emoticons
Esportes
Filmes
Flogs
Fontes
GTA Mods
Host Grátis
Humor
Infantil
Informática
Jogos
Jogos Online
Linux
Músicas
Notícias
Offline
Redirecionadores
Sites Parceiros
Webdesigners
Webmasters
.: Na Faixa
Sobre
Contato
Recomende-nos
Termos de uso

Formmail com anexo

Enviado em 01/02/2007 - 05:06
Fonte: A A A A

Página do Formulário:
Essa é uma página simples e nem preciso explicar, ela só tem um Javascript no começo que verifica se os campos necessários foram preenchidos e o resto é XHTML com CSS.


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script language="JavaScript" type="text/JavaScript">

function checa_formulario(email){

if (email.nome.value == ""){
alert("Por Favor nao deixe o seu nome em branco!!!");
  email.nome.focus();
return (false);
}

if (email.email_from.value == ""){
alert("Por Favor nao deixe o seu email em branco!!!");
  email.email_from.focus();
return (false);
}

if (email.email.value == ""){
alert("Nao deixe o email destinatario em branco!!!");
  email.email.focus();
return (false);
}

if (email.assunto.value == ""){
alert("Nao deixe o assunto em branco!!!");
  email.assunto.focus();
return (false);
}

}
</script>


<title>Formulário de Envio de Email</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
<!--
.titulo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: bold;
color: #003399;
}
.texto {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #000000;
border: thin dashed #CCCCCC;
}
-->
</style>
</head>

<body onload="document.email.nome.focus();">
<table width="500" height="128" border="0" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
  <tr>
    <td height="21"><p class="titulo">Formul&aacute;rio de Envio de Email</p></td>
  </tr>
  <tr>
    <td height="107">
<form action="envia.php" method="post" enctype="multipart/form-data" name="email" id="email" onsubmit="return checa_formulario(this)">
  <table width="500" border="0" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC" class="texto">
        <tr>
          <td width="250" height="20" align="center" valign="middle">Seu nome:
              <input name="nome" type="text" id="nome" size="25" /></td>
          <td width="250" height="30" align="center" valign="middle">Seu email:
              <input name="email_from" type="text" id="email_from" size="25" /></td>
        </tr>
        <tr align="center" valign="middle">
          <td height="30" colspan="2">Email do destinat&aacute;rio:
              <input name="email" type="text" id="email" size="56" /></td>
        </tr>
        <tr align="center" valign="middle">
          <td height="30" colspan="2">Assunto:
              <input name="assunto" type="text" id="assunto" size="68" /></td>
        </tr>
        <tr align="center" valign="middle">
          <td height="100" colspan="2">Mensagem:
            <textarea name="mensagem" cols="50" rows="5" id="mensagem"></textarea></td>
        </tr>
        <tr align="center" valign="middle">
          <td height="30" colspan="2">Arquivo:
              <input name="arquivo" type="file" id="arquivo" size="48" /></td>
        </tr>
        <tr align="center" valign="middle">
          <td height="28" colspan="2"><input name="enviar" type="submit" id="enviar" value="Enviar" />
            <input name="apagar" type="reset" id="apagar" value="Apagar" /></td>
        </tr>
      </table>
 
    </form>     
    </td>
  </tr>
</table>
</body>
</html>


Agora a página de envio. (nomei-a como envia.php ou altere a página acima)
Página de Envio


<?
//pega os dados enviados pelo usuário
$nome        = $_POST["nome"];
$body        = $_POST["mensagem"];
$to        = $_POST["email"];
$from    = $_POST["email_from"];
$subject  = $_POST["assunto"];
$attach  = $_FILES["arquivo"]["tmp_name"];
$attach_name  = $_FILES["arquivo"]["name"];
$attach_size  = $_FILES["arquivo"]["size"];
$attach_type  = $_FILES["arquivo"]["type"];


//verifica se o email do destinatário é válido
if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $to)){

echo"<center>Digite um email valido</center>";
echo "<center><a href=\"java script:history.go(-1)\">Voltar</center></a>";
exit;

}

//verifica se o email do remetente é válido
if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $from)){

echo "<center>Digite um email valido</center>";
echo "<center><a href=\"java script:history.go(-1)\"><center>Voltar</center></a>";
exit;

}


//define os headers de envio
$mailheaders = "From: \"$nome\" <$from>\r\n";
$mailheaders .= "Reply-To: $from\n";

//e define a mensagem tirando barras para evitar problemas no script
$msg_body = stripslashes($body);


//verifica se tem arquivo anexo, o if é se tiver e o else se não tiver anexo
if ($attach !=null)
{

//abre o arquivo para codificá-lo no formato de email
$file = fopen($attach, "r");
$contents = fread($file, $attach_size);
$encoded_attach = chunk_split(base64_encode($contents));
fclose($file);

//define os headers do anexo e da mensagem
$mailheaders .= "MIME-version: 1.0\n";
$mailheaders .= "Content-type: multipart/mixed; ";
$mailheaders .= "boundary=\"Message-Boundary\"\n";
$mailheaders .= "Content-transfer-encoding: 7BIT\n";
$mailheaders .= "X-attachments: $attach_name";

$body_top = "--Message-Boundary\n";
$body_top .= "Content-type: text/plain; charset=US-ASCII\n";
$body_top .= "Content-transfer-encoding: 7BIT\n";
$body_top .= "Content-description: Mail message body\n\n";

$msg_body = $body_top . $msg_body;

$msg_body .= "\n\n--Message-Boundary\n";
$msg_body .= "Content-type: $attach_type; name=\"$attach_name\"\n";
$msg_body .= "Content-Transfer-Encoding: BASE64\n";
$msg_body .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
$msg_body .= "$encoded_attach\n";
$msg_body .= "--Message-Boundary--\n";

//envia o email para as variáveis já definidas e tratadas e mostra mensagem de sucesso
mail($to, stripslashes($subject), $msg_body, $mailheaders);
echo"Enviado com Sucesso!";
echo"<br>";
echo"<a href=\"home.php\">Voltar para página Principal</a>";
}
else{

//se não tiver anexo ele envia só a mensagem com esses headers
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: \"$nome\" <$from>\r\n";

mail($to, stripslashes($subject), $msg_body, $mailheaders);
echo"Enviado com Sucesso!";
echo"<br>";
echo"<a href=\"home.php\">Voltar para página Principal</a>";
}
?>



Bom, o código tá cheio de comentários (que eu fiz questão de formatar na mão mesmo pra ficar mais fácil de visualizar). Mesmo assim vamos lá:

Essa página recebe os dados e coloca em variáveis (parte do $_POST), depois verifica através do comando "ereg" os caracteres para evitar que pessoas coloquem emails inválidos. Ae é executada uma condicional (if), ou seja, se a variável $attach tiver valor (!=null, != significa diferente e null é considerado nulo, no caso ela tem que ser diferente de nulo) ele abre o arquivo e codifica com o base_encode64 que é o formato dos emails e adiciona os headers (cabeçalhos) na mensagem enviando através da função mail() e exibe mensagem de sucesso. Mas no caso de não existir anexo ele simplesmente colocar os cabeçalhos de uma mensagem normal e envia.

Retirado do site: wmonline.com.br 

Enviado por: brunohcs

Postado em: PHP

Esse artigo foi visualizado 6774 vezes

Compartilhe este artigo
facebook del.icio.us rec6 digg
Recomende este artigo a um amigo


Voltar
>> Comentários
 
Related Posts Plugin for WordPress, Blogger...
Comentar
Bruno Miranda Coment: Cara parabéns, muito bom!! funcionou certinho!!!
 
veteranix Coment: parabéns, funcionou perfeito!!!
 
welton Coment: parabéns.. muiot bom
 
Tubarão Coment: Olá vc esta de parabéns pelo o artigo, mais gostaria de saber se nesse seu codigo tem como especificar o tipo de arquivo e o tamanho. Por exemplo: Arquivo: jpeg Tamanho: 3mb
 
Oseias Coment: Mas depois de enviar a mensagem ai tem um problemas, voltar para Home.php, mas e se eu quizer por ali nesse campo index.html ou qualquer outra coisa funciona? ou como deveria ser
 
jackson Coment: Onde coloco o email que vai receber os dados que forem preenchidos?
 
Murilo Coment: em onde coloco meu email para envio
 
Michel Coment: Parabéns, estava pesquisando fazia 2 dias, testei um monte , esse seu é ótimo !
 
Tito Lívio Coment: Pesquisando no Google achei seu artigo, e posso dizer que foi um dos melhores que já vi (para quem quer realmente aprender) quanto ao script PHP para formulário. Muito bom saber que vale apena pesquisar e encontrar artigos como este. Parabéns!
 
Bruno Coment: Veja se você nao escreveu algo errado ou altero, copie o codigo de novo aqui por que eu já usei e deu certinhu!!..

t+
 
Luís Fernando Coment: Não to conseguindo fazer funcionar, dá erro na linha 55 do envia.php
se alguém souber como me ajudar, ficarei muito grato!
meu e-mail é: [email protected]
 
Buscar Artigos:
.: Mods de GTA
GTA SA, VC, IV
SA - Carros
IV - Carros
Mods
GTA IV
SA - Mods Cleo
.: Saúde
Calculadora de IMC
Peso Ideal
Artigos de Saúde
.: Jogos Online
Ação
Aventura
Cassino
Classicos
Colorir
Corrida
Educativos
Esporte
Estrategia
Infantil
Luta
Meninas
Nave
Tiro
Outros
Adulto
Top Jogos
.: Parceiros
Mural de Recados Grátis
Papel de Parede
Show Moto
Web Visual
.: Nossos Números
Artigos: 931
Categorias: 51
Comentarios: 1863
Usuarios: 26704
Blocos de Nota: 87
Canais: 169

website monitoring service
eXTReMe Tracker
Na Faixa.net - Todos os direitos reservados. 12/2003 - 11/2024
Leia nossos Termos de Uso - Política de Privacidade
Desenvolvido por Web Visual
Crie seu Site - Papel de Parede Grátis - Show Moto - Mural de Recados Grátis - Dicas10