Ir para conteúdo

POWERED BY:

Arquivado

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

klasss

Enviar email php com regra

Recommended Posts

Boas,
tenho aqui um problema que com o php sendemail. Necessito que sempre que as datas do meu formulario tejam a terminar (10 dias antes de terminar) seja enviado um email para varias pessoas a informar.
Eu quando tento executar esse codigo apenas me aparece uma pagina em branco .
Não me dá erro nenhum. Utilizo o Wamp e o Sendmail.
Configurei como está nesta pagina:
http://blog.techwheels.net/send-emai...sing-sendmail/
Só não utilizo

  • smtp_server=smtp.gmail.com


 

 

<?

include(conectar.php);
$conn = @mysql_connect($local_serve,$usuario_serve,$senha_ serve,$banco_de_dados) or die ("O servidor não responde!");

// conecta-se ao banco de dados
$db = @mysql_select_db($banco_de_dados,$conn)
or die ("Não foi possivel ligar-se a Base de Dados!");


$sql = ("SELECT Nome, AlvaraValidade, AcidenteValidade, SeguroValidade, FinancasValidade, SocialValidade, RemuneracaoValidade, InstaladorValidade, MontadorValidade, MedicaValidade, ProjectistaValidade, GasValidade, RedesValidade, SoldadorValidade, MecanicoValidade, ClasSoldadorValidade, MaquinaValidade1, MaquinaValidade2, MaquinaValidade3, MaquinaTopoValidade FROM tb_eqipamentos, tb_detalhe_trabalhador, tb_trabalhador");
$validade = mysql_query($sql);


while($item = mysql_fetch_assoc($validade)){
$to = 'mail@mail.pt';
$subject = 'Testing sendmail.exe';
$message = 'Hi, you just received an email using sendmail!';
$headers = 'From: mail@imail.pt' . "\r\n" .
'Reply-To: mail@mail.pt' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers))
echo "Email sent";
else
echo "Email sending failed";




?>

 

Será que alguem me consegue ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá klass, vou tentar te ajudar.

 

Preciso que você confirme algumas coisas. Você está conseguindo enviar algum email sem o critério de datas? A variável $to está correta? Lembrando que pelo código você está tentando enviar um email para "mail@mail.pt".

 

Simplifique o máximo possível, apenas para testar o funcionamento do script. Verifique se o display_errors do arquivo php.ini está ativo, caso esteja off, altere para on.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por acaso ainda nao experimentei. Vou meter as datas como comentários e experimentar

Meti mail@mail.pt para ocultar o meu email.

display_errors = On

 

PS: o resultado é o mesmo. A pagina fica em branco. Não dá nenhum tipo de mensagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique o funcionamento de seu servidor de email, tente mandar um email qualquer de seu localhost e veja se o mesmo dispara o email.

 

Após fazer a configuração para display_errors = On reinicie o apache.

 

Já mais utilize o "@" arroba para inibir erros ou notices do PHP, pois eles são de suma importância para lhe alertar sobre o funcionamento de seu sistema, retire-os.

 

 

Ao invés de utilizar o comando: <?

 

coloque a tag completa:

 

<?php

 

?>

 

pode ser por isso que sua página não está sendo executada, devido ao short open tag esta desativada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou aqui para aprender tambem :)

Depois de alterar o que disseste apareceram erros que fui corrigindo.
Só que este ultimo não entendo.

A ver se me conseguem ajudar.

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

 

 

$sql = ("SELECT Nome, AlvaraValidade, AcidenteValidade, SeguroValidade, FinancasValidade, SocialValidade, RemuneracaoValidade, InstaladorValidade, MontadorValidade, MedicaValidade, ProjectistaValidade, GasValidade, RedesValidade, SoldadorValidade, MecanicoValidade, ClasSoldadorValidade, MaquinaValidade1, MaquinaValidade2, MaquinaValidade3, MaquinaTopoValidade FROM tb_eqipamentos, tb_detalhe_trabalhador, tb_trabalhador");
$validade = mysql_query($sql);
while($item = mysql_fetch_assoc($validade)){

Compartilhar este post


Link para o post
Compartilhar em outros sites

A query tem algum erro.

 

$validade = mysql_query($sql)OR DIE(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php
$local_serve = "127.0.0.1"; // local do servidor
$usuario_serve = "root"; // nome do usuario
$senha_serve = ""; // senha
$banco_de_dados = "GCD"; // nome do banco de dados
$conn = mysql_connect($local_serve,$usuario_serve,$senha_serve,$banco_de_dados) or die ("O servidor não responde!");
//conecta-se ao banco de dados
$db = mysql_select_db($banco_de_dados,$conn)
or die ("Não foi possivel ligar-se a Base de Dados!");
$sql = ("SELECT Nome, AlvaraValidade, AcidenteValidade, SeguroValidade, FinancasValidade, SocialValidade, RemuneracaoValidade, InstaladorValidade, MontadorValidade, MedicaValidade, ProjectistaValidade, GasValidade, RedesValidade, SoldadorValidade, MecanicoValidade, ClasSoldadorValidade FROM tb_detalhe_trabalhador, tb_trabalhador");
$validade = mysql_query($sql)OR DIE(mysql_error());;
while($item = mysql_fetch_assoc($validade)){
$to = 'jmail@mail.pt';
$subject = 'Testing sendmail.exe';
$message = 'Hi, you just received an email using sendmail!';
$headers = 'From: mail@imail.pt' . "\r\n" .
'Reply-To: mail@mail.pt' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if($item($to, $subject, $message, $headers))
echo "Email sent";
else
echo "Email sending failed";
}
?>

 

E volta-me a ficar a pagina em branco :s

 

 

 

<?php
$to = 'joao.leandro@itg.pt';
$subject = 'Testing sendmail.exe';
$message = 'Hi, you just received an email using sendmail!';
$headers = 'From: mail@imail.pt' . "\r\n" .
'Reply-To: mail@mail.pt' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if($to, $subject, $message, $headers)
echo "Email sent";
else
echo "Email sending failed";
//}
?>

Experimentei assim e da-me um erro na linha do if

Parse error: syntax error, unexpected ',' in

Compartilhar este post


Link para o post
Compartilhar em outros sites
if($to, $subject, $message, $headers)

Altere por

mail($to, $subject, $message, $headers) //Se eu não me engano tem um ; dps do parêntese. Testa ae
echo "Email sent";
//else
//echo "Email sending failed";
//}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

agr sim ja tenho erros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora é só configurar o servidor de email. No próprio erro está dizendo "Verifique sua SMTP e SMTP_port. Configurações in php.oni ou use ini_set()". E ae, dá conta de configurar? ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora você já sabe qual foi o seu problema.

 

1 - O seu php não está configurado para interpretar a tag " <? " com isso nada é exibido.

 

2 - Seu servidor de emails não está configurado corretamente, consequentemente não enviará emails.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php
$to = 'mail@mailcom';
$subject = 'Testing sendmail.exe';
$message = 'Hi, you just received an email using sendmail!';
$headers = 'From: mail@imail.pt' . "\r\n" .
'Reply-To: mail@imail.pt' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers));
echo "Email sent";
//}
?>

 

 

Boas, agora já só me aparece a mensagem "Email Sent"

Mas não recebo nada do email. Tentei para dois emails diferentes e nenhum deu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recomendo utilizar o PHPMailer e fácil de configurar e necessita apenas de internet local para envio. :D.

Compartilhar este post


Link para o post
Compartilhar em outros sites

EDIT:

 

 

 

<?php
$to = 'joao.leandro@itg.pt';
$subject = 'Testing sendmail.exe';
$message = 'Hi, you just received an email using sendmail!';
$headers = 'From: itg@itg.pt' . "\r\n" .
'Reply-To: itg@itg.pt' . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers ))
echo "Email sent";
//}
?>

Pagina em branco

 

Mais facil? tenho de fazer alguma configuração para usar phpmailer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Dê uma pesquisada no google que você vai achar as diretivas, ou dê uma busca aqui no fórum mesmo, pois com certeza tem só não me recordo o tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito mais simples realmente. Ja envia emails.
Mas agora tenho um codigo imenso.

E agora queria colocar-lhe a tal regra.

 

 

$db = @mysql_select_db($banco_de_dados,$conn)
or die ("Não foi possivel ligar-se a Base de Dados!");
$sql = ("SELECT Nome, AlvaraValidade, AcidenteValidade, SeguroValidade, FinancasValidade, SocialValidade, RemuneracaoValidade, InstaladorValidade, MontadorValidade, MedicaValidade, ProjectistaValidade, GasValidade, RedesValidade, SoldadorValidade, MecanicoValidade, ClasSoldadorValidade, MaquinaValidade1, MaquinaValidade2, MaquinaValidade3, MaquinaTopoValidade FROM tb_eqipamentos, tb_detalhe_trabalhador, tb_trabalhador");
$validade = mysql_query($sql);
Agora não sei se ponho a regra aqui no meio ou não s:
while($item = mysql_fetch_assoc($validade)){

 

$PHPMailer = new PHPMailer();
// define que será usado SMTP
$PHPMailer->IsSMTP();
// envia email HTML
$PHPMailer->isHTML( true );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, Depois de conseguir enviar emails apareceu-me uma dificuldade.

Que é como coloco a mensagem a dizer que o nome X tem a certa data a terminar.

 

 

 

$db = @mysql_select_db($banco_de_dados,$conn)
or die ("Não foi possivel ligar-se a Base de Dados!");
$sql = ("SELECT Nome, AlvaraValidade, AcidenteValidade, SeguroValidade, FinancasValidade, SocialValidade, RemuneracaoValidade, InstaladorValidade, MontadorValidade, MedicaValidade, ProjectistaValidade, GasValidade, RedesValidade, SoldadorValidade, MecanicoValidade, ClasSoldadorValidade, MaquinaValidade1, MaquinaValidade2, MaquinaValidade3, MaquinaTopoValidade FROM tb_eqipamentos, tb_detalhe_trabalhador, tb_trabalhador WHERE datediff(now(), data) <= 10 ");
$validade = mysql_query($sql);
$PHPMailer = new PHPMailer($validade);
(...)
// corpo da mensagem
$PHPMailer->Body = '<p>Faltam 10 dias ou menos para terminar a data do Documento ".$Nome."</p>';

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.