Ir para conteúdo

POWERED BY:

Arquivado

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

André Sieiro

[Resolvido] Enviar email no PHP

Recommended Posts

Ola a todos...

 

esotu com problema..

 

tenho um site hospedado na locaweb e nao consigo fazer funcionar um formulario em flash que chama uma pagina PHP

 

a pagina PHp é esta

 

<?php

if (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$', $_SERVER[HTTP_HOST])) {

//EMAIL DO DESTINATARIO:      
 $enviaPara = 'andresieiro@hotmail.com';;
};


if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");




// verificando o recebimento dos dados
if(!isset($_POST['nome'])) $campoNome="Nao Informado";
else $campoNome = $_POST['nome'];

if(!isset($_POST['email'])) $campoEmail="Nao Informado";
else $campoEmail = $_POST['email'];

if(!isset($_POST['telefone'])) $campoTelefone="Nao Informado";
$campoTelefone = $_POST['telefone']; 

if(!isset($_POST['cidade'])) $campoCidade="Nao Informado";
$campoCidade = $_POST['cidade']; 

if(!isset($_POST['estado'])) $campoEstado="Nao Informado";
else $campoEstado = $_POST['estado'];

if(!isset($_POST['conheceu'])) $campoConheceu ="Nao Informado";
else $campoConheceu = $_POST['conheceu'];

if(!isset($_POST['noticias'])) $campoNoticias="Nao Informado" ;
else $campoNoticias = $_POST['noticias']; 

if(!isset($_POST['mensagem'])) $campoMensagem = "Nao Informado";
else $campoMensagem = $_POST['mensagem']; 


//Montando o email

//ASSUNTO DO EMAIL
$assunto = 'Teste flash+PHP';



//Monta o corpo da mensagem enviada
$mensagem = "Nome: " .$campoNome.$quebra_linha;
$mensagem .= "E-mail: " .$campoEmail.$quebra_linha;
$mensagem .= "Telefone: " .$campoTelefone.$quebra_linha;
$mensagem .= "Cidade: ".$campoCidade.$quebra_linha;
$mensagem .= "Estado: ".$campoEstado.$quebra_linha;
$mensagem .= "Como conheceu o site: ".$campoConheceu.$quebra_linha;
$mensagem .= "Deseja receber noticias?:" .$campoNoticias.$quebra_linha;
$mensagem .= "Mensagem:" .$quebra_linha.$campoMensagem;


$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
$headers .= "From: ".$enviaPara.$quebra_linha;
$headers .= "Return-Path: " .$enviaPara.$quebra_linha;
$headers .= "Reply-To: ".$enviaPara.$quebra_linha;


//mail($enviaPara, $assunto, $mensagem, $headers);


?>

 

 

qual é o problema pois nao chega nada no email, porem nao aparece erro algum no processo

 

alguem pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia André Sieiro! :)

 

Aparentemente tá tudo certo da linha do eregi para baixo, não sei se pode influenciar em algo na hora de voce passar o endereço, mas a função ereg e eregi se não me engano foram depreciadas, havendo agora um substituto, veja abaixo:

 

Antigamente faríamos assim:

 

<?php

$palavra = '(casa|carro)';

$frase = 'Eu fui pra casa ontem!';

if (ereg($palavra, $frase)) {

echo "A palavra 'casa' ou 'carro' foi encontrada na frase";

} else {

echo "A palavra 'casa' ou 'carro' não foi encontrada na frase";

}

?>

 

Agora, com o PHP 5.3.0 precisamos usar a função preg_match(), dessa forma:

 

<?php

$palavra = '/(casa|carro)/';

$frase = 'Eu fui pra casa ontem!';

 

if (preg_match($palavra, $frase)) {

echo "A palavra 'casa' ou 'carro' foi encontrada na frase";

} else {

echo "A palavra 'casa' ou 'carro' não foi encontrada na frase";

}

?>

 

Repare que entrou uma barra (para direita) antes e depois da expressão regular.

eregi()

 

E para quem usava o eregi, é só adicionar um "i" no final da expressão regular, dessa forma:

 

<?php

$palavra = '/(casa|carro)/i';

$frase = 'Eu fui pra Casa ontem!';

 

if (preg_match($palavra, $frase)) {

echo "A palavra 'casa' ou 'carro' foi encontrada na frase";

} else {

echo "A palavra 'casa' ou 'carro' não foi encontrada na frase";

}

?>

 

Veja se mudando o inicio do seu código e usando isto muda algo! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

As variáveis no flash estão ok?

 

Coloque no começo do php um ini_set('error_reporting', E_ALL); para ver se exibe algo

 

 

rodando somente a pagina php sem o arquivo flash obtive estes 2 erros, porem se eu rodar somente pagina o flash nao passou nada para o php...

 

PHP Notice: Undefined index: telefone in E:\home\diversaoemagiaevento\Web\testeEmail\enviarEmail.php on line 27

PHP Notice: Undefined index: cidade in E:\home\diversaoemagiaevento\Web\testeEmail\enviarEmail.php on line 30

 

Bom dia André Sieiro! :)

 

Aparentemente tá tudo certo da linha do eregi para baixo, não sei se pode influenciar em algo na hora de voce passar o endereço, mas a função ereg e eregi se não me engano foram depreciadas, havendo agora um substituto, veja abaixo:

 

Antigamente faríamos assim:

 

<?php

$palavra = '(casa|carro)';

$frase = 'Eu fui pra casa ontem!';

if (ereg($palavra, $frase)) {

echo "A palavra 'casa' ou 'carro' foi encontrada na frase";

} else {

echo "A palavra 'casa' ou 'carro' não foi encontrada na frase";

}

?>

 

Agora, com o PHP 5.3.0 precisamos usar a função preg_match(), dessa forma:

 

<?php

$palavra = '/(casa|carro)/';

$frase = 'Eu fui pra casa ontem!';

 

if (preg_match($palavra, $frase)) {

echo "A palavra 'casa' ou 'carro' foi encontrada na frase";

} else {

echo "A palavra 'casa' ou 'carro' não foi encontrada na frase";

}

?>

 

Repare que entrou uma barra (para direita) antes e depois da expressão regular.

eregi()

 

E para quem usava o eregi, é só adicionar um "i" no final da expressão regular, dessa forma:

 

<?php

$palavra = '/(casa|carro)/i';

$frase = 'Eu fui pra Casa ontem!';

 

if (preg_match($palavra, $frase)) {

echo "A palavra 'casa' ou 'carro' foi encontrada na frase";

} else {

echo "A palavra 'casa' ou 'carro' não foi encontrada na frase";

}

?>

 

Veja se mudando o inicio do seu código e usando isto muda algo! ;)

 

 

fiz o teste mas nada mudou aparentemente, comentei estas linhas e tbm nada resolveu....

 

isto é obrigatorio para enviar um email?

 

 

 

 

http://www.diversaoemagiaeventos.com.br/testeemail/enviarEmail.php'>http://www.diversaoemagiaeventos.com.br/testeemail/enviarEmail.php é o endereço da pagina

http://www.diversaoemagiaeventos.com.br/testeemail/ é o endereco do form

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser algum problema com o flash, coloca no começo do código um echo nas váriaveis que recebem os valores via post

 

faça assim, comenta todo o código e mande imprimir apenas os valores dos $_POST

 

echo "<hr>Nome: ".$_POST['txtnome']."<br>Email".$_POST['txtemail']........

/* 
   // resto do codigo em php.
*/

 

Agora falando, entrei no form e tentei digita os seguintes nomes.

Nome: André da Silva Severino

E-mail: andrelimeira@microcamp.com.br -> Minusculos

e o resultado que obtive foi o abaixo na imagem.

form1h.jpg

Faça os teste acima e veja o que acontece, depois poste os resultados. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

è recebi o erro de index Undefined index:

 

para todos os $_POST que fiz..

 

mas eu sei que pode ser normal pois o flash que faz o post das variaveis...

 

por isso ele nao encontra...

 

 

fiz umas mudanças e percebi que agora quando consulto a pagina php esta tendo um tempo ai sim é confirmado o email enviado..

 

porem aidna nao chega nada no meu email..

 

 

existe alguam outra configuração?

 

-------------------------------------

 

 

fiz algumas alteraçoes mas sem sucesso...

 

agora acredito que deveria receber um email com todos os dados escritos "Nao informado"...

 

vejam o codigo

 

<?php

ini_set('error_reporting', E_ALL);


//EMAIL DO DESTINATARIO:      
 $enviaPara = 'andresieiro@hotmail.com';;


if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");



// verificando o recebimento dos dados


if(!isset($_POST['nome'])) $campoNome="Nome nao informado";
else $campoNome = $_POST['nome'];

if(!isset($_POST['email'])) $campoEmail="Email nao informado";
else $campoEmail = $_POST['email'];

if(!isset($_POST['telefone'])) $campoTelefone="Telefone nao informado";
else $campoTelefone = $_POST['telefonel'];

if(!isset($_POST['cidade'])) $campoCidade="Cidade nao informado";
else $campoCidade = $_POST['cidade'];

if(!isset($_POST['estado'])) $campoEstado="Estado nao informado";
else $campoEstado = $_POST['estado'];

if(!isset($_POST['conheceu'])) $campoConheceu="Conheceu nao informado";
else $campoConheceu = $_POST['conheceu'];

if(!isset($_POST['noticias'])) $campoNoticias="Noticias nao informado";
else $campoNoticias = $_POST['noticias']; 

if(!isset($_POST['mensagem'])) $campoMensagem="Mensagem nao informado";
else $campoMensagem = $_POST['mensagem']; 



//Montando o email

//ASSUNTO DO EMAIL
$assunto = 'Novo email vindo do flash';



//Monta o corpo da mensagem enviada
$mensagem = "Nome: " .$campoNome.$quebra_linha;
$mensagem .= "E-mail: " .$campoEmail.$quebra_linha;
$mensagem .= "Telefone: " .$campoTelefone.$quebra_linha;
$mensagem .= "Cidade: ".$campoCidade.$quebra_linha;
$mensagem .= "Estado: ".$campoEstado.$quebra_linha;
$mensagem .= "Como conheceu o site: ".$campoConheceu.$quebra_linha;
$mensagem .= "Deseja receber noticias?:" .$campoNoticias.$quebra_linha;
$mensagem .= "Mensagem:" .$quebra_linha.$campoMensagem;


$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
$headers .= "From: ".$enviaPara.$quebra_linha;
$headers .= "Return-Path: " .$enviaPara.$quebra_linha;
$headers .= "Reply-To: ".$enviaPara.$quebra_linha;


$ok = mail($enviaPara, $assunto, $mensagem, $headers);

if($ok) echo "Enviado";
else echo "Nao enviado";

echo " ok=".$ok;

?>

 

lembrando que o ok esta =1 e estou enviando com sucesso...

 

com isto eu tentei tirar a parte de flash.. e deixar so o php rolando mas mesmo assim nao ele diz que envia mas nao chega nada ao meu email...

 

 

Alguem sabe oque pode estar acontecendo?

 

 

endereco da pagina php

 

http://www.diversaoemagiaeventos.com.br/testeemail/enviaremail.php;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste pelo flash, crie uma outra cena e imprima os valores dos post nela, pois acredito que o problema esteja no AS e não no php.

 

Rodando apenas a pagian php como estou verificando se os valores estao em branco , nao deveria enviar o email mesmo assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara agora que eu vi, tente remover esse $ok, e ve se da certo.

 

Tente da um debug então remova os $_POST e coloque valores estáticos neles e tente enviar o e-mail.

 

 

---------

 

Meu arquivo esta assim:



<?php

ini_set('error_reporting', E_ALL);


//EMAIL DO DESTINATARIO:      
 $enviaPara = 'andresieiro@hotmail.com';;


if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");


$campoNome = "Andre";

$campoEmail = "andresieiro@hotmail.com";

$campoTelefone = "Meu Telefone";

$campoCidade = "Guarulhos";

$campoEstado = "SP";

$campoConheceu = "Eu nao conheço o site";

$campoNoticias = "Sim";

$campoMensagem = "Funciona email";


//Montando o email

//ASSUNTO DO EMAIL
$assunto = 'Novo email vindo do flash';



//Monta o corpo da mensagem enviada
$mensagem = "Nome: " .$campoNome.$quebra_linha;
$mensagem .= "E-mail: " .$campoEmail.$quebra_linha;
$mensagem .= "Telefone: " .$campoTelefone.$quebra_linha;
$mensagem .= "Cidade: ".$campoCidade.$quebra_linha;
$mensagem .= "Estado: ".$campoEstado.$quebra_linha;
$mensagem .= "Como conheceu o site: ".$campoConheceu.$quebra_linha;
$mensagem .= "Deseja receber noticias?:" .$campoNoticias.$quebra_linha;
$mensagem .= "Mensagem:" .$quebra_linha.$campoMensagem;


$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
$headers .= "From: ".$enviaPara.$quebra_linha;
$headers .= "Return-Path: " .$enviaPara.$quebra_linha;
$headers .= "Reply-To: ".$enviaPara.$quebra_linha;


mail($enviaPara, $assunto, $mensagem, $headers);


?>

 

mesmo assim nada chega no meu email, nem no lixo eletronico...

 

 

muito estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou rodar ele no meu servidor de hospedagem, e ve se chega algo.

 

Já não está rodando em linux deu a seguinte mensagem. vou tentar corrigir

 

Este script nao esta preparado para funcionar com o sistema operacional de seu servidor

 

Ele não está fazendo as quebras de linhas, qual servidor de sua hospedagem? Linux ou windows, o meu é Linux então usei \n e ficou assim. abaixo uma ss da minha caixa de entrada.

 

aeaec.jpg

 

<?php

ini_set('error_reporting', E_ALL);


//EMAIL DO DESTINATARIO:      
 $enviaPara = "andrelimeira@microcamp.com.br";

$campoNome = "Andre";

$campoEmail = "andresieiro@hotmail.com";

$campoTelefone = "Meu Telefone";

$campoCidade = "Guarulhos";

$campoEstado = "SP";

$campoConheceu = "Eu nao conheço o site";

$campoNoticias = "Sim";

$campoMensagem = "Funciona email";


//Montando o email

//ASSUNTO DO EMAIL
$assunto = "Novo email vindo do flash";



//Monta o corpo da mensagem enviada
$mensagem = "Nome: " .$campoNome."\n";
$mensagem .= "E-mail: " .$campoEmail."\n";
$mensagem .= "Telefone: " .$campoTelefone."\n";
$mensagem .= "Cidade: ".$campoCidade."\n";
$mensagem .= "Estado: ".$campoEstado."\n";
$mensagem .= "Como conheceu o site: ".$campoConheceu."\n";
$mensagem .= "Deseja receber noticias ?:" .$campoNoticias."\n";
$mensagem .= "Mensagem:" .$quebra_linha."\n";


$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: ".$enviaPara."\n";
$headers .= "Return-Path: " .$enviaPara."\n";
$headers .= "Reply-To: ".$enviaPara."\n";


mail($enviaPara, $assunto, $mensagem, $headers);


?>

 

O problema estava em uma destas linhas, tenho quase certeza

$enviaPara = 'andresieiro@hotmail.com';; // 2 vezes ponto e virgula ;;
ou
$headers .= "Content-type: text/html; charset=iso-8859-1\n"; // concatenação das strings

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser algum problema com o flash, coloca no começo do código um echo nas váriaveis que recebem os valores via post

 

faça assim, comenta todo o código e mande imprimir apenas os valores dos $_POST

 

echo "<hr>Nome: ".$_POST['txtnome']."<br>Email".$_POST['txtemail']........

/* 
   // resto do codigo em php.
*/

 

 

André você pode fazer assim também:

 

print_r($_POST);

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvido..

 

após arrumar a quebra de linha e verificar o flahs como os 2 amigos de cima me avisaram..

 

troqueio o @ hotmail.com para um email da locaweb do memso dominio

 

e chegou!

 

oberigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde André Sieiro :)

 

Que bom que foi resolvido, mas se caso voce quiser ainda usar a conta mencionada a do hotmail veja se ela tem uma opção nas configurações chamada Acesso IMAP, isto se estiver ativado permite voce enviar e-mail e receber através de um programa cliente qualquer.

 

Eu não uso o hotmail, mas é bem capaz de ter alguma configuração lá para isso e ai voce libera esta conta para receber os e-mails postados do seu form. ;)

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.