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

email com anexo


fabiosanches

Pergunta

ae galera.. segua abaixo o script q eu peguei aki mesmo no forum.. tipo.. ele envia o e-mail e um anexo la.. so q não vem a foto q eu mando.. vem um arquivo noname totalmente vazio sem conteudo.. q q pode estar acontecendo???

envia.php

<?php

//pego os dados enviados pelo formulario
$nome = $_POST["nome"];
$email = "fabiosanches@gmail.com";
//$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=\"java script: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=\"java script: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!";

}

?>[/codebox]

emailanexo.php

[codebox]<html>
<head>
<script language="javascript" type="text/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: #000000;
font-size: 14px;
}
.style3 {color: #000000; font-size: 14px; font-weight: bold; }

-->
</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">Envie a foto de Seu Ve&iacute;culo para n&oacute;s e entraremos em contato </h1>
<table width="32%" border="0" align="center">
<tr>
<td><div align="right" class="style3">Nome</div></td>
<td><input name="nome" type="text" id="nome" size="50"></td>
</tr>
<tr>
<td width="33%"><div align="right" class="style3">De:</div></td>
<td width="67%"><input name="email_from" type="text" class="email" size="50"></td>
</tr>
<tr>
<td><div align="right" class="style3">Assunto</div></td>
<td><input name="assunto" type="text" id="assunto" size="50"></td>
</tr>
<tr>
<td><div align="right" class="style3">Mensagem</div></td>
<td><textarea name="mensagem" cols="50" rows="10" id="mensagem"></textarea></td>
</tr>
<tr>
<td><div align="right" class="style3">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>

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

usa a função move_uploaded_file()

Olha esse meu script aki de upload de imagens:

<table border="1">
<tr>
<td>
<form action="index.php" method="post" enctype="multipart/form-data">
Envie um arquivo:
<input type="file" name="foto"><br>
<input type="submit" value="Enviar Foto">
</form>
</td>
</tr>
<tr>
<td><hr></td>
</tr>
<tr>
<td>
<?php
// verifica se existe a variavel
if(isset($_FILES['foto'])) {
// atribui o valor da variavel para $arq
$arq = $_FILES['foto'];
// verifica se foi enviado algum arquivo
if($arq == "") {
// define os tamnhos de configuração das variaveis
// para verificação
$tamanho = 100000000;
$largura = 1024;
$altura = 1024;

// verifica se o tipo do arquivo
if(eregi("^image\/(jpeg|jpg|gif|png)$",$arq["type"])) {
// verifica o tamanho do arquivo
if($arq["size"] <= $tamanho) {
// atribui as dimensões do arquivo para a variavel
$dimensoes = getimagesize($arq["tmp_name"]);
// verifica a largura do arquivo
if($dimensoes[0] <= $largura) {
// verifica a altura do arquivo
if($dimensoes[1] <= $altura) {
// pega a extenção do arquivo
preg_match("/\.(gif|png|jpeg|jpg){1}$/i", $arq["name"],$ext);
// gera um nome unico para o arquivo
$imagem_nome = md5(uniqid(time())).".".$ext[1];
// informa o caminho onde o arquivo vai ser colocado
$imagem_dir = "fotos/".$imagem_nome;
// faz upload do arquivo
$upload = move_uploaded_file($arq["tmp_name"],$imagem_dir);
// verifica se o arquivo foi uploadiado
if($upload) {
echo "Upload da imagem feito com sucesso!";
} else {
echo "Não foi possivel fazer o upload da imagem!";
}
} else {
echo "A altura do arquivo é invalida!";
echo "Altura permitida: 1024";
}
} else {
echo "A altura do arquivo é invalida!";
echo "Altura permitida: 1024";
}
} else {
echo "Tamanho de arquivo invalido!";
echo "Suportado ate: 1GB";
}
} else {
echo "Formato de arquivo invalido!<br>";
echo "Suportados: jpeg, jpg, png, gif";
}
} else {
echo "Nenhum arquivo enviado!";
}
}
?>
</td>
</tr>
</table>[/codebox]

Link para o comentário
Compartilhar em outros sites

  • 0

tipo cara.. beleza.. mais o script q eu peguei peguei aki mesmo no forum e o pessoal falou q funciona direito.. quero saber o q q pode tar acontecendo.. sem talvez precisar jogar esse arquivo pra um servidor primeiro e depois enviar o e-mail.. acho q talvez seja um processo desnecessario sacou?

Link para o comentário
Compartilhar em outros sites

  • 0

Cara eu to com um prolema parecido.

Eu pequei esse mesmo escript para uso no meu sistema , mas no meu caso ue não tenho um servidor de email configurado, então tenho que usar um externo por isso tivew que mudar o cadigo para usar SMTP.

O problem que to tendo é o seguinte: qundo mando o e-mail, vai tudo beleze e o anexo ate chega, mas chega sem o nome e quando tento abri, fala que a visualização do aquivo não é possivel.

Esse é o codigo que to usando:


<?php
$servidor= ""; // nome do servidor
$porta = 25; // número da porta, o email sempre fica na 25
$timeout = 10; // tempo para expirar a tentativa de conexão
//pego os dados enviados pelo formulario
$nome = "";//Nome de quem enviou
$email = "";//para
$mensagem =$_POST['mensagem'];//Menssagem
$assunto = "Feliz Anivesário";
$email_from = "";//email de quem enviou
// abre conexão com o servidor SMTP utilizando a função fsockopen
$conexao = @fsockopen($servidor, $porta, $errno, $errstr, $timeout);
// se houve erro a variável $errno vem ligada
if ($errno){
echo "Erro ao conectar ao $servidor na $porta: ".$errstr;
exit;
}
// estabelece um email de retorno para receber msgs de erro
fputs($conexao, "MAIL FROM:<$email_from>\r\n", 512);
// estabelece o endereço de envio
fputs($conexao, "RCPT TO:<$email>\r\n", 512);
// comanda o inicio do email a ser enviado
fputs($conexao, "DATA\r\n", 512);
//formato o campo da mensagem
$mensagem = wordwrap( $mensagem, 50, "<br>", 1);
$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;
if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){
echo "o arquivo ".$arquivo["name"]." existe. Tamanho do arquivo: ".$arquivo["size"];
$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";
fputs($conexao, "MIME-Version: 1.0\r\n");
fputs($conexao, "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n");
fputs($conexao, "--$boundary\n");
fputs($conexao, "Content-Transfer-Encoding: 8bits\n");
fputs($conexao, "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n");
fputs($conexao, "Content-Transfer-Encoding: base64\n\n");
fputs($conexao, "$anexo\n");
fputs($conexao, "$boundary\n");
fputs($conexao, "From: <$email_from>\r\n");
fputs($conexao, "To:<$email>\r\n");
fputs($conexao, "Subject: $assunto\r\n");
fputs($conexao, "Content-Type: ".$arquivo["type"]."\n");
fputs($conexao, "\r\n");
fputs($conexao, "$mensagem\r\n.\r\n");
// encerra a conexão com o servidor
fputs($conexao, "QUIT\r\n", 512);
fclose($conexao);
exit;
}
?>


[/codebox]

Link para o comentário
Compartilhar em outros sites

  • 0
Cara eu to com um prolema parecido.

Eu pequei esse mesmo escript para uso no meu sistema , mas no meu caso ue não tenho um servidor de email configurado, então tenho que usar um externo por isso tivew que mudar o cadigo para usar SMTP.

O problem que to tendo é o seguinte: qundo mando o e-mail, vai tudo beleze e o anexo ate chega, mas chega sem o nome e quando tento abri, fala que a visualização do aquivo não é possivel.

Esse é o codigo que to usando:


<?php
$servidor= ""; // nome do servidor
$porta = 25; // número da porta, o email sempre fica na 25
$timeout = 10; // tempo para expirar a tentativa de conexão
//pego os dados enviados pelo formulario
$nome = "";//Nome de quem enviou
$email = "";//para
$mensagem =$_POST['mensagem'];//Menssagem
$assunto = "Feliz Anivesário";
$email_from = "";//email de quem enviou
// abre conexão com o servidor SMTP utilizando a função fsockopen
$conexao = @fsockopen($servidor, $porta, $errno, $errstr, $timeout);
// se houve erro a variável $errno vem ligada
if ($errno){
echo "Erro ao conectar ao $servidor na $porta: ".$errstr;
exit;
}
// estabelece um email de retorno para receber msgs de erro
fputs($conexao, "MAIL FROM:<$email_from>\r\n", 512);
// estabelece o endereço de envio
fputs($conexao, "RCPT TO:<$email>\r\n", 512);
// comanda o inicio do email a ser enviado
fputs($conexao, "DATA\r\n", 512);
//formato o campo da mensagem
$mensagem = wordwrap( $mensagem, 50, "<br>", 1);
$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;
if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){
echo "o arquivo ".$arquivo["name"]." existe. Tamanho do arquivo: ".$arquivo["size"];
$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";
fputs($conexao, "MIME-Version: 1.0\r\n");
fputs($conexao, "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n");
fputs($conexao, "--$boundary\n");
fputs($conexao, "Content-Transfer-Encoding: 8bits\n");
fputs($conexao, "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n");
fputs($conexao, "Content-Transfer-Encoding: base64\n\n");
fputs($conexao, "$anexo\n");
fputs($conexao, "$boundary\n");
fputs($conexao, "From: <$email_from>\r\n");
fputs($conexao, "To:<$email>\r\n");
fputs($conexao, "Subject: $assunto\r\n");
fputs($conexao, "Content-Type: ".$arquivo["type"]."\n");
fputs($conexao, "\r\n");
fputs($conexao, "$mensagem\r\n.\r\n");
// encerra a conexão com o servidor
fputs($conexao, "QUIT\r\n", 512);
fclose($conexao);
exit;
}
?>


[/codebox]

Cara eu consegui resolver aqui, no meu caso eu tava fazendo errado, tava colocando os cabeçalho que montam o corpo do emial, junto com o cabeçalho do proprio e-mail, vou colocar aqui o pedaço do codigo que eu corrigi:

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";

$mensagem =$mensagem.$mens;

fputs($conexao, "MIME-Version: 1.0\r\n");

fputs($conexao, "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n");

//fputs($conexao, "Content-Type: ".$arquivo["type"]."\n");

fputs($conexao, "From: <$email_from>\r\n");

fputs($conexao, "To:<$email>\r\n");

fputs($conexao, "Subject: $assunto\r\n");

fputs($conexao, "\r\n");

fputs($conexao, "$mensagem\r\n.\r\n");

fputs($conexao, "--$boundary\n");

//fputs($conexao, "Content-Transfer-Encoding: 8bits\n");

//fputs($conexao, "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n");

//fputs($conexao, "Content-Transfer-Encoding: base64\n\n");

//fputs($conexao, "$anexo\n");

fputs($conexao, "$boundary\n");

// encerra a conexão com o servidor

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,4k
×
×
  • Criar Novo...