Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
drigoh10

Ajuda a criar um codigo de enviar e-mail (PHP)

Recommended Posts

Olá, sou novo na área de php e cai de paraquenas um estágio onde está me exigindo o PHP. Estou estudando como um louco, mas só estudando eu unm vou conseguir resolver a tarefa que me deram a tempo. Se puderem me ajudar, eu agradeço.

Preciso gerar um código de envio de e-mail (meu prazo é até Sexta, 18/03/2011)... o resultado seria mais om menos este:

Site de Solicitações

Resumo do Atendimento de Solicitações pela gerência: Força de Trabalho.

- Executadas no mês (2/2011): 257 (97.28% no Prazo, Tempo Médio: 5h:04m).

- Executadas no dia (07/2/2011): 62 (88.71% no Prazo, Tempo Médio: 15h:26m).

- Abertas no Prazo: 2.

- Abertas e Fora do Prazo: 0.

O que eu coloquei em negrito são as os valores que ele deve buscar no meu banco postgree.

Não preciso que a mensagem esteja formatada no momento, basta enviar o texto com os valores que ele vai buscar no meu banco.

Sobre os provaveis selects desses valores, que se interessar em escrever, pode usar nomes genéricos que eu aqui substituo pelo nome das minahs tabelas e etc. Só pra que eu possa ter um exemplo.

Então, fui recomendado aqui no estágio a usar o código abaixo (que é de outra parte do sistema) e editá-lo, de modo que ele resulte o texto que passei acima em itálico.

Pode parecer meio surreal o que estou pedindo, mas se alguém tiver alguma outra sugestão de código baseado naquele texto la de cima em itálico eu agradeço.

eu tenho o seguinte código: (é um código bem grande... por isso que tô me perdendo)


<?
include_once '../lib/padrão.sol.php';
include_once '../lib/conexao.sol.php';
include_once '../lib/funcao.sol.php';

include("mime_mail.class.php");

if (session_is_registered("executor")){
$modelo->start();
$banco = new Banco();
conectaPgsql($banco);


function remove_acentuacao($string)
{
$string = htmlentities($string);
$string = preg_replace('/\s+/','_', $string);
return preg_replace("/&([a-z]|)[a-z]+;/i","$1",$string);
}
copy($arq, "/portal/www/htdocs/solicitacao/lib/upload/".remove_acentuacao($arq_name));

function enviaMail($banco,$doc,$anexo){
global $executor;
$banco->ClearSQL();
$banco->AddSQL("select documento.id_documento as \"Registro nº\",to_char (documento.data_hora_abertura,'DD/MM/YYYY HH24:MI:SS') as \"Data de Abertura\",empresa.nome as \"Empresa\",solicitante.ddd_1||' '||solicitante.telefone_contato_1||' '||solicitante.telefone_contato_2 as \"Contato\",usuario.nome as \"Nome\",status.descricao as \"Status\" from empresa,status,solicitante,documento,usuario");
$banco->AddSQL("where documento.id_empresa = empresa.id_empresa");
$banco->AddSQL("and documento.id_status = status.id_status");
$banco->AddSQL("and documento.matricula_solicitante = usuario.matricula");
$banco->AddSQL("and documento.matricula_solicitante = solicitante.matricula");
$banco->AddSQL("and documento.id_empresa = solicitante.id_empresa");
$banco->AddSQL("and documento.id_documento = $doc");
$banco->ExecSQL();
//echo $banco->getsql();


$message= "<html>";
$message= $message."<head><style>";
$message= $message.".tabela {/**/";
$message= $message."font-family: Verdana, Arial, Helvetica, sans-serif !important;";
$message= $message."font-size: 11px;";
$message= $message."color: #000000 !important;";
$message= $message."background-color: #ffffff !important;";
$message= $message."border-top: 1px outset #444444 !important;";
$message= $message."border-right: 1px outset #444444 !important;";
$message= $message."border-bottom: 1px outset #444444 !important;";
$message= $message."border-left: 1px outset #444444 !important;";
$message= $message."} ";
$message= $message.".tabela tr td {/**/";
$message= $message."font-family: Verdana, Arial, Helvetica, sans-serif !important;";
$message= $message."font-size: 11px;";
$message= $message."color: #000000 !important;";
$message= $message."border: 1px ridge #FFFFFF !important;";
$message= $message."}";
$message= $message.".nomecoluna {/**/";
$message= $message."font-family: Verdana, Arial, Helvetica, sans-serif !important;";
$message= $message."font-size: 11px;";
$message= $message."font-weight: bold !important;";
$message= $message."color: #000000 !important;";
$message= $message."background-color: #E6E6E6 !important;";
$message= $message."text-align: center !important;";
$message= $message."line-height: 16px !important;";
$message= $message."}";
$message= $message.".textonormal {/**/";
$message= $message."padding-right: 1px !important; ";
$message= $message."padding-left: 1px !important;";
$message= $message."padding-bottom: 1px !important;";
$message= $message."padding-top: 1px !important;";
$message= $message."font-size: 12px !important;";
$message= $message."font-family: Verdana, Arial, Helvetica, sans-serif !important;";
$message= $message."color: #000000 !important;";
$message= $message."}";
$message= $message.".titulogeral {/**/";
$message= $message."font-family: Verdana, sans-serif !important;";
$message= $message."font-size: 15px;";
$message= $message."line-height: 20px !important;";
$message= $message."font-weight: bold !important;";
$message= $message."color: #000000 !important;";
$message= $message."background-color: #ECE9D8 !important;";
$message= $message."text-align: center !important;";
$message= $message."}";
$message= $message."</style></head>";
$message= $message."<body>";
//$message= $message."<font size=2 face=Verdana>Mensagem automática. Não enviar resposta.</font><br><br>";
$message= $message."<center><br>";
$message= $message."<font size=2 face=Verdana><b>Dados da Solicitação: $doc</b></font><br><br>";
$message= $message. "<table class=tabela width=\"100%\">";
$message= $message. "<tr align=center>";

if (!$banco->IsEmpty())
{
$coluna = $banco->getColumnsName();
while (!$banco->EOF())
{
for ($i = 0 ; $i < count ($coluna) ; $i++)
{
$message= $message. "<th bgcolor=#C9C9C9>".$coluna[$i]."</th>";
}
$message= $message. "</tr>";
$message= $message. "<tr align=center>";
$linha = $banco->getline();
for ($i = 0 ; $i < count ($linha) ; $i++)
{
$message= $message. "<td><center>   ".$linha[$i]."   </center></td>";
}
$message= $message. "</tr>";
}
}

//Consulta dados especificos por tipo de documento
$banco->ClearSQL();
$banco->AddSQL("select arquivo_documento from tipo_documento ");
$banco->AddSQL("where id_tipo_documento=(select id_tipo_documento from documento where id_documento=$doc)");
$banco->ExecSQL();
if(!$banco->isEmpty()){
$linha=$banco->getLine();
$arq_doc=$linha[0];
}
$message= $message. "<tr>";
$message= $message. "<td colspan=6>";
$show=0; //Não exibe resultado do include na tela
include('../consulta/tipo_doc_consulta'.substr($arq_doc,4,strlen($arq_doc))); //Inclusao do arquivo de consulta do tipo de solicitacao escolhido na respectiva tabela
$message= $message.$doc_consulta;
$message= $message. "</td>";
$message= $message. "</tr>";

$message= $message. "</table>";
$message= $message. "<br>";

$banco->ClearSQL();
$banco->AddSQL("select to_char(le.data_hora_acao,'dd/mm/yyyy hh24:mi:ss') as \"Data Hora\",e.nome_guerra as \"Executor\",g.nome as \"Gerência\",s.descricao as \"Status\",le.descricao as \"Descrição\"");
$banco->AddSQL("from log_execucao le,status s,gerencia g,executor e");
$banco->AddSQL("where le.id_gerencia=g.id_gerencia");
$banco->AddSQL("and le.id_status=s.id_status");
$banco->AddSQL("and le.matricula=e.matricula");
$banco->AddSQL("and le.id_documento=$doc");
$banco->AddSQL("order by le.data_hora_acao desc limit 1");
$banco->ExecSQL();

if (!$banco->IsEmpty()){
$message= $message."<center><br>";
$message= $message."<font size=2 face=Verdana><b>Execução</b></font><br>";
$message= $message. "<table class=tabela ><tr align=center>\n";
$coluna = $banco->getColumnsName();
while (!$banco->EOF()){
for ($i = 0 ; $i < count ($coluna) -1 ; $i++){
$message= $message. "<th bgcolor=#C9C9C9>".$coluna[$i]."</th>\n";
}
$message= $message. "</tr>\n";
$message= $message. "<tr align=center>\n";
$linha = $banco->getline();
for ($i = 0 ; $i < count ($linha) -1 ; $i++)
{
$message= $message. "<td><center>   ".$linha[$i]."   </center></td>\n";
}
$message= $message. "</tr>\n";
$message= $message. "<tr align=center><td colspan=\"4\"><center>".nl2br ($linha[count ($linha) -1])."</center></td></tr>\n";
}
}
else{
$message= $message. "<center><font size=2 face=Verdana><b> Não existem dados de histórico para este registro.</b></font></center>";
}
$message= $message. "</td></tr></table>";
if($anexo!=""){
$message= $message. "<br><font size=2 face=Verdana>Resposta com documento anexo!</font><br>";
}
$message= $message. "<br><font size=2 face=Verdana>Visite o site de <a href=\"http://10.121.241.95/solicitacao/\">Solicitações</a>.</font><br><hr><br>";
$message= $message. "<center><font size=2 face=Verdana><b>Site de Solicitações<br>Diretoria de Operações<br>OI</b></font></center><br>";
$message= $message. "<br><br></body></html>";
$email = "";
$banco->ClearSQL();
$banco->AddSQL("select email from documento d,solicitante s,usuario u");
$banco->AddSQL("where d.matricula_solicitante=s.matricula");
$banco->AddSQL("and d.id_empresa=s.id_empresa");
$banco->AddSQL("and u.matricula=s.matricula");
$banco->AddSQL("and d.id_documento=$doc");
$banco->AddSQL("and u.aviso = 'S' ");
$banco->AddSQL("and u.ativo = 'S' ");
$banco->AddSQL("and trim(u.email) <> '' ");
$banco->ExecSQL();
while (!$banco->EOF()){
$linha=$banco->getLine();
if (trim($linha[0]) != "")
$email=$linha[0];
}

//$subject="Solicitações : Registro $doc.";
$subject="Solicitações : Registro $doc.";

$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";

/*
echo $anexo;
echo $subject;
echo $email;
echo $message;
*/
$banco->ClearSQL();
$banco->AddSQL("select lower(g.email) from gerencia g, documento d where d.id_gerencia=g.id_gerencia and d.id_documento=$doc");
$banco->ExecSQL();
while(!$banco->EOF()){
$linha=$banco->getLine();
$g_email=$linha[0];
}
if ($email != ""){
$mail = new mime_mail();
$mail->to = $email; // Adresse email de reception
$mail->subject = $subject; // Sujet
$mail->body = $message; // Corps du message
//$mail->from = "Solicitações <$g_email>"; // Adresse email de l'expediteur (optionnel)
$mail->from = "Site Solicitações <$g_email>";
//$mail->headers = "From: CNGR - Análise"; // Entetes supplementaires (optionnel)
if($anexo){
$sanexo=fread(fopen("../upload/".$anexo, "r"), filesize("../upload/".$anexo));
$mail->attach($sanexo, "../upload/".$anexo); // fichier attache (optionnel)
}
$mail->send();
}

//fim da funcao EnviaMail
}

function EnviaEmailRepasse($banco,$ger_r,$ger,$doc,$rep_usuario){
//$ger -> gerência de origem
//$ger_r -> gerência de destino
$nome_usu_rep="";
$banco->ClearSQL();
$banco->AddSQL("select nome from usuario where matricula='$rep_usuario'");
$banco->ExecSQL();
if (!$banco->isEmpty()){
$linha = $banco->getLine();
$nome_usu_rep=$linha[0];
}
$banco->ClearSQL();
$banco->AddSQL("select nome from gerencia where id_gerencia=$ger");
$banco->ExecSQL();
if (!$banco->isEmpty()){
$linha = $banco->getLine();
$gerencia_origem=$linha[0];
}
$banco->ClearSQL();
$banco->AddSQL("select nome, email,sigla from gerencia where id_gerencia = $ger_r and notificar ='S'");
$banco->ExecSQL();
if (!$banco->isEmpty()){
// Se deve receber, monta o texto a ser enviado por e-mail
$nome_gerencia = $banco->getLine();
$sigla_gerencia = $nome_gerencia[2];
$email_gerencia = $nome_gerencia[1];
$nome_gerencia = $nome_gerencia[0];
// Monta a mensagem a ser enviada
$mensagem = "<html>\n";
$mensagem .= "<body>\n";
$mensagem .= "<font face=\"Verdana\"><p>Caro,</p><p>Existe uma solicitação aguardando o tratamento pela gerência ".$nome_gerencia."</p>";
$mensagem .= "<p> Repasse realizado pela Gerência: $gerencia_origem.</p>\n";
if($nome_usu_rep!="")
$mensagem .= "<p> Documento encaminhado para o usuário: $nome_usu_rep.</p>\n";
$mensagem .= "<p> Solicitação número: <a href=\"http://10.121.241.95/solicitacao/consulta/detalha_solic.php?doc=$doc\">$doc</a>.</p>\n";
$mensagem .= "<br>\n";
$mensagem .= "<p> Para executar a solicitação é necessário realizar o login no site: <a href=\"http://10.x.x.xx/solicitacao/\">http://10.xx.xx.xx/solicitacao/</a>.</font></p>\n";
$mensagem .= "</body>\n</html>\n";

$assunto = "Aviso de Repasse de Solicitação ($doc) para a gerência: $sigla_gerencia";

$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";

$mail = new mime_mail();
$email = "";
$banco->ClearSQL();
$banco->AddSQL("select us.email from executor ex, executor_gerencia eg, usuario us");
$banco->AddSQL("where ex.matricula = eg.matricula");
$banco->AddSQL("and ex.matricula = us.matricula");
$banco->AddSQL("and eg.id_gerencia = $ger_r");
$banco->AddSQL("and ex.notificar = 'S'");
$banco->AddSQL("and us.ativo = 'S'");
$banco->AddSQL("and us.aviso = 'S'");
$banco->ExecSQL();
while (!$banco->EOF()){
$linha = $banco->getLine();
if (trim($linha[0]) != "")
$email .= $linha[0].", ";
}
if ($email != ""){
$mail->to = $email; // Adresse email de reception
$mail->subject = $assunto; // Sujet
$mail->body = $mensagem; // Corps du message
// $mail->headers = $headers; // Headers
//$mail->from = "Solicitações <$email_gerencia>"; // Adresse email de l'expediteur (optionnel)
$mail->from = "Site de Solicitações <$email_gerencia>";
$mail->send();
}
}
//echo $mensagem;
//fim EnviaEmailRepasse
}

function TrataModelo($banco,$doc,$param,$status){
$banco->ClearSQL();
$banco->AddSQL("select arquivo_documento from tipo_documento ");
$banco->AddSQL("where id_tipo_documento=(select id_tipo_documento from documento where id_documento=$doc)");
$banco->ExecSQL();
if(!$banco->isEmpty()){
$linha=$banco->getLine();
$arq_doc=$linha[0];
}
if(file_exists('trata_modelo'.substr($arq_doc,4,strlen($arq_doc)))){
include('trata_modelo'.substr($arq_doc,4,strlen($arq_doc))); //Inclusao do arquivo de encerramento dos modelos específicos
}
}

$matricula=$executor->getMatricula();
/*
echo "Status ".$status;
echo "<br>";
echo "Gerencia ".$ger;
echo "<br>";
echo "Gerencia R ".$ger_r;
echo "<br>";
echo "Descricao ".$descricao;
echo "<br>";
echo "Doc ".$doc;
echo "<br>";
echo "Matricula ".$matricula;
echo "<br>";
echo "#".$acao."#";
*/

if($status && $ger && $matricula && $acao && $doc){


if($acao==" Enviar "){

if($descricao){

$banco->ClearSQL();
$banco->AddSQL("select id_status from documento where id_documento=$doc");
$banco->ExecSQL();
while (!$banco->EOF()){
$linha=$banco->getLine();
$status_old=$linha[0];
}

if(!($status_old==3 || ($status==2 && $ger_r==$ger && $rep_usuario==""))){ //Nao insere log e atualiza doc se repasse for para a mma gerencia.

if($tipo_solic!="" && $status==3){ //Insere tipo_solicitaçao quando ocorre encerramento
$banco->ClearSQL();
$banco->AddSQL("update documento set id_tipo_solicitacao=$tipo_solic where id_documento=$doc");
$banco->ExecSQL();
}

if($tipo_doc<>2 || ($tipo_doc==2 && $status==3 && $tipo_solic!="") || ($tipo_doc==2 && $status<>3) ){

if ($status==5 ){ //Alteração de status para aguardando recurso
$banco->ClearSQL();
$banco->AddSQL("update documento set id_status=$status,matricula_executor=null where id_documento=$doc");
$banco->ExecSQL();
}
elseif ($status==12){ //Alteração de status para execucao em campo
$banco->ClearSQL();
$banco->AddSQL("update documento set id_status=$status,matricula_executor=null,data_hora_conclusao=now() where id_documento=$doc");
$banco->ExecSQL();
}
else{
$banco->ClearSQL();
$banco->AddSQL("update documento set id_status=$status, matricula_executor='$matricula',arquivo_resposta='".$arq_name."',data_hora_conclusao=coalesce(data_hora_conclusao,now()) where id_documento=$doc");
$banco->ExecSQL();
}
//echo $banco->getSQL();

//Se foi repassado diretamente para um usuario, adiciona o nome deste no final do log desta ação.
if($rep_usuario!=""){
$banco->ClearSQL();
$banco->AddSQL("select nome from usuario where matricula='$rep_usuario'");
$banco->ExecSQL();
while (!$banco->EOF()){
$usu_linha=$banco->getLine();
}
$descricao.=" (Repassado para: $usu_linha[0])";
}

$banco->ClearSQL();
$banco->AddSQL("insert into log_execucao (id_documento,matricula,data_hora_acao,descricao,id_tipo_documento,id_gerencia,id_status) values($doc,'$matricula',now(),'$descricao',(select id_tipo_documento from documento where id_documento=$doc),$ger,$status)");
$banco->ExecSQL();
$banco->getSQL();


$banco->ClearSQL();
$banco->AddSQL("select coalesce(aviso,'S') from usuario where matricula=(select matricula_solicitante from documento where id_documento=$doc)");
$banco->ExecSQL();
if(!$banco->isEmpty()){
$linha=$banco->getLine();
$aviso=$linha[0];
}
//if($status==3) //Envia email após qualquer alteração no documento.
//if($aviso=="S" && $status!=2){ //Envia email apenas para usuarios habilitados
if($aviso=="S"){ //Habilitado envio de mensagens no caso de repasse - 07/08/2007
//Trata Execução de modelos específicos;
// TrataModelo($banco,$doc,$param,$status); Deve ficar fora do if para abrir a outra solicitação
enviaMail($banco,$doc,remove_acentuacao($arq_name));
}
// Colocado fora do if ($aviso=="S") 04/03/2008
TrataModelo($banco,$doc,$param,$status);

}
else{
echo("<br><br><center><font face= Verdana color= #FF0000 size= 4><b> Preencha corretamente os dados de execução! </b></font>");
$erro=1;
}


}
if($status==2){ //Ajuste da gerencia na ocorrencia de repasse
if($ger_r==$ger && $rep_usuario==""){
echo "<br><br><center><font face= Verdana color= #FF0000 size= 4><b> Repasse não efetuado (Informe a gerência de destino!). </b></font>";
$erro=1;
}
else{
if($rep_usuario==""){
$rep_usuario="null";
$id_status_rep=1;
}
else{
$rep_usuario="'".$rep_usuario."'";
$id_status_rep=4;
}

$banco->ClearSQL();
$banco->AddSQL("update documento set id_gerencia=$ger_r,matricula_executor=$rep_usuario,id_status=$id_status_rep where id_documento=$doc");
$banco->ExecSQL();
//echo $banco->getSQL();
enviaEmailRepasse($banco,$ger_r,$ger,$doc,$rep_usuario);
// echo " Repasse Efetuado<br>";
}
}
}
else{
echo("<br><br><center><font face= Verdana color= #FF0000 size= 4><b> Preencha corretamente os dados de execução! </b></font>");
$erro=1;
}
}
else{ //Acao Cancelada, retorno do doc à fila de execução
//consulta status da ultima fila (Aguardando Recurso ou Novas)
$banco->ClearSQL();
$banco->AddSQL("select id_status from log_execucao where id_documento=$doc");
$banco->AddSQL("and id_status<>4 order by data_hora_acao desc limit 1");
$banco->ExecSQL();
//echo $banco->getSQL();
if (!$banco->IsEmpty()){
$res=$banco->getLine();
$id_status_fila=$res[0];
}
else
$id_status_fila=1;

$banco->ClearSQL();
$banco->AddSQL("update documento set id_status=$id_status_fila,matricula_executor=null where id_documento=$doc");
$banco->ExecSQL();
// echo $banco->getSQL(). " Cancela<br>";


$descricao="Documento reencaminhado à fila de execução. ".$descricao;
$banco->ClearSQL();
$banco->AddSQL("insert into log_execucao (id_documento,matricula,data_hora_acao,descricao,id_tipo_documento,id_gerencia,id_status) values($doc,'$matricula',now(),'$descricao',(select id_tipo_documento from documento where id_documento=$doc),$ger,$id_status_fila)");
$banco->ExecSQL();
// echo $banco->getSQL();

}


if($erro!=1){
echo "<body Onload=\"document.location.replace('fila_exec.php')\">";
}
else{
echo "<center><br>";
echo "<input type=\"button\" class=\"botao\" onclick=\"history.back()\" target=\"_parent\" value=\"  Voltar  \">";
echo "<br><br></center>";
}

}
else{
echo("<br><br><center><font face= Verdana color= #FF0000 size= 4><b> Preencha corretamente os dados de execução! </b></font>");
echo "<center><br>";
echo "<input type=\"button\" class=\"botao\" onclick=\"history.back()\" target=\"_parent\" value=\"  Voltar  \">";
echo "<br><br></center>";
}



desconectaPgsql($banco);
$modelo->stop();

}else{
header("Location: /solicitacao/index.php");
exit;
}
?>

Quem puder me ajudar, num sabe o bem que irá estar fazendo.... eu preciso desse estágio pra me manter... estou estudando PHP que nem um louco.... Muito Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×