Ir para conteúdo

POWERED BY:

Arquivado

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

twpesquisa

[Resolvido] Envio de Anexo através do formulário do site.

Recommended Posts

Amigos,

 

tenho um script (abaixo) que serve para enviar e-mails com anexo através de um site. Tenho esse script funcionando em um servidor, ao utilizar o mesmo no servidor da UOLHOST, o e-mail é enviado porém o anexo "não chega" e no lugar do mesmo é exibido um monte de caracteres (abaixo) e assim impossibilitando do destinatário receber o anexo.

 

Alguém já passou por este problema e conseguiram resolver ?

Abri um chamado para a UOLHOST, mas já fazem 3 dias que relatei o problema e até agora não disseram nada.

 

 

Este é ó codigo fonte:

=================


<?
//Recebe dados do formulário
$Nome	= $_POST["Nome"];
$Email = $_POST["Email"];
$Cidade = $_POST["Cidade"];
$UF = $_POST["UF"];
$Comentario = $_POST["Comentario"];

//Dados do Email a ser enviado
$Para = "malliotti@hotmail.com.br";
$Assunto = "Teste de anexo.";

//Recebe o anexo
$tiposPermitidos= array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png');
// Tamanho máximo (em bytes)
//$tamanhoPermitido = 1024 * 500; // 500 Kb
$tamanhoPermitido = 4194304; //4mb

// O nome original do arquivo no computador do usuário
$arqName = $_FILES['arquivo']['name'];
// O tipo mime do arquivo. Um exemplo pode ser "image/gif"
$arqType = $_FILES['arquivo']['type'];
// O tamanho, em bytes, do arquivo
$arqSize = $_FILES['arquivo']['size'];
// O nome temporário do arquivo, como foi guardado no servidor
$arqTemp = $_FILES['arquivo']['tmp_name'];
// O código de erro associado a este upload de arquivo
$arqError = $_FILES['arquivo']['error'];

if($arqError == 0){
	// Verifica o tipo de arquivo enviado
       if (array_search($arqType, $tiposPermitidos) === false) {
           echo 'O tipo de arquivo enviado é inválido!';
       // Verifica o tamanho do arquivo enviado
       } else if ($arqSize > $tamanhoPermitido) {
           echo 'O tamanho do arquivo enviado é maior que o limite!';
       // Não houveram erros, move o arquivo
       } else {
		$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";
		$Corpo = "--$boundary\n";
		$Corpo .= "Content-Transfer-Encoding: 8bits\n";
		$Corpo .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain
		/*Campos do formulario*/
		$Corpo .= "$Nome<br>";
		$Corpo .= "$Email<br>";
		$Corpo .= "$Cidade<br>";
		$Corpo .= "$UF<br>";
		$Corpo .= "$Comentario<br>";
		/*Campos do formulario*/
		$Corpo .= "--$boundary\n";
		$Corpo .= "Content-Type: ".$arqName["type"]."\n";
		$Corpo .= "Content-Disposition: attachment; filename=\"".$arqName["name"]."\"\n";
		$Corpo .= "Content-Transfer-Encoding: base64\n\n";
		$Corpo .= "$Anexo\n";
		$Corpo .= "--$boundary--\r\n";
		$Headers = "MIME-Version: 1.0\n";
		$Headers .= "From: \"$Nome\" <$Email>\r\n";
		$Headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";
		$Headers .= "$boundary\n";

		mail($Para,$Assunto,$Corpo,$Headers);
		echo"Mensagem enviada com sucesso.";
	}
}else{
	echo"não foi possível enviar sua mensagem.";
}

?>

 

 

Este é o e-mail recebido.

====================

julio<br style="font-family: 'Times New Roman'; font-size: medium; ">malliotti@hotmail.com.br<br style="font-family: 'Times New Roman'; font-size: medium; ">porto alegre<br style="font-family: 'Times New Roman'; font-size: medium; ">rs<br style="font-family: 'Times New Roman'; font-size: medium; ">teste<br style="font-family: 'Times New Roman'; font-size: medium; ">--XYZ-070720125528-ZYX Content-Type: D Content-Disposition: attachment; filename="D" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAQEB AQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL/2wBDAQEBAQEBAQICAgICAgICAgICAgIC AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL/wAARCAJYAyADAREA AhEBAxEB/8QAHwAAAgICAwEBAQAAAAAAAAAABQYEBwMIAgkKAAEL/8QATxAAAgIBAwMDAgQEBQEG AgEVAQIDBAUGERIAEyEHIjEIFCMyQVEJFUJhFiQzUnGBFzRDYpGhJXKxClOCweHwGCZE0fEZNWM2 c4OSRVTC/8QAHQEAAgIDAQEBAAAAAAAAAAAABAUDBgECBwAICf/EAEoRAAEDAgQDBQYFAwMDBAAC CwEAAgMEEQUSITEGQVETImFx8AcUMoGRoSOxwdHhFULxCDNSFmJyJEOCkhc0UxglRGOywtJzg6L/ 2gAMAwEAAhEDEQA/APSNc/hg+hGcyz5NNca1yNXtGGHH5g0rljHt3VmQRZOqa9nto25jWRXMRP4b /v1yL2k49GyxcHD14JC3hjBIgcsWUuFjbbfzV1aZ+kjVukKVfE4b1Sj1npqrVuVUw+vbWWr5R6dp Ox/L7uWgBW3DEOIj7sazKFA7p23MrOPnOlu6N2+7bH9VX5+BcOGbIfi6+KraL6Z/XPRk9rI6dxWK t14JJpMLBitQYLPSBJUKNAkl6OjYO42CCRpO2Aq8iRy6sLPaDg9WMr2uGnezNI26Kr1HAeKQtJjl b4Ab+Sw4XVn1HaWlgpay0PrA0zOyC/NoHJqEoxbpYiu2tPG7A434v3OB3QM3H469U4pwvVWyStzH W2ZRs4e4mpg2wLhzKzWfWD07tZapY1BovTlyeuVSS5Jhu5YDTybRtNQsxV7QAMYKy9vww4gh/aYB FFI2zJrX8QiG1eJ0kfejc61+SRKnr56J5XVV/BQVqWBlaGYZK3j9VZHTstSFH5x27OnM+BExjc84 bFR3CH8OVUIKM7oMKrnREtmB6Ndb7EW+6qEtfVSPMz4C2LNlL7HdXnUz/p7reB8LNnJtR4pabQXk v0KeUxeUp2E7bpas40yJ3W/Pt24+4Dsm+2wilhxKi1LBqP7evz/dMKevw+tAPebl5kaLLiNHelLQ 1qen6kORw+Mgkq11pZNUyGEgRikix4rPdmcwRt8oNyNyNtvkd2I4nYdwhxP9wNvK7b6/UIuWthaz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use concatenação ".=" ao definir outras coisas sobre o $anexo.

A função fread le o arquivo ;

A função base64_encode codifica o arquivo lido neste algoritimo;

A função chunck_split separa as strings em pedacinhos.

Veio esse "/9j/4AAQSkZJRgABAQEAYABgAAD/2w ..." Pois ele está todo codificado se você decodifica-lo a salva com a extensão correta do arquivo você conseguirá ler o arquivo.

Decodifique usando base64_decode() .

Caso não der certo avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Daniel_Moraes, consegui resolver...

Segue abaixo o código alterado e assim funcionando.

 

Criei uma variável $mensagem onde coloquei as variáveis que deveriam ser enviadas para o e-mail e a variável $Corpo recebendo a $mensagem.

Fazendo dessa forma, o anexo foi enviado se estar desconfigurado e então sendo possível visualizar o anexo.

 

De qualquer forma, agradeço a todos que visualizaram o meu tópico.

 

Abraços a todos.

 


<?
//Recebe dados do formulário
$Nome	= $_POST["Nome"];
$Email = $_POST["Email"];
$Cidade = $_POST["Cidade"];
$UF = $_POST["UF"];
$Comentario = $_POST["Comentario"];

$mensagem = "
Nome: $Nome<br>
E-mail: $Email<br>
Cidade: $Cidade<br>
Estado: $UF<br>
Comentario: $Comentario<br>";

//Dados do Email a ser enviado
$Para = "malliotti@hotmail.com.br";
$Assunto = "Teste de anexo.";

//Recebe o anexo
$tiposPermitidos= array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png');
$tamanhoPermitido = 4194304; //4mb

$arqName = $_FILES['arquivo']['name'];
$arqType = $_FILES['arquivo']['type'];
$arqSize = $_FILES['arquivo']['size'];
$arqTemp = $_FILES['arquivo']['tmp_name'];
$arqError = $_FILES['arquivo']['error'];
if($arqError == 0){
if (array_search($arqType, $tiposPermitidos) === false) {
	echo 'O tipo de arquivo enviado é inválido!';
}else if ($arqSize > $tamanhoPermitido) {
	echo 'O tamanho do arquivo enviado é maior que o limite!';
} else {
	$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";
	$Corpo = "--$boundary\n";
	$Corpo .= "Content-Transfer-Encoding: 8bits\n";
	$Corpo .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain
	$Corpo .= "$mensagem\n";
	$Corpo .= "--$boundary\n";
	$Corpo .= "Content-Type: ".$arqName["type"]."\n";
	$Corpo .= "Content-Disposition: attachment; filename=\"".$arqName["name"]."\"\n";
	$Corpo .= "Content-Transfer-Encoding: base64\n\n";
	$Corpo .= "$Anexo\n";
	$Corpo .= "--$boundary--\r\n";
	$Headers = "MIME-Version: 1.0\n";
	$Headers .= "From: \"$Nome\" <$Email>\r\n";
	$Headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";
	$Headers .= "$boundary\n";
	mail($Para,$Assunto,$Corpo,$Headers);
	echo"Mensagem enviada com sucesso.";
}
}else{
echo"não foi possível enviar sua mensagem.";
}

?>

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.