Ir para conteúdo

POWERED BY:

Arquivado

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

Marciano Franco

Envio de Formulário com anexo

Recommended Posts

Olá Galera!

 

Seguinte, tenho um código em PHP de envio de de formulário para sites em HTML e PHP, o sistema é muito simples, envia nome, e-mail, assunto, cidade, estado, etc...

Só que desta vez preciso que envie com um anexo junto, por exemplo um arquivo .doc .jpg .pptx .png enfim, com vários formatos.

Lembrando que o destinatário recebe tudo isso por e-mail, ou seja, o envio do anexo precisa ir junto para o e-mail e não salvo em alguma pasta do servidor.

Se alguém puder me ajudar ficaria muito grato, abaixo disponibilizo um link para download dos arquivos .php

 

http://goo.gl/dJWp8U

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... não vou baixar teus arquivos por questões de segurança. Melhor postar o código aqui.

 

Mas assim, a dica que eu dou, caso vc use PHPMailer é:

 

- Subir o arquivo num servidor

- Pegar o caminho dele em uma variavel

- Usar o comando $mail->AddAttachment($nomedoarquivo);

- Enviar o email

- Remover o arquivo do servidor

 

Ao menos eu faço isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria possível desta forma, pois não teria disponibilidade de sempre upar o arquivo no servidor.

 

Entendo as questões de segurança, então segue código:

<?php
$nome =		 		 utf8_decode($_POST['nome']);
$nascimento =		 utf8_decode($_POST['nascimento']);
$cpf = 				 $_POST['cpf'];
$email = 			 utf8_decode($_POST['email']);
$telefone = 		 $_POST['telefone'];
$endereco = 		 utf8_decode($_POST['endereco']);
$cep = 				 $_POST['cep'];
$pais =				 utf8_decode($_POST['pais']);
$estado = 			 utf8_decode($_POST['estado']);
$cidade = 			 utf8_decode($_POST['cidade']);

$local = utf8_decode('Endereço');

$creditos =  utf8_decode('Anexo online, Sistema desenvolvido por ...');
$ip =  utf8_decode('IP do Usuário');

if( $nome == true )
{
	$enviar = "seuemail@dominio.com.br";
	$cliente_ip = $_SERVER['REMOTE_ADDR'];
			
	$conteudo = 
	"Nome: $nome\r\n" .
	"Nascimento: $nascimento\r\n" .
	"CPF: $cpf\r\n" .
	"E-mail: $email\r\n" .
	"Telefone: $telefone\r\n" .
	"$local: $endereco\r\n" .
	"CEP: $cep\r\n" .
	"Estado: $estado\r\n" .
	"Cidade: $cidade\n\n" .
	
	"$ip: $cliente_ip" .
	
	"\n$creditos" .
	
	"\n\nVR PHP: PHP/" . phpversion();

	if( mail( $enviar, "Anexo online - $nome", $conteudo ) ) 
	{
		echo "Seu anexo foi enviado com sucesso!";
	}
	else
	{
		echo "success=no";
	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já Havia usado esses Scripts anteriormente, só que nenhum deles é preciso suficiente.

Se alguém tiver outra forma dentro dos scripts que tenho ficaria grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a classe phpmailer como já citado

 

Como essa simples função ele já envia o anexo.

if (isset($_FILES["arquivo"]) &&
    $_FILES["arquivo"]['error'] == UPLOAD_ERR_OK) {
    $mail->AddAttachment($_FILES['$_FILES["arquivo']['tmp_name'],
                         $_FILES['$_FILES["arquivo']['name']);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui! Deu certo agora, está enviando com anexo, apenas está dando erros ao enviar os outros campos, como nome, e-mail, assunto, etc, mas nisso eu me viro, agradeço todos por terem me ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

volto a dizer.... a melhor opção seria você usar o phpmailer, é super simples de usar, com poucas linhas de códigos, você envia o email com anexo.

 

Mais caso não queira usar o phpmailer, segue código para envio com anexo:

OBS: esse exemplo é da wiki da locaweb, mais eu já testei e tá funcionando normal..., ai é só você ajustar de acordo com a sua necessidade.

 

Index.html

<html>
<head>
<script language="javascript">
 
function checa_formulario(email){
if (email.nome_para.value == ""){
alert("Por Favor nao deixe o nome em branco!!!");
email.nome.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>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">Formulário de email com anexo </h1>
<table width="50%" border="0" align="center">
<tr>
<td><div align="right"><span class="texto">Nome do destinatario:</span></div></td>
<td><input name="nome_para" type="text" id="nome_para"></td>
</tr>
<tr>
<td><div align="right" class="texto">Email de destino</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> </td>
<td><input type="submit" name="Submit" value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>

envia.php

<?php
 
//Pega os dados postados pelo formulário HTML e os coloca em variaveis
if (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com, $_SERVER[HTTP_HOST])) {
//substitua na linha acima a aprte locaweb.com.br por seu domínio.
$email_from='email@seudominio';    // Substitua essa linha pelo seu e-mail@seudominio
}else {
$email_from = "email@" . $_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 
$nome_para = $_POST["nome_para"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];
$assunto = $_POST["assunto"];
//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;
 
}
 
$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 .= "$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!";
}
 
?>

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.