-
Conteúdo Similar
-
Por juninhogpe
Bom dia.
Pessoal encontrei um script na internet para criar um formulário de contato/pedido de orçamento com possibilidade de envio de anexo.
Consegui executar o script normalmente.
O meu problema é que quando não tenho anexo o formulário chega em branco no e-mail, ou seja, mesmo preenchendo todos os campos e não colocando anexo chega todo em branco e se colocar o anexo chega correto.
Abaixo segue o script:
<?php //Pega os dados postados pelo formulário HTML e os coloca em variaveis if (preg_match('/criativaguaxupe.com.br$/', $_SERVER[HTTP_HOST])) { //substitua na linha acima a aprte locaweb.com.br por seu domínio. $email_from='email@email.com'; // Substitua essa linha pelo seu e-mail@seudominio }else { $email_from = "contato@" . $_SERVER[HTTP_HOST]; // Na linha acima estamos forçando que o remetente seja 'webmaster@', // você pode alterar para que o remetente seja, por exemplo, 'contato@'. } if( PATH_SEPARATOR ==';'){ $quebra_linha="\r\n"; } elseif (PATH_SEPARATOR==':'){ $quebra_linha="\n"; } elseif ( PATH_SEPARATOR!=';' and PATH_SEPARATOR!=':' ) {echo ('Esse script não funcionará corretamente neste servidor, a função PATH_SEPARATOR não retornou o parâmetro esperado.'); } //pego os dados enviados pelo formulário $sistema = $_POST["sistema"]; $nome = $_POST["nome"]; $endereco = $_POST["endereco"]; $estado = $_POST["estado"]; $cidade = $_POST["cidade"]; $email = $_POST["email"]; $residencial = $_POST["residencial"]; $comercial = $_POST["comercial"]; $celular = $_POST["celular"]; $tipo_estabelecimento = $_POST["tipo_estabelecimento"]; $comentarios = $_POST["comentarios"]; $email = 'email@email.com'; //formato o campo da mensagem $mensagem = wordwrap( $mensagem, 50, "<br>", 1); //valido os emails if (!preg_match("^([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; } $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" . $quebra_linha . ""; $mens .= "Content-Transfer-Encoding: 8bits" . $quebra_linha . ""; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"" . $quebra_linha . "" . $quebra_linha . ""; //plain $mens .= "Tipo de sistema: $sistema" . $quebra_linha . ""; $mens .= "<br>Nome: $nome" . $quebra_linha . ""; $mens .= "<br>Endereço: $endereco" . $quebra_linha . ""; $mens .= "<br>Estado: $estado" . $quebra_linha . ""; $mens .= "<br>Cidade: $cidade" . $quebra_linha . ""; $mens .= "<br>E-mail: $email" . $quebra_linha . ""; $mens .= "<br>Telefone Residencial: $residencial" . $quebra_linha . ""; $mens .= "<br>Telefone Comercial: $comercial" . $quebra_linha . ""; $mens .= "<br>Telefone Celular: $celular" . $quebra_linha . ""; $mens .= "<br>Tipo de Estabelecimento: $tipo_estabelecimento" . $quebra_linha . ""; $mens .= "<br>Comentários: $comentarios" . $quebra_linha . ""; $mens .= "$mensagem" . $quebra_linha . ""; $mens .= "--$boundary" . $quebra_linha . ""; $mens .= "Content-Type: ".$arquivo["type"]."" . $quebra_linha . ""; $mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"" . $quebra_linha . ""; $mens .= "Content-Transfer-Encoding: base64" . $quebra_linha . "" . $quebra_linha . ""; $mens .= "$anexo" . $quebra_linha . ""; $mens .= "--$boundary--" . $quebra_linha . ""; $headers = "MIME-Version: 1.0" . $quebra_linha . ""; $headers .= "From: $email_from " . $quebra_linha . ""; $headers .= "Return-Path: $email_from " . $quebra_linha . ""; $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"" . $quebra_linha . ""; $headers .= "$boundary" . $quebra_linha . ""; //envio o email com o anexo mail($email,$assunto,$mens,$headers, "-r".$email_from); echo"Email enviado com Sucesso!"; } //se nao tiver anexo else{ $headers = "MIME-Version: 1.0" . $quebra_linha . ""; $headers .= "Content-type: text/html; charset=iso-8859-1" . $quebra_linha . ""; $headers .= "From: $email_from " . $quebra_linha . ""; $headers .= "Return-Path: $email_from " . $quebra_linha . ""; //envia o email sem anexo mail($email,$assunto,$mensagem, $headers, "-r".$email_from); echo"Email enviado com Sucesso!"; } ?> Agradeço desde já a ajuda de todos.
Obrigado.
-
Por gsumaris
Bom gente, preciso de ajuda com um formulário de contato que estou usando.
Sempre utilizei ele e nunca tive problemas, mas agora não consegui fazer funcionar.
Seguinte, preencho todos os campos e envio, funciona normal, vai para página de mensagem enviada com sucesso porem quando abro o e-mail de destino a mensagem não chega.
O código é bem simples...
Formulário:
<form id="form" action="enviar.php" method="post"> <div style="width:210px; float:left;"> <input id="name" placeholder="Digite seu nome" style="outline:0; border:none; width:210px; height:27px; padding:5px; color:#F00; margin-bottom:10px;"/> <input id="phone" placeholder="Digite seu telefone" style="outline:0; border:none; width:210px; height:27px; padding:5px; color:#F00; margin-bottom:10px;"/> <input id="email" placeholder="Digite seu e-mail" style="outline:0; border:none; width:210px; height:27px; padding:5px; color:#F00; margin-bottom:10px;"/> <input id="assunto" placeholder="Digite seu assunto" style="outline:0; border:none; width:210px; height:27px; padding:5px; color:#F00; margin-bottom:10px;"/> </div> <div style="float:left; margin-left:20px;"> <textarea id="message" placeholder="Digite sua mensagem:" style="font-family:Calibri; font-size:14px; outline:0; border:none; padding:5px; width:360px; height:130px;"></textarea> </div> <div style="width:370px; background:#FFF; height:38px; display:table; margin-left:20px; float:left; text-align:center;"> <span style="border-top:dotted #d6071b 2px; width:270px; display:table; margin:auto;"></span> <input type="submit" value="ENVIAR" style="outline:0; border:none; background:#FFF; font-size:14px; color:#d6071b; font-weight:bold; margin-top:10px;" /> </div> </form> Enviar.php:
<?php // Passando os dados obtidos pelo formulário para as variáveis abaixo header('Content-Type: text/html; charset=utf-8'); $nomeremetente = $_POST['name']; $emailremetente = trim($_POST['email']); $emaildestinatario = 'teste@mobiliariosurban.com.br'; // Digite seu e-mail aqui, lembrando que o e-mail deve estar em seu servidor web $assunto = $_POST['assunto']; $telefone = $_POST['phone']; $mensagem = $_POST['message']; /* Montando a mensagem a ser enviada no corpo do e-mail. */ $mensagemHTML = '<P>Contato via site:</P> <p><b>Nome:</b> '.$nomeremetente.' <p><b>Assunto:</b> '.$assunto.' <p><b>E-Mail:</b> '.$emailremetente.' <p><b>Telefone:</b> '.$telefone.' <p><b>Mensagem:</b> '.$mensagem.'</p> <hr>'; // O remetente deve ser um e-mail do seu domínio conforme determina a RFC 822. // O return-path deve ser ser o mesmo e-mail do remetente. $assunto = '[CONTATO] TESTE'; $headers = "MIME-Version: 1.1\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; $headers .= "From: $emailremetente\r\n"; // remetente $headers .= "Return-Path: $emaildestinatario \r\n"; // return-path $envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers); if($envio) echo "<script>location.href='sucess.html'</script>"; // Página que será redirecionada ?> OBS: Estou usando uma hospedagem da Locaweb
-