Ir para conteúdo
Fórum Script Brasil
  • 0

Formulario de Email com Anexo (autor: fabyo)


Fabriciovasco

Pergunta

Formulario de Email com Anexo

Como tem bastante usuarios com duvidas em envio de email

eu fiz esse formulario que envia email com anexo,e validação de email

email.html

<html>

<head>

<script language="javascript">

function checa_formulario(email){

if (email.nome.value == ""){

  alert("Por Favor não deixe o seu nome em branco!!!");

   email.nome.focus();

return (false);

}

if (email.email_from.value == ""){

  alert("Por Favor não deixe o seu email em branco!!!");

   email.email_from.focus();

return (false);

}

if (email.email.value == ""){

  alert("não deixe o email destinatario em branco!!!");

   email.email.focus();

return (false);

}

if (email.assunto.value == ""){

  alert("não deixe o assunto em branco!!!");

   email.assunto.focus();

return (false);

}

}

</script>

<title>Enviando texto</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css">

<!--

.email {

text-transform: lowercase;

}

.texto {

color: #0000FF

}

.style1 {color: #FF0000}

-->

</style>

</head>

<body onLoad="document.email.nome.focus();">

<form onsubmit="return checa_formulario(this)" action="envia.php" method="post" enctype="multipart/form-data" name="email">

  <h1 align="center" class="style1">Formulario de email com anexo </h1>

  <table width="32%"  border="0" align="center">

    <tr>

      <td><div align="right"><span class="texto">Nome</span></div></td>

      <td><input name="nome" type="text" id="nome"></td>

    </tr>

    <tr>

      <td width="33%"><div align="right" class="texto">De:</div></td>

      <td width="67%"><input name="email_from" type="text" class="email"></td>

    </tr>

    <tr>

      <td><div align="right" class="texto">Para</div></td>

      <td><input name="email" type="text" class="email">

    </tr>

    <tr>

      <td><div align="right" class="texto">Assunto</div></td>

      <td><input name="assunto" type="text" id="assunto"></td>

    </tr>

    <tr>

      <td><div align="right" class="texto">Mensagem</div></td>

      <td><textarea name="mensagem" cols="50" rows="10" id="mensagem"></textarea></td>

    </tr>

    <tr>

      <td><div align="right" class="texto">Anexo</div></td>

      <td><input name="arquivo" type="file"></td>

    </tr>

    <tr>

      <td>&nbsp;</td>

      <td><input type="submit" name="Submit" value="Enviar"></td>

    </tr>

  </table>

</form>

</body>

</html>

envia.php

<?php

//pego os dados enviados pelo formulario

$nome       = $_POST["nome"];

$email      = $_POST["email"];

$mensagem   = $_POST["mensagem"];

$assunto    = $_POST["assunto"];

$email_from = $_POST["email_from"];

//formato o campo da mensagem

$mensagem   = wordwrap( $mensagem, 50, "<br>", 1);

//valido os emails

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])?$", $email)){

echo"<center>Digite um email valido</center>";

echo "<center><a href=\"javascript:history.go(-1)\">Voltar</center></a>";

exit;

}

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])?$", $email_from)){

echo "<center>Digite um email valido</center>";

echo "<center><a href=\"javascript:history.go(-1)\"><center>Voltar</center></a>";

exit;

}

$arquivo = isset($_FILES["arquivo]) ? $_FILES["arquivo"] : FALSE;

if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){

$fp = fopen($_FILES["arquivo"]["tmp_name"],"rb");

$anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"]));          

$anexo = base64_encode($anexo);

fclose($fp);

$anexo = chunk_split($anexo);

$boundary = "XYZ-" . date("dmYis") . "-ZYX";

    $mens = "--$boundary\n";

    $mens .= "Content-Transfer-Encoding: 8bits\n";

    $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain

    $mens .= "$mensagem\n";

    $mens .= "--$boundary\n";

$mens .= "Content-Type: ".$arquivo["type"]."\n";

$mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";

$mens .= "Content-Transfer-Encoding: base64\n\n";

$mens .= "$anexo\n";

$mens .= "--$boundary--\r\n";

$headers  = "MIME-Version: 1.0\n";

$headers .= "From: \"$nome\" <$email_from>\r\n";

$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";

$headers .= "$boundary\n";

//envio o email com o anexo   

mail($email,$assunto,$mens,$headers);

echo"Email enviado com Sucesso!";

}

//se não tiver anexo

else{

$headers  = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: \"$nome\" <$email_from>\r\n";

//envia o email sem anexo

mail($email,$assunto,$mensagem, $headers);

echo"Email enviado com Sucesso!";

}

 

?>

valeu querido muito legal...você ta colocando o código ..isso ajuda muita gente que as vezes boia com os códigos, to vendo esse seu anexo mais como faço para configurar o envio, pra onde vai e-mail essas coisas como faço se puder mandar explicadinho te agradeço... Valeu...

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
ta la no email.html você coloca o seu email e o email pra quem você quer mandar

sua duvida é em relação a configuração do smtp no php.ini ?

qualquer duvida posta ai

Desculpa cara é que eu to começando com essa história de PHP e to muito fraco ainda....o meu provedor é o BIGHOST e ele me da suporte a php o que eu devo fazer? E onde fica o php.ini e smtp?

Valeu descupa a ignorancia...

Link para o comentário
Compartilhar em outros sites

  • 0

entra no php.ini e ache essas linhas:

[mail function]
; For Win32 only.
SMTP = smtp.seu_server.com.br
smtp_port = 25

; For Win32 only.
sendmail_from = seu_email

mude para seu smtp e coloque seu email e reinicie o serviço do apache

poste o resto da suas duvidas

Link para o comentário
Compartilhar em outros sites

  • 0
entra no php.ini e ache essas linhas:

[mail function]
; For Win32 only.
SMTP = smtp.seu_server.com.br
smtp_port = 25

; For Win32 only.
sendmail_from = seu_email

mude para seu smtp e coloque seu email e reinicie o serviço do apache

poste o resto da suas duvidas

sei que estou sendo chato pra caramba , mas eu não tenho o apache aqui eu to hospedando ele em um provedor (Bighost) é que eu tenho que fazer isso? Como??

Link para o comentário
Compartilhar em outros sites

  • 0

dai não precisa mecher com isso

só usar o script ,mas verifique seu servidor de hospedagem se ele não bloqueia esse sistema, pois tem sistemas em linux que não aceitam certas coisas como por exemplo se você mandar um email sem o remetente ele não aceita

de resto só usar o script mesmo

qualquer duvida poste ai

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...