Ir para conteúdo

POWERED BY:

Arquivado

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

My name is Jan Lucas

Função mail() funciona, mas não envia!

Recommended Posts

Bom Dia Galerinha! É o seguitne.

 

eu desenvolvi um sistema aqui para a empresa onde estou estagiando.

E o sistema tem um link de "esqueci minha senha". Ok!?

O usuario digita o email e envia. Ai eu chamo a função mail() do php.

E ela retorna true, mas ao ver minha caixa de entrada não tem nada novo. aff

Q isso?

Tentei de tudo já.

 

Agradeço a ajuda. abços;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo Tudo! Está tudo correto. Um outro cara do fórum tentou me ajudar via Msn, fizemos de tudo pra ver o que era mas nada resolvido. E o pior! O códio está tod certo.

ele envia e retorna true, entrando no if e informando "Email enviado com sucesso!" mandei pra 4 tipos de email diferentes, hotmail, yahoo, uol inclusive o da empresa aqui.

 

Abraço. Gente espero mais ideias.

 

=/

 

Código aki :

 

$email = $_POST['email'];
$sql = mysql_query("SELECT * FROM user_admin WHERE email = '$email'") or die(mysql_error());
$dados = mysql_fetch_array($sql);
$emailto = $dados['email'];
$pass = $dados['pass'];
$num = mysql_num_rows($sql);

if($num == 0){		
echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
<script type=\"text/javascript\">
	alert(\"Não foi possível enviar o email porque ele não está cadastrado!\");
</script>";
}else{
//atributos do email
$to = $email;
$subject = "Solicitação de Senha - HelpDesk SOHIDRA";
$message = "Você Solicitou a requisição de sua senha por a ter esquecido.
Sua senha é: $pass;
Anote ou grave em outro local para segurança e para evitar esquecer novamente.
Caso queira mudar, acesse o menu opções de sua conta no Help Desk e altere sua senha.
Por favor, este email não deve ser respondido. Sua única função é informar.
       Atenciosamente NUCINF - SOHIDRA.";

$headers = "MIME-Version: 1.1/r/n";
$headers .= "Content-type: text/plain; charset=iso-8859-1/r/n";
$headers .= "From: NUCINF - NOME_EMPRESA <email@empresa.com.br>/r/n";
$headers .= "Return-Path: NUCINF - NOME EMPRESA <email@empresa.com.br>"; 

$envio = @mail($to,$subject,$message,$headers); //tentei com o @mail() e com mail() já.

       if($envio){
	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'>
	<script type=\"text/javascript\">
		alert(\"Email enviado com sucesso!\");
	</script>";
       }else{
               echo "A mensagem não pode ser enviada";
}
}

O código funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você usa servidor local na empresa ou um servidor externo?

 

Se o código está correto e não está enviando o problema está no servidor que não está entregando a mensagem corretamente.

 

Verifique com a pessoa ou empresa responsável pelo servidor.

 

Você pode tentar enviar e-mail com SMTP autenticado, você pode usar a classe PHPMailer neste caso.

 

Um abraço!

 

EDIT:

 

Acabei de notar algo errado no seu script, nos headers você está usando /r/n para quebrar linha, o correto seria \r\n.

 

Se o servidor for Linux use apenas \n.

 

Ou ainda você pode utilizar a constante PHP_EOL pra funcionar em qualquer plataforma:

 

$headers = 'MIME-Version: 1.1' . PHP_EOL;
$headers .= 'Content-type: text/plain; charset=iso-8859-1' . PHP_EOL;
$headers .= 'From: NUCINF - NOME_EMPRESA <email@empresa.com.br>' . PHP_EOL;
$headers .= 'Return-Path: NUCINF - NOME EMPRESA <email@empresa.com.br>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz a alteração com o PHP_EOL.

Tipo, como o sistema é pra o uma empresa do Governo, existe uma outra empresa responsável por disponibilizar o sistema na Web.

Não faço ideia do que perguntar ao responsável. E outra, pra eu perguntar tenho que entender o que perguntar, porque ele eh do tipo que Pisa em você.

Poderia me dizer o que tem que ser verificado no servidor onde ele está hospedado?

 

 

Abraço Irmão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que o Leozitho quis dizer é:

Se voce estiver fazendo o teste na sua maquina localhost ou 127.0.0.1 é bem provavel que a função mail retorne true mas nao envie o email, por que normalmente nao esta configurado um abiente adequado para envio de email.

 

Ja em um servidor(hospedagem) ja esta tudo preparado e configurado, logo o email é enviado.

 

 

Voce esta fazendo os testes onde? na sua maquina ou no servidor/hospedagem que vai ficar o site?

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

hauhsua! Beleza entendi.

Mas eu faço os testes já na web. No servidor em que está hospedado e por incrível que pareça não sei qual é, porque é uma outra empresa do gov. que hospeda.

Era pra enviar. poxa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Larry,

 

Os headers do código que você postou também estão errados.

 

$headers = 'MIME-Version: 1.0 /r/n' . 'From:' . $mail_from . '/r/n' . 'Reply-to:' . $mail_from . '/r/n';

Além de usar barra normal em vez de barra invertida você usa aspas simples, ou seja, mesmo que as barras estivessem certas seria interpretado literalmente pelo PHP e não feito uma quebra na linha.

 

O seu código pode enviar o e-mail, mas está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leozitho,

 

Se ta com toda razão, obrigado pela observação.

 

Faz tempo que uso PHP_EOL e um header bem mais elaborado, tinha colocado aquele código bem rápido só para ser funcional.

 

De qualquer forma segue corrigido:

 

$headers = 'MIME-Version: 1.0' . PHP_EOL
. 'From:' . $mail_from . PHP_EOL . 'Reply-to:' . $mail_from . PHP_EOL;

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites
revivendo o topico . kkkkk


estou com esse problema .. da q o email foi enviado, mais nao chega no destino !

:S:S


<?php

//conexão com o banco de dados

include "script/mysqlconfig.php";

include "script/mysqllistar.php";

include "script/conecta.php";


$conexao = conect();


//pega a variavel via post

$txtEmail = $_POST['txtEmail'];


if(isset($_POST['btConectar'])){

//busca no banco o usuario com o email

$sql=mysql_query("SELECT * FROM usuario WHERE email = '$txtEmail'");

//conta quantos tem

$verifica=mysql_num_rows($sql);

// caso haja mais de um cadastrado...

if($verifica == 1){

//fazemos um while para coletarmos as outras informações do usuario

//tais como o nome e a senha

while ($row = mysql_fetch_array($sql)){

$user = $row['user'];

$email = $row['email'];

$senha = $row['senha'];

}


//envia o email para a pessoa juntamente com seu nome e sua senha

$msg="Olá, você solicitou a recuperação de senha para o sistema de sites dinâmicos\n Catelani Telefonia IP.\n";

$msg="Seu login: $user\n";

$msg="Sua senha: $senha";

require('mail.php');

mail($txtEmail, "Catelani Telefonia IP, recuperação de senha", $msg);


//alerta que o email foi enviado e o redireciona para outra página

echo"<script>alert('Senha enviada por e-mail, verifique sua caixa de mensagens ou sua caixa de spans.'),window.open('recSenhaEnviado.php','_self')</script>";

}

//caso contrário

else{

//lhe informa que o seu e-mail não está cadastrado no banco de dados

echo"<script>alert('E-mail não cadastrado em nosso sistema'),window.open('recuperarSenha.php','_self')</script>";


}

}


?>

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.