Ir para conteúdo

POWERED BY:

Arquivado

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

kenweb

Function.mail

Recommended Posts

os sites de um cliente meu esta dando erro esse "function mail" dizem que eh da hospedagem ja entrei em contato mais a soluçao n vem e os arquivos responsaveis para enviar mensagens do formulario para o email dele n pega e aparece o seguinte erro.

 

errosite.png

 

alguem pode me falar se eh realmente funçao da hospedagem ou da para eu proprio consertar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
isso aki n eh da tecla n?

Suponho que seja no seu código.

 

Leia, talvez ajude:

 

\r = carrinho de retorno - usado como quebra de linha em até p MAC 9

\n = usado como quebra de linha em like-unix (linux, bsd, mac osx)

\r\n = Quebra de linha no DOS e Windows

 

\r = equivale ao código 13

\n = equivale ao código 10

 

todo tipo de conexão passa por um SOCKET dentro do SOCKET enviamos INSTRUÇÕES

Cada instrução fica em um linha

 

Socket HTTP(navegadores e webservices geralmente):

Socket: www.site.com.br, port: 80
POST /pagina.php HTTP/1.1
Content-type: text/html

 

Nesse código de exemplo eu envie para um site uma requisição chamando a página "pagina.php" via método POST. É apenas um exemplo.

 

 

A função MAIL faz o mesmo, porem dentro do próprio servidor, mas ele se conecta ao SMTP do servidor. As instruções que você passa geralmente são To: ou Cc: ou Cco: (obviamente dentro da função mail que já é pronta para isso)

 

Se o seu SERVIDOR é like-unix, recomendo usar \n

Se o seu SERVIDOR é Windows Server, recomendo usar \r\n

 

Pode-se trocar ambas pela "constante" PHP_EOL, já vem configurado certinho pro seu servidor independente da plataforma (sistema operacional que o site roda).

 

 

Veja um exemplo:

<?php
$to      = 'nobody@seusite.com.br';
$subject = 'assunto';
$message = 'Olá';
$headers = 'From: webmaster@example.com'.PHP_EOL.
   'Reply-To: webmaster@seusite.com.br'.PHP_EOL.
   'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?> 

Cada linha no HEADER é uma instrução, e usei PHP_EOL pois é independente da plataforma.

Se ainda não pude lhe ajudar, ou você não entendeu, por favor poste seu SCRIPT (a parte da função MAIL).

 

Obrigado e feliz ano novo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem pelo q entendi o servidor SMTP mudou de algum dos dois?

 

se n for nada disso aqui vai o .php responsavel por mandar o email.

<?php
$date = date("d/m/Y h:i");

$nome = $_POST['tx_nome'];
$email = $_POST['tx_email'];
$telefone = $_POST['tx_telefone'];
$celular = $_POST['cidade'];
$textodamensagem = $_POST['tx_mensagem'];


$nome_do_site="http://www.site.com.br/";
$email_para_onde_vai_a_mensagem = "email@email";
$nome_de_quem_recebe_a_mensagem = "nome";
$exibir_apos_enviar='pagina.html';


$cabecalho_da_mensagem_original="From: $name <$email>\n";
$assunto_da_mensagem_original="Contato no Site";


$configuracao_da_mensagem_original="

ENVIADO POR:\n
Nome: $nome\n
Email: $email\n
Telefone: $telefone\n
Celular: $celular\n
Mensagem: $textodamensagem\n
ENVIADO EM: $date

";


$assunto_da_mensagem_de_resposta = "Confirmação";
$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";
$configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\n Estaremos respondendo em breve...\n Atenciosamente,\n$ Nome\n\n Enviado em: $date";


$assunto_digitado_pelo_usuario="s";


$headers = "$cabecalho_da_mensagem_original";

if($assunto_digitado_pelo_usuario=="n"){
$assunto = "$assunto_da_mensagem_original";
}
$seuemail = "$email_para_onde_vai_a_mensagem";
$mensagem = "$configuracao_da_mensagem_original";
mail($seuemail,$assunto,$mensagem,$headers);


$headers = "$cabecalho_da_mensagem_de_resposta";
if($assunto_digitado_pelo_usuario=="n"){
$assunto = "$assunto_da_mensagem_de_resposta";
}else{
$assunto = "Re: $assunto";
}

$mensagem = "$configuracao_da_mensagem_de_resposta";
mail($email,$assunto,$mensagem,$headers);
echo "<script>window.location='$exibir_apos_enviar'</script>";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, tente alterar essa linha:

$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";

 

Para isso:

$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>".PHP_EOL;

 

Se mesmo assim falhar tente:

$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>";

 

 

Apenas use as quebras se houver mais de um parâmetro. Por exemplo:

$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>".PHP_EOL;
$cabecalho_da_mensagem_de_resposta .= "Cc: $nome_do_site < $email_para_onde_vai_a_mensagem>";

 

Não há necessidade de quebras no ultimo parâmetro apenas entre eles, outro motivo pode ser o espaço entre o $ o <

 

Veja:

$nome_do_site < $email_para_onde_vai_a_mensagem>

 

Faça assim:

$nome_do_site <$email_para_onde_vai_a_mensagem>

 

Agora vou dizer uma coisa e não se ofenda por favor, mas seu código é muito desorganizado e tem coisas que seriam melhor de outra maneira. Não me leve a mal por favor, só quero lhe ajudar.

 


  1.  
  2. Você está usando as mesmas variáveis em dois lugares
  3. criando variáveis desncessárias
  4. e duplicando coisas sem necessidade.

 

Outro motivo do erro pode ser isso:

From: $nome_do_site < $email_para_onde_vai_a_mensagem>

a saida do codigo fica assim:

From: http://www.site.com.br/ < email@email>

 

Evite alguns caracteres, use somente letras, numeros e espaços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza vo editar mais acho q o erro n esta vindo disso... pq eu uso esse mesmo scprit em outros sites e funcionam perfeitamente, esse tambem funcionava mais derrepente parou.

 

ixi kra esquece arrumo sozinho sem eu fazer nada.... entao o erro era interno deles mesmo.. so pode ser *___*

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser algum caracteres que está sendo enviado por POST, pelo formulario, tem que fazer tratamento nos dados.

Leve em consideração tudo o que falei antes e adicione:

- tratamento de strings.

 

Nunca mais terá esse problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao mais oq eu estranho eh q sempre funcionou perfeitamente e so agora com esse dominio o erro aconteceu

 

Pode ser... mas...

 

Pode ter sido algum caractere inválido para HEADERS de email que ele enviou sem

perceber (nos _POST's), tipo um espaço no final que não era para existir.

 

Seu cliente pode dizer que enviou tudo igual, mas as vezes sai um espaço errado, ele esquece um @ ou um ponto "."

 

Recomendo fazer validação dos dados enviados por $_POST e tratamento de strings.

 

Que seja um 2012 de sucesso. Tudo que eu vi na internet sobre esse erro é falta de dados ou dados incorretos, como enviar um email assim:

From:  site <>

ou assim:

From:  site <@email.com>

ou assim:

From:  site <teste@>

 

Pelo seu sistema de email não possuir validação, esse erro pode ocorrer facilmente acaso seu cliente não preencha o formulário corretamente.

 

Por isso uma validação faz toda a diferença.

 

Provavelmente você não viu o erro em outros servidores, pois ao que parece esse erro ocorre em SERVIDORES WINDOWS, eu testei em servidores LIKE-UNIX e não ocorreu erro(pois ele não é configurado para relatar erros), geralmente Windows Server ocorrem o erro pois já veem configurados para tal.

 

Provavelmente o serviço de envio no servidor de seu cliente foi configurado para retornar erro

E nos demais servidores estão sem tal configuração.

 

Aonde vi esse erro, foram todos em servidores Windows(IIS), e ocorre no mal preenchimento do "TO:"

 

Leia, procure o 553, é uma lista dos erros SMTP:

http://www.gettingemaildelivered.com/what-those-smtp-error-codes-mean-and-why-you-should-care

 

O bom é que aparentemente está resolvido.

 

 

Um otimo 2012 e muito sucesso

Compartilhar este post


Link para o post
Compartilhar em outros sites

q nada tem validaçao sim, e sempre funcionou. Uso o mesmo codigo em outros sites e tambem funcionam so esse aki q ta parando... agora aconteceu o seguinte o erro nao aparece a confirmaçao q deu sucesso vem pro email q mando, mais o email q era para ter recebido n recebe....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então justamente Kenweb, provavelmente eles "ocultaram" o erro, mas RCPT é geralmente referente ao TO:, no código aberto do socket SMTP você iria ver no lugar do comando To: o comando RCPT TO:, esse erro ocorre nos servidores Windows com IIS, pois é comum ter uma forte verificação dos dados, pois o SERVIDORES windows geralmente já tem a ideia de "pronto", e os servidores SMTP de like-unix geralmente ou são mais abertos as configurações (me refiro a quem configura o SMTP, no caso o administrador da sua hospedagem) ou as configurações em servidores like-unix "corrigem" a estrutura.

 

Faça um Debug quando ocorrer erro no seu código, veja:

<?php
$date = date("d/m/Y h:i");

$nome = $_POST['tx_nome'];
$email = $_POST['tx_email'];
$telefone = $_POST['tx_telefone'];
$celular = $_POST['cidade'];
$textodamensagem = $_POST['tx_mensagem'];


$nome_do_site="http://www.site.com.br/";
$email_para_onde_vai_a_mensagem = "email@email";
$nome_de_quem_recebe_a_mensagem = "nome";
$exibir_apos_enviar='pagina.html';


$cabecalho_da_mensagem_original="From: $name <$email>\n";
$assunto_da_mensagem_original="Contato no Site";


$configuracao_da_mensagem_original="

ENVIADO POR:\n
Nome: $nome\n
Email: $email\n
Telefone: $telefone\n
Celular: $celular\n
Mensagem: $textodamensagem\n
ENVIADO EM: $date

";


$assunto_da_mensagem_de_resposta = "Confirmação";
$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";
$configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\n Estaremos respondendo em breve...\n Atenciosamente,\n$ Nome\n\n Enviado em: $date";


$assunto_digitado_pelo_usuario="s";


$headers = "$cabecalho_da_mensagem_original";

if($assunto_digitado_pelo_usuario=="n"){
$assunto = "$assunto_da_mensagem_original";
}
$seuemail = "$email_para_onde_vai_a_mensagem";
$mensagem = "$configuracao_da_mensagem_original";

/*debug do primeiro mail()*/
echo '<h1>Primeiro mail(): ',$seuemail,'</h1>',
'<p>assunto: ',$assunto,'</p>',
'<p>mensagem: ',$mensagem,'</p>',
'<p>headers:</p><pre>';
print_r($assunto);
echo '</pre>';
/*debug do primeiro mail()*/

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


$headers = "$cabecalho_da_mensagem_de_resposta";
if($assunto_digitado_pelo_usuario=="n"){
$assunto = "$assunto_da_mensagem_de_resposta";
}else{
$assunto = "Re: $assunto";
}

$mensagem = "$configuracao_da_mensagem_de_resposta";

/*debug do segundo mail()*/
echo '<h1>Segundo mail(): ',$seuemail,'</h1>',
'<p>assunto: ',$assunto,'</p>',
'<p>mensagem: ',$mensagem,'</p>',
'<p>headers:</p><pre>';
print_r($assunto);
echo '</pre>';
/*debug do segundo mail()*/

mail($email,$assunto,$mensagem,$headers);
/*
Comentei a linha do location para evitar redirecionamentos
*/
//echo "<script>window.location='$exibir_apos_enviar'</script>";

?>

 

Então não me leve a mal, sei o quanto é difícil aceitar que talvez a culpa seja nossa, ainda mais que em outros lugares seu código está funcionando, mas pelo menos faça essa questão do Debug, tenho certeza que sou capaz de lhe ajudar a chegar no seu problema.

 

E se mesmo assim não der resultado, prometo me convencer do seu argumento e aceitar que seja o servidor o problema.

O que eu realmente quero é ajuda-lo.

 

Um feliz ano novo, muito sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu fiz um teste e so troquei o email do meu cliente para o meu, e funcionou perfeitamente. O email dele eh da IG você sabe se tem algo acontecendo com ela? Pois todos os outros entao funcionando com o meu codigo sem alterar nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você fez o DEBUG? Me envia o debug por favor (com o email que dá o erro). Assim posso analisar e tenho certeza que juntos chegaremos a uma solução.

 

Fico aguardando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz oq você pediu e agora apareceu isso:

 

Parse error: syntax error, unexpected '@', expecting ',' or ';' in

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que você tenha copiado e esqueceu de algum ponto e virgula, pois eu testei aqui e está 100% o Debug.

 

É exatamente o código que lhe enviei, por favor verifique na linha que ocorreu o erro e verifique a auxencia de VIRGULA ou PONTO E VIRGULA, pode me enviar o código inteiro da página para que eu adicione o DEBUG,

 

se quiser "sigilo" do código me envie por MP

 

eu adiciono o DEBUG e lhe envio para você testar no servidor do seu cliente.

 

 

Pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra eu ja testei o erro so ta dando com o email da IG, antes funcionava mais agora nenhum da IG funciona....

vou procurar saber se esta ocorrendo algo com a ig.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os echo que eu coloquei mostra na tela detalhes do envio do e-mail.

 

Por exemplo:

/*debug do segundo mail()*/
echo '<h1>Segundo mail(): ',$seuemail,'</h1>',
       '<p>assunto: ',$assunto,'</p>',
       '<p>mensagem: ',$mensagem,'</p>',
       '<p>headers:</p><pre>';
       print_r($assunto);
       echo '</pre>';
/*debug do segundo mail()*/

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

Antes de execultar a função "mail".

 

E nessa linha comente para evitar o redirecionamento:

//echo "<script>window.location='$exibir_apos_enviar'</script>";

 

Adicione esses ECHOS que eles vão mostrar em HTML os detalhes da execução.

 

Adicione os echos, tente enviar um e-mail com seu código ele vai mostrar na tela os detalhes, você seleciona, copia e posta aqui ou me envia por MP.

 

Até mais :)

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.