Ir para conteúdo

POWERED BY:

Arquivado

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

eduardo.reis

problema com envio de email

Recommended Posts

Aí galera, tudo beleza?

To com um probleminha aqui e não estou conseguindo resolver...

 

Fiz uma página de livro de visitas para um site aqui com uma parte administrativa onde o proprietario pode responder seus recados só que ela não está enviando os e-mais.l

 

to postando o código aí pra ver se voces acham o erro,beleza?

se puderem me ajudar agradeço desde já...valew.

 

if($acao == 'enviar'){	extract($_POST);	if(!$assunto || !$msg){		echo	"<script language='JavaScript'>				alert('Preencha todos os campos corretamente.');				window.location.href='java script:history.go(-1);';				</script>";		die();	}	$sql = "SELECT * FROM livro_visitas WHERE id = '".$id."';";	$busca = mysql_query($sql, $conexao) or die(mysql_error."nao foi possivel fazer a busca 2");	$a = mysql_fetch_row($busca);		$destino = $a[3];	$nome = "nome_empresa";		$sql2 = "SELECT * FROM contato WHERE id = 1;";	$busca2 = mysql_query($sql2, $conexao) or die(mysql_error());	$c = mysql_fetch_row($busca2);	$email = $c[1];		$mensagem = "<b>De:</b> ".$nome."<br />";	$mensagem .= "<b>Email:</b> ".$email."<br />";	$mensagem .= "<b>Assunto:</b> ".$assunto."<br /><br />";	$mensagem .= "<b>Mensagem:</b> ".$msg."<br /><br />";				$headers = "From: <".$destino.">\n";	$headers .= "Reply-To: ".$email." <".$email.">\n";	$headers .= "Content-Type: text/html; charset=ISO-8859-1 ";	$headers .= "MIME-Version: 1.0 ";			$envia = mail($destino, $assunto, $mensagem, $headers) or die("erro");	echo $envia;	if(!$envia){		echo	"<script language='JavaScript'>				alert('Erro enviando email.');				window.location.href='java script:history.go(-1);';				</script>";		die();	}else{	echo	"<script language='JavaScript'>			alert('E-mail enviado com sucesso.');			window.location.href='livro_visitas.php';			</script>"; 		}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Eduardo,Na linha:$envia = mail($destino, $assunto, $mensagem, $headers) or die("erro");acho que está faltando o @:$envia = @mail($destino, $assunto, $mensagem, $headers) or die("erro");Bs,Twunay

Compartilhar este post


Link para o post
Compartilhar em outros sites

td beleza, Twunay?valew pela ajuda aí.Tentei aqui e continua não funcionando....Aparece a janela "e-mail enviado com sucesso" só que não chega pro meu e-mail...o que será que tá errado hien?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arroba é apenas um operador de controle de erro.

Quando ele precede uma expressão em PHP, qualquer mensagem de erro que possa ser gerada por aquela expressão será ignorada.

Eduardo, qual é o provedor do e-mail de destino? Em alguns provedores, o e-mail enviado pela função mail() do PHP caem na caixa de lixo eletrônico ou até mesmo não são aceitos.

 

Se possível, faça testes usando outros e-mails de provedores diferentes para verificar.

 

Flws...

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eduardo, para envio de e-mails prefira utilizar uma classe que permita fazer a autenticação SMTP. Alguns provedores bloqueam se o envio foi feito sem autenticação.

 

Recomendo a phpMailer ;)

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom diaô Anderson, como eu uso isso aí?eu tentei um monte de coisa aqui e num deu nada não.desculpa aí mas é que sou iniciante em php e nunca ouvir falar desse phpmailer.valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eduardo, vamos lá. Faz um teste com esse código, substituindo com seus dados:

 

require_once('class.phpmailer.php');//inclui o arquivo da classe$phpmailer = new PHPMailer();//instancia objeto da classe$phpmailer->IsSMTP();//define o modo de envio para SMTP$phpmailer->Host = "localhost";//nome do servidor$phpmailer->SMTPAuth = true;//indica autenticação SMTP$phpmailer->Username = "usuario";//usuário SMTP$phpmailer->Password = "senha";//senha do usuário SMTP$phpmailer->From = "site@site.com.br";//e-mail remetente$phpmailer->FromName = "Site";//nome do remetente$phpmailer->AddAddress("destino@email.com");//e-mail de destino$phpmailer->Subject = "Assunto da mensagem"; //assunto$phpmailer->Body = $mensagem; //variável com o conteúdo da mensagem$phpmailer->Send();//envia mensagem

Deixei comentários ao lado de cada linha pra explicar de forma rápida. Recomendo você também estudar o método IsHTML(), para envio de e-mails em HTML, e a propriedade ErrorInfo, que carrega as informações de erro para serem devidamente tratadas e exibidas ao usuário.

 

Qualquer coisa, posta aí ;)

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Àí anderson valeu pela paciência pois tá f***.

heheheheeehe.

 

PHP
if($acao == 'enviar'){

 

        extract($_POST);

 

        if(!$assunto || !$msg){

 

                echo    "<script language='JavaScript'>

 

                                alert('Preencha todos os campos corretamente.');

 

                                window.location.href='java script:history.go(-1);';

 

                                </script>";

 

                die();

 

        }

 

        $sql = "SELECT * FROM livro_visitas WHERE id = '".$id."';";

 

        $busca = mysql_query($sql, $conexao) or die(mysql_error."nao foi possivel fazer a busca 2");

 

        $a = mysql_fetch_row($busca);

 

       

 

        $destino = $a[3];

 

        $nome = "Empresa";

 

       

 

        $sql2 = "SELECT * FROM contato WHERE id = 1;";

 

        $busca2 = mysql_query($sql2, $conexao) or die(mysql_error());

 

        $c = mysql_fetch_row($busca2);

 

        $email = $c[1];

 

 

 

         

 

        // chamada da classe phpmailer

 

require_once('phpmailer/class.phpmailer.php');

 

require_once('phpmailer/class.smtp.php');

 

 

 

// faço a chamada da classe

 

$Email = new PHPMailer();

 

// na classe, há a opção de idioma, setei como br

 

$Email->SetLanguage("br");

 

// esta chamada diz que o envio será feito através da função mail do php. Você mudar para sendmail, qmail, etc

 

// se quiser utilizar o programa de email do seu unix/linux para enviar o email

 

//$Email->IsMail();

 

$Email->IsSMTP();

 

 

 

$mail->Host = "servidor"; //Seu servidor SMTP

 

$mail->SMTPAuth = "true";

 

$mail->Username = "user"; // Utilize uma conta valida para seu servidor

 

$mail->Password = "senha"; // Sua Senha da conta acima

 

 

 

// ativa o envio de e-mails em HTML, se false, desativa.

 

$Email->IsHTML(true);

 

// email do remetente da mensagem

 

$Email->From = $email;

 

// nome do remetente do email

 

$Email->FromName = $nome;

 

// Endereço de destino do email, ou seja, pra onde você quer que a mensagem do formulário vá?

 

$Email->AddAddress("$destino");

 

//Para enviar um e-mail com cópia oculta, adicione a linha

 

//$Email->AddBcc("naweb@nawebti.net");

 

 

 

// informando no email, o assunto da mensagem

 

$Email->Subject = $assunto;

 

 

 

// Define o texto da mensagem (aceita HTML)

 

$Email->Body .= "<B>E-mail enviado por ESTAÇÃO DO CHOPP<BR></b>";

 

$Email->Body .= "Mensagem: $mensagem<BR><BR>";

 

 

 

$Email->Send();

 

 

 

// verifica se está tudo ok com oa parametros acima, se nao, avisa do erro. Se sim, envia.

 

if(!$Email->Send()){

 

                echo "Erro: " . $mail->ErrorInfo;

 

        echo "A mensagem não foi enviada. <p>";

 

}

 

 

 

 

 

} //fecha if(acao)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô, Eduardo, quase me esqueci de responder ^_^

Veja bem, o problema no seu código está mais além do ErrorInfo. Você criou uma instância de nome $Email, mas neste trecho:

 

PHP
$mail->Host = "servidor"; //Seu servidor SMTP

 

$mail->SMTPAuth = "true";

 

$mail->Username = "user"; // Utilize uma conta valida para seu servidor

 

$mail->Password = "senha"; // Sua Senha da conta acima

 

 

 

Você está chamando acima um objeto que não existe ($mail). O mesmo, para a propriedade ErrorInfo.

Faça estas alterações aí, testa de novo e posta o resultado ;)

 

[]s

Anderson Mello

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.