Ir para conteúdo

POWERED BY:

Arquivado

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

Rubens Garcia

[Resolvido] Anexar no corpo do email imagem vinda do banco de da

Recommended Posts

Boa noite a todos ! Estou com um pequeno problema, para anexar uma imagem cujo o caminho dela está guardado em um banco de dados.

Abaixo colocarei meu script. Ele não apresenta nenhuma mensagem de erro, porém ele envia o email mas não anexa a imagem no corpo do email !

 

Grato Rubens

 

 

<?php 

//pegando o titulo do email, a mensagem 

$titulo = $_POST['titulo'];
$msg = $_POST['mensagem'];



//upload da imagem

$diretorio = "fotos/";

if (!is_dir($diretorio)){ echo "Pasta" .$diretorio. " nao existe";} 

else { echo"Pasta Existe<br>";}

//dados da foto

$nome_foto=$_FILES['foto']['name'];
$tipo_foto=$_FILES['foto']['type'];
$tamanho_foto=$_FILES['foto']['size'];
$tmp_foto=$_FILES['foto']['tmp_name'];

//atribuindo nome a foto 
$nome=$nome_foto;
$destino = $diretorio.''.$nome;

//extensões permitidas das fotos 
$ext = strtolower(array_pop(explode(".",$nome_foto)));
$tipos = array('jpg','gif','bmp','png','jpeg');

if(array_search($ext,$tipos)=== false)
{
echo "Arquivo não suportado";
exit;
}

//verificando se existe alguma imagem com o mesmo nome e guarda no diretorio
if(!file_exists($destino))
{
move_uploaded_file($tmp_foto,$destino);
}


//conectando ao banco de dados 

$host='localhost';
$user='root';
$pass='';

$con=mysql_connect($host,$user,$pass);
if(!$con){
die('Falha na conexão. Erro:' .mysql_error());
}

//selecionar banco de dados 
mysql_select_db('clube')or trigger_error(mysql_error());

//inserir caminho da imagem no banco de dados
$query_insert=mysql_query("INSERT INTO fotos (destino) VALUES('$destino')");
//criando a query SELECT para retornar o nome e o email dos clientes
$query_select=mysql_query("SELECT nome,email FROM clientes");
//criando a query SELECT para retornar o endereço da imagem
$select_img=mysql_query("SELECT destino FROM fotos");

while ($linha = mysql_fetch_array($select_img))
{
				$fto =$linha['destino'];
}	

echo $fto;

//loop enquanto a variavel linha for igual ao numero de arrays gerados pela função mysql_fetch_array faça
while ($linha = mysql_fetch_array($query_select))
{

//aramazena resultados da consulta ao banco nas variaveis

  $nome_cli=$linha['nome'];
     $email_cli=$linha['email'];

 // email de origem 
    $email_origem = "xxxxxx@xxxxx.xxx";	 

//montando o email para envio 
   $assunto = $titulo;

//montando a mensagem 
   $mensagem = "<html><head><title>".$assunto."</title></head>";				
$mensagem .="<body>";
   $mensagem .="<h1><font face=\"verdana\" size=\"12\">".$assunto."</font></h1>";
   $mensagem .="<font face=\"verdana\" size=\"8\">".$msg."</font><hr>";
$mensagem .="<img src= ".$fto." width=\"640\" height=\"480\" />";
$mensagem .="</body></html>";

// Define os cabeçalhos do email…
   $headers = "MIME-Version: 1.0\r\n";
   $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Content-type: image/jpeg\r\n";
   // headers adicionais
   $headers .= "From: $email_origem <$email_origem>\r\n";	
   mail($email_cli,$assunto,$mensagem,$headers);	
}


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Se faz necessário o endereço completo da imagem vinda do banco de dados, se não com certeza não irá aparecer.

 

Até logo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Se faz necessário o endereço completo da imagem vinda do banco de dados, se não com certeza não irá aparecer.

 

Até logo!

 

 

Marcus não entendi muito bem o que você quis dizer. No banco de dados o caminho fica assim fotos/nome_foto.jpg por exempo

quando dou um echo na variavel $fto vem o caminho certinho.

 

Como estou em localhost do wamp na tag img o src deve ser "http://localhost/$fto" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É exatamente como o Carlos disse.

 

A imagem local, não irá aparecer, porque ela não está na rede, sendo assim, não há como localizar ela, compreende?

Caso esteja online, coloque o endereço completo dela.

 

Tipo assim nesta linha:

$mensagem .="<img src= "'http://www.seusite.com.br/fotos/'.$fto." width=\"640\" height=\"480\" />"; 

 

Que é onde sua imagem está, ou seja, a pasta.

 

Compreendeu agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa realmente eu não tinha pensado nisso Carlos. :huh:

 

Marcus obrigado por me ajudar a montar a tag, vou alterar meu script aqui e testar e reporto para vocês !

 

Bom usei o código nessa linha abaixo fazendo as devidas alterações porém ele deu um erro

 

$mensagem .="<img src= "'http://www.seusite.com.br/fotos/'.$fto." width=\"640\" height=\"480\" />";

 

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\Clube\enviaemail.php on line 102

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro de concatenação.

 

$mensagem .= sprintf( '<img src="http://www.seusite.com.br/fotos/%s" width="640" height="480" />', $fto ); 

 

sprintf

 

 

Valeu Carlos e Marcus pela ajuda de vocês problema resolvido !

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.