Ir para conteúdo

POWERED BY:

Arquivado

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

Mata Hary

Enviar e-mails de uma lista da bd com anexo

Recommended Posts

OBS: Eu peguei um codigo que o Fabyo (administrador) postou aqui de enviar email com anexo e só inclui a a parte de puxar os dados da BD.

 

Fabyo, espero que você nao se importe, só quis ajudar o membro Shin X que pediu ajuda e depois como achei util resolvi colocar aqui com um titulo mais especifico pq ele colocou só "E-mail?"

 

Um abraço

Mata Hary

 

 

******************************PAGINA CONEXAO.PHP*********************************

 

<?$dbname="BANCO DE DADOS"; $usuario="USUARIO";$password="SENHA"; //1º passo - Conecta ao servidor MySQL if(!($id = mysql_connect("localhost",$usuario,$password))) {echo "Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.";exit;} //2º passo - Seleciona o Banco de Dados if(!($con=mysql_select_db($dbname,$id))) { echo "Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.";exit; } /* Esta função executa um comando SQL no banco de dados MySQL$id - Ponteiro da Conexão $sql - Cláusula SQL a executar $erro - Especifica se a função exibe ou não(0=não, 1=sim) $res - Resposta */ function mysqlexecuta($id,$sql,$erro = 1) { if(empty($sql) OR !($id)) return 0; //Erro na conexão ou no comando SQL if (!($res = @mysql_query($sql,$id))) { if($erro) echo "Ocorreu um erro na execução do Comando SQL no banco de dados. Favor Contactar o Administrador.";exit;} return $res; }?>
******************************PAGINA ADM.PHP*********************************

 

<?include "conexao.php";//Executa a consulta$sql = "SELECT * FROM TABELA";$res = mysqlexecuta($id,$sql);while($row = mysql_fetch_array($res)){?><form action="envia.php" method="post" enctype="multipart/form-data" name="email"><input type="checkbox" name="email" value="<?echo $row['email'];?>"><?echo $row['nome'];?><?echo " ";?><?echo $row['email'];?><br><?}?><br>Seu e-mail: <input name="email_from" type="text" class="email"><br>assunto: <input name="assunto" type="text" id="assunto"><br><textarea cols="27" rows="5" name="mensagem"></textarea><br><input name="arquivo" type="file"><BR><input type="submit" name="Submit" value="Enviar"></form>
******************************PAGINA ENVIA.PHP*********************************

 

<?phpinclude "conexao.php";//pego os dados enviados pelo formulario$nome = $_POST["nome"];$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 emailsif (!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;}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=\"javascript: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 nao tiver anexoelse{$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 anexomail($email,$assunto,$mensagem, $headers);echo"Email enviado com Sucesso!"; }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai galera, poderia somente editar minha resposta, mas resolvi responder pra chamar atenção:P..Meu problema é simples mas não sei porque não ta funcionando; visto uma vez que esse script que foi postado aqui não funcionou ... eu vi que quando se vai enviar um e-mail pra mais de um destinatário tem que se colocar "," então eu tentei receber os e-mails do formulário da seguinte forma :

$e = $_POST["email"];$email=implode("," , $e);
ai aparece esse erro:

Warning: implode() [function.implode]: Bad arguments.

Sim eu devo esta errando alguma coisa bem obvia, mas não conseguir descobri o que é, se algém puder dar uma ajuda ai eu fico grato!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com que eu poderia verificar isso ex a variavel $email fosse receber os e-mails de uma query diretamente e não de campos como no ex acima..?Abraço!Editado:Valeu cara,realmente tudo muito obvio, dei mole mas ja tah..mesmo assim obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola galera otimo script ja esta funciondo aqui agora queria fazer uma modificaçao

 

Em vez de ficar selecionando o checkbox como faço pra ele enviar para todos se precisar escoher o email??

 

 

valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera esse script so esta enviando para um email somente e nao para todos..

 

O que pode ser??

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBS: Eu peguei um codigo que o Fabyo (administrador) postou aqui de enviar email com anexo e só inclui a a parte de puxar os dados da BD.

 

Fabyo, espero que você nao se importe, só quis ajudar o membro Shin X que pediu ajuda e depois como achei util resolvi colocar aqui com um titulo mais especifico pq ele colocou só "E-mail?"

 

Um abraço

Mata Hary

 

 

******************************PAGINA CONEXAO.PHP*********************************

 

<?
$dbname="BANCO DE DADOS"; 
$usuario="USUARIO";
$password="SENHA"; 

//1º passo - Conecta ao servidor MySQL 
if(!($id = mysql_connect("localhost",$usuario,$password))) {
echo "Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.";
exit;
} 
//2º passo - Seleciona o Banco de Dados 
if(!($con=mysql_select_db($dbname,$id))) { 
echo "Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador.";
exit; 
} 

/* 
Esta função executa um comando SQL no banco de dados MySQL
$id - Ponteiro da Conexão 
$sql - Cláusula SQL a executar 
$erro - Especifica se a função exibe ou não(0=não, 1=sim) 
$res - Resposta 
*/ 
function mysqlexecuta($id,$sql,$erro = 1) { 
if(empty($sql) OR !($id)) 
return 0; //Erro na conexão ou no comando SQL 
if (!($res = @mysql_query($sql,$id))) { 
if($erro) 
echo "Ocorreu um erro na execução do Comando SQL no banco de dados. Favor Contactar o Administrador.";
exit;
} 
return $res; 
}
?>
******************************PAGINA ADM.PHP*********************************

 

<?
include "conexao.php";

//Executa a consulta
$sql = "SELECT * FROM TABELA";
$res = mysqlexecuta($id,$sql);
while($row = mysql_fetch_array($res)){?>
<form action="envia.php" method="post" enctype="multipart/form-data" name="email">

<input type="checkbox" name="email" value="<?echo $row['email'];?>">
<?echo $row['nome'];?>
<?echo " ";?>
<?echo $row['email'];?>
<br>
<?}?>
<br>
Seu e-mail: <input name="email_from" type="text" class="email">
<br>
assunto: <input name="assunto" type="text" id="assunto">
<br>
<textarea cols="27" rows="5" name="mensagem"></textarea>
<br>
<input name="arquivo" type="file">
<BR>
<input type="submit" name="Submit" value="Enviar">
</form>
******************************PAGINA ENVIA.PHP*********************************

 

<?php
include "conexao.php";
//pego os dados enviados pelo formulario
$nome = $_POST["nome"];
$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 nao 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!"; 

}

?>

 

Tudo bem testei e funcionou numa boa.... alias vocês estao de parabens.....

 

MAS....... (ESSE MAS MATA TODO MUNDO)

 

e TENHO A SEGUINTE PERGUNTA

 

VAMOS DIZER Q ESSE SCRIPT ESTA NA PASTA "SITE"

DENTRO DA PASTA "SITE" ENCONTRA-SE A PASTA "FOTO"

DENTRO DA PASTA "FOTO" TEM A FOTO EU.JPG

 

COMO Q EU ADICIONO ESSA FOTO AO CAMINHO DO ANEXO?

 

Tipo eu meio que isonerei o adm.php eu passo o email de destino por uma cookie direto para o envia.php

o resto eh padrão inclusive o endereço da foto

 

minha duvida eh como passaar o endereço de uma foto para o arquivo q anexa?

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.