Jump to content


Photo

Upload De Imagens Para E-Mail


  • Faça o login para participar
9 replies to this topic

#1 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 22/03/2010, 08:59

Bom dia :)

Tenho o seguinte código que envia imagens para meu servidor, mas gostaria de enviar para meu e-mail, como fazer?

<?php

//Diretório aonde ficará os arquivos
$dir = "./";

//Extensões permitidas
$ext = array("gif","jpg","png");

//Quant. de campos do tipo FILE
$campos = 6;

//Formulário
echo '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data">
  Arquivo: <input type="file" name="file[]">

  Arquivo: <input type="file" name="file[]">

  Arquivo: <input type="file" name="file[]">

  Arquivo: <input type="file" name="file[]">

  Arquivo: <input type="file" name="file[]">

  Arquivo: <input type="file" name="file[]">

  <input type="submit" name="submit" value=" OK ">
  </form>';
 
 
//Se for enviado
if (isset($_POST['submit'])) {

//Obtendo info. dos arquivos
$f_name = $_FILES['file']['name'];
$f_tmp = $_FILES['file']['tmp_name'];
$f_type = $_FILES['file']['type'];


//Contar arquivos enviados
$cont=0;

//Repetindo de acordo com a quantidade de campos FILE
for($i=0;$i<$campos;$i++){

//Pegando o nome
$name = $f_name[$i];

//Verificando se o campo contem arquivo
  if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) {

	if ($cont==0) {
  	echo "<b>Arquivo(s) enviados:
</b>";
	}
  	echo $name." - ";

  	//Movendo arquivo's do upload
  	$up = move_uploaded_file($f_tmp[$i], $dir.$name);

    	//Status
    	if ($up==true):
        	echo  "<i>Enviado!</i>";
          	$cont++;
    	else:
        	echo "<i>Falhou!</i>";
    	endif;

  	echo "
";
  }

}

echo ($cont!=0) ? "<i>Total de arquivos enviados: </i>".$cont : "Nenhum arquivo foi enviado!";
}
?>[b]
[/b]



#2 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 22/03/2010, 09:14

Amigo, bom dia.
Dê uma olhada no PHPMailer.
Tem acesso fácil a anexos.

http://phpmailer.wor...e.com/index.php

Boa sorte.
Mateus Antunes
Mateus Antunes
MBASistemas

#3 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 22/03/2010, 09:39

Voce já me indicou esse PHPMailer, olhei ele, e to vendo agora de novo, mas nao entendi nada =/

Na net eu só acho upload para o servidor... Se tiver outra solução, por favor poste :)


Valeu (y)

#4 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 22/03/2010, 10:03

uhauhauha
Desculpe pela resposta repetida.
Sempre indico o PHPMailer porque ele é muito bom!

Não tenho outra solução para lhe oferecer mas se quiser ajuda com o PHPMailer, estou à disposição.

Abraços.
Mateus Antunes

Edição feita por: MBA, 22/03/2010, 10:03.

Mateus Antunes
MBASistemas

#5 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 22/03/2010, 11:21

------

Eu achei um que diz que manda por email, mas dá a mensagem die: Please don't access this file directly.

Link:
http://www.visualsin.../formulario.php

Code:
[code=auto:0]<?php
$myemail = "

marco.ateliedaweb@hotmail.com

"; $thankyou = "

Obrigado, Entraremos em contato o mais rapido possivel

";

if(!$_POST)
die('Please don\'t access this file directly.');

$myemail = str_replace("
",'',$myemail);
$thankyou = str_replace("
",'',$thankyou);
$thankyoupage = str_replace("
",'',$thankyoupage);

while(list($key,$val) = each($_POST)) {
if(stristr($key,'REQUIRED')){
$key = str_replace('REQUIRED','',$key);
$fields[$key] = $val;
if($val == ''){
$missing[] = '<b>'.$key.'</b>';
}
} else {
$fields[$key] = $val;
}
}

if($fields[myemail])
$myemail = $fields[myemail];

if($fields[name]){ $name = $fields[name]; } else { $name = "Rondnelly"; }
if($fields[email]){ $email = $fields[email]; } else { $email = $myemail; }
if($fields[subject]){ $subject = $fields[subject]; } else { $subject = "Web Form"; }



$message = "The following form was sent to you from your website!\n";
$message .= "-----------------------------------------------------------\n";
$message .= "Ip: $REMOTE_ADDR\n";
$message .= "Host: "

Esquece o que eu postei ai em cima..

Sobre o PHPMailer, ele é uma classe e nao um script é isso?



#6 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 22/03/2010, 11:34

Exatamente.
O PHPMailer é uma classe para ajudar o uso de e-mail.
Muito boa por sinal!

Acho que merece o estudo!

Abraços
Mateus Antunes
MBASistemas

#7 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 22/03/2010, 11:42

Amigo, 'gambiaRealizando'(vou registrar essa kkkkkkkkkkkk), já que não quer tentar aprender a usar o PHPMailer.

Te indico o seguinte...

Se estás conseguindo enviar para o servidor, que tal salvar no servidor mesmo e enviar ao email apenas o link do caminho da imagem?

Além do simples link podes enviar uma mensagem html mesmo com as tags html de imagem.

<img src="http://www.teusite.c...imagem/img.jpg" alt="" />

Claro que o caminho da imagem no servidor deve estar correto.
E provavelmente os gerenciadores de email não vão exibir esta imagem sem a intervenção do próprio leitor do email, autorizando a exibição da imagem

Mas acho que ajuda e seria o caminho mais rápido para quem não quer se aventurar em aprender a classe PHPMailer que é muito boa e uma completa solução.

Ainda assim se não gostar da idéia de ter que enviar ao servidor e tudo mais... e não quiser usar o PHPMailer

Procure no google sobre imagens inline

(y)Até mais

#8 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 23/03/2010, 07:55

Opa :)

@MBA

Merece sim, to tentando aqui :P

@Crab

Eu quero aprender sim, pois na verdade, eu nao sei nada de PHP, só sei que começa e termina com <?php ?> hehehe

Essa idéia é uma ótima idéia, assim nao sobrecarrega tanto o e-mail!

Vou tentar achar aqui alguma solução e script!

Valeu e pode deixar que vou estudar sim :)


No mais, logo voltarei com duvidas (y)

---

Bom, to vendo que vou ter que usar algum tipo de classes ja prontas..

Achei esse tuto em PEAR
http://tutorial.host...rquivo-anexado/

Só que nao consigo instalar, ou ver se está instalado aqui em localhost o PEAR, alguem sabe?

-----

Bom dia ;)

Nao vou criar outro tópico para minha duvida.

Consegui criar o formulario que envia o anexo por e-mail (ufa!), mas a imagem nao chega ao e-mail, chega como anexo mas nao aparece.

Entao resolvi fazer o que o Crab me indicou, enviar para o servidor, e enviar para o e-mail o link da imagem.

Pois bem, eis que surge um código que eu mesmo mexi na unicão de 2 scripts (anexo e upload)

Enfim, só da erro!

Segue code do anexo
<?
	$nome   	=  $_POST["nome"];
	$cargo  	=  $_POST["cargo"];
	$telefone   =  $_POST["telefone"];
	$celular	=  $_POST["celular"];
	$email  	=  $_POST["email"];
	$empregado  =  $_POST["empregado"];
	
	if($nome!=""){
	
    	$email_from =  "[email="visual@visualsinalizacao.net"]visual@visualsinalizacao.net[/email]";
    	$assunto	=  "Envio de impressao";
               	
    	$mensagem	=	"
                    	Nome: $nome <br>
                    	E-mail: $email  <br> 
                    	Telefone: $telefone <br>
                    	Celular: $celular <br>
                    	Cargo: $cargo <br>	
                    	Empregado: $empregado <br>
      ";
                	
    	$arquivo = isset($_FILES["curriculo"]) ? $_FILES["curriculo"] : FALSE;
                	
    	$fp = fopen($_FILES["curriculo"]["tmp_name"],"rb");
    	$anexo = fread($fp,filesize($_FILES["curriculo"]["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";
    	$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";
                	
    	mail($email_from,$assunto,$mens,$headers); 
	}

?>


Esse é o do upload para o servido apenas: (está funcionando)
<?php


//Diretório aonde ficará os arquivos
$dir = "./arquivos_impressao/";

//Extensões permitidas
$ext = array("gif","jpg","png");

//Quant. de campos do tipo FILE
$campos = 1;

//Formulário
echo '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data">
  Arquivo: <input type="file" name="file[]">

  <input type="submit" name="submit" value=" OK ">
  </form>';
 
 
 
//Se for enviado
if (isset($_POST['submit'])) {

//Obtendo info. dos arquivos
$f_name = $_FILES['file']['name'];
$f_tmp = $_FILES['file']['tmp_name'];
$f_type = $_FILES['file']['type'];


//Contar arquivos enviados
$cont=0;

//Repetindo de acordo com a quantidade de campos FILE
for($i=0;$i<$campos;$i++){

//Pegando o nome
$name = $f_name[$i];

//Verificando se o campo contem arquivo
  if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) {

	if ($cont==0) {
  	echo "<b>Arquivo(s) enviados:
</b>";
	}
  	echo $name." - ";

  	//Movendo arquivo's do upload
  	$up = move_uploaded_file($f_tmp[$i], $dir.$name);

    	//Status
    	if ($up==true):
        	echo  "<i>Enviado!</i>";
          	$cont++;
    	else:
        	echo "<i>Falhou!</i>";
    	endif;

  	echo "
";
  }

}

echo ($cont!=0) ? "<i>Total de arquivos enviados: </i>".$cont : "Nenhum arquivo foi enviado!";
}
?>


Esse aqui foi o que eu mexi
<?
	$nome   	=  $_POST["nome"];
	$cargo  	=  $_POST["cargo"];
	$telefone   =  $_POST["telefone"];
	$celular	=  $_POST["celular"];
	$email  	=  $_POST["email"];
	$empregado  =  $_POST["empregado"];
 $file   	=  $_POST["file[]"];
	
	if($nome!=""){
	
    	$email_from =  "[email="visual@visualsinalizacao.net"]visual@visualsinalizacao.net[/email]";
    	$assunto	=  "Envio de impressao";
               	
    	$mensagem	=	"
                    	Nome: $nome <br>
                    	E-mail: $email  <br> 
                    	Telefone: $telefone <br>
                    	Celular: $celular <br>
                    	Cargo: $cargo <br>	
                    	Empregado: $empregado <br>
      Imagem: <a href='http://www.visualsinalizacao.net/teste/arquivos_impressao/".$file[]"."$f_type = file[]"'>
                    	";
                	
    	$arquivo = isset($_FILES["curriculo"]) ? $_FILES["curriculo"] : FALSE;
                	
    	$fp = fopen($_FILES["curriculo"]["tmp_name"],"rb");
    	$anexo = fread($fp,filesize($_FILES["curriculo"]["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";
    	$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";
                	
    	mail($email_from,$assunto,$mens,$headers); 
	}

 

 

 

//Diretório aonde ficará os arquivos
$dir = "./arquivos_impressao/";

//Extensões permitidas
$ext = array("gif","jpg","png");

//Quant. de campos do tipo FILE
$campos = 1;

//Formulário
echo '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data">
  Arquivo: <input type="file" name="file[]">

  <input type="submit" name="submit" value=" OK ">
  </form>';
 
 
 
//Se for enviado
if (isset($_POST['submit'])) {

//Obtendo info. dos arquivos
$f_name = $_FILES['file']['name'];
$f_tmp = $_FILES['file']['tmp_name'];
$f_type = $_FILES['file']['type'];


//Contar arquivos enviados
$cont=0;

//Repetindo de acordo com a quantidade de campos FILE
for($i=0;$i<$campos;$i++){

//Pegando o nome
$name = $f_name[$i];

//Verificando se o campo contem arquivo
  if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) {

	if ($cont==0) {
  	echo "<b>Arquivo(s) enviados:
</b>";
	}
  	echo $name." - ";

  	//Movendo arquivo's do upload
  	$up = move_uploaded_file($f_tmp[$i], $dir.$name);

    	//Status
    	if ($up==true):
        	echo  "<i>Enviado!</i>";
          	$cont++;
    	else:
        	echo "<i>Falhou!</i>";
    	endif;

  	echo "
";
  }

}

echo ($cont!=0) ? "<i>Total de arquivos enviados: </i>".$cont : "Nenhum arquivo foi enviado!";
}

 

 


?>

Eu fiz o seguinte, eu uni o script do upload ao do anexo tentando enviar o link do arquivo upado, mas dá erro na linha :

Imagem: <a href='http://www.visualsinalizacao.net/teste/arquivos_impressao/".$file[]"."$f_type = file[]"'>

Que concerteza deve estar errada, mas alguem pode me auxiliar?



#9 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 24/03/2010, 00:00

Camarada, se tu vai usar o modelo que te indiquei, não precisa usar o lance pra anexar...

Basta enviar a imagem pro server e depois na mensagem colocar as tags htmls normalmente de imagem com a url completa para a imagem

<img src="http://wwww.teusite....sta/imagem.jpg" alt="" />

Diretamente no corpo da mensagem

Lembrando que para funcionar a mensagem enviada deve ter cabeçalho indicando que a mensagem pode ser html

(y) Até mais

#10 Kahor

Kahor

    12 Horas

  • Usuários
  • 230 posts
  • Sexo:Masculino

Posted 24/03/2010, 07:46

Isso, vou usar o seu modelo pois o anexo nao deu certo.

Mas agora to pedindo ajuda para isso.

Eu fiz o código acima e nao deu certo, eu ja tenho o upload e o envio dos por e-mail funcionando, falta essa parte que o código "pega" os dados do upload e me manda em forma de link =/




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq