Ir para conteúdo

POWERED BY:

Arquivado

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

kenweb

Function.mail

Recommended Posts

espera kra ta confuso.... onde ira aparecer o html? o erro function.mail n deixa o codigo trabalhar...

 

 

Edit: Espera acho q achei onde pode estar o erro. Veja essa linha:

 

window.location='enviado.html'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Indo direto ao assunto...

 

No Linux, você pode definir o From das seguintes formas:

$headers .= "From: eu@seudominio.com\n";
$headers .= "From: Meu Nome <eu@seudominio.com>\n";

 

No Windows:

$headers .= "From: eu@seudominio.com\r\n";

 

Tente desta forma:

 

<?php

$subject  = 'Assunto';
$from     = 'fulano@gmail.com';
$to       = 'ciclano@hotmail.com';
$bcc      = null; // Esconder endereços de e-mails.
$cc       = null; // Qualquer destinatário pode ver os endereços de e-mail especificados nos campos To e Cc.
$message  = 'Corpo da mensagem';

$headers  = sprintf( 'Date: %s%s', date( "D, d M Y H:i:s O" ), PHP_EOL );
$headers .= sprintf( 'Return-Path: %s%s', $from, PHP_EOL );
$headers .= sprintf( 'To: %s%s', $to, PHP_EOL );
$headers .= sprintf( 'Cc: %s%s', $cc, PHP_EOL );
$headers .= sprintf( 'Bcc: %s%s', $bcc, PHP_EOL );
$headers .= sprintf( 'From: %s%s', $from, PHP_EOL );
$headers .= sprintf( 'Reply-To: %s%s', $from, PHP_EOL );
$headers .= sprintf( 'Message-ID: <%s@%s>%s', md5( uniqid( rand( ), true ) ), $_SERVER[ 'HTTP_HOST' ], PHP_EOL );
$headers .= sprintf( 'X-Priority: %d%s', 3, PHP_EOL );
$headers .= sprintf( 'X-Mailer: PHP/%s%s', phpversion( ), PHP_EOL );
$headers .= sprintf( 'Disposition-Notification-To: %s%s', $from, PHP_EOL );
$headers .= sprintf( 'MIME-Version: 1.0%s', PHP_EOL );
$headers .= sprintf( 'Content-Transfer-Encoding: 8bit%s', PHP_EOL );
$headers .= sprintf( 'Content-Type: text/html; charset="iso-8859-1"%s', PHP_EOL );

mail( null, $subject, $message, $headers );

?>

 

Verifique se todas as variáveis que você utilizar estão com os valores corretos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra n entendi o esquema eh pegar as informaçoes do formulario mandar para o email, e responder no outro email. Isso q você me passou seria oq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

espera kra ta confuso.... onde ira aparecer o html? o erro function.mail n deixa o codigo trabalhar...

 

 

Edit: Espera acho q achei onde pode estar o erro. Veja essa linha:

 

window.location='enviado.html'

Olha amigo não me leva a mal não.

 

Mas foi exatamente o que falei.

 

Desculpe-me a sinceridade, mas ficou claro que você leu superficialmente meus "posts" anteriores, desde que eu comecei a falar sobre o DEBUG. Leia com atenção por favor agora.

 

 

veja como eu havia falado anteriormente:

http://forum.imasters.com.br/topic/453016-functionmail/page__view__findpost__p__1792957

http://forum.imasters.com.br/topic/453016-functionmail/page__view__findpost__p__1793945

 

 

 

 

Veja essa linha:

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

 

Você deve comenta-la, assim:

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

 

ou comenta-la assim:

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

 

"Comentar" quer dizer que aquela linha não irá funcionar, não será execultada.

 

O código ficou assim:

<?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>";*/
?>

 

 

 

Agora vamos implementar o DEBUG:

A cada função MAIL() você deve adicionar os ECHO'S que exibem os HEADERS.

 

Antes de cada MAIL() adicione o DEBUG (que são os "ECHO;" que exibem detalhes da função):

 

 

 

Esse código abaixo é um DEBUG, por exemplo

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

 

 

Entendeu o echo exibe as variáveis que são enviadas para a função MAIL(), exibindo detalhes para que você indentifique o erro.

 

 

Vamos a prática:

Você tem duas funções mail() sendo execultadas.

 

Primeira função mail():

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);

 

Vamos aplicar o debug nela, vai ficar assim:

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

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

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

 

Veja que antes de mail() eu adicionei o ECHO.

 

 

 

Segunda função mail():

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

 

Aqui devemos comentas o window.location como eu falei anteriormente e aplicar o DEBUG.

 

Ficará assim:

$mensagem = "$configuracao_da_mensagem_de_resposta";


echo '<h1>Segunda mail(): ',$email,'</h1>',
       '<p>assunto: ',$assunto,'</p>',
       '<p>mensagem: ',$mensagem,'</p>',
       '<p>headers:</p><pre>',$headers,'</pre>';

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

 

veja novamente que antes da função mail() ficou o "echo"(que é o debug) e o window.location não vai ser execultado por que ele está comentado.

 

 

 

Como deve ficar o código completo:

<?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";

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

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";


echo '<h1>Segunda mail(): ',$email,'</h1>',
       '<p>assunto: ',$assunto,'</p>',
       '<p>mensagem: ',$mensagem,'</p>',
       '<p>headers:</p><pre>',$headers,'</pre>';

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

?>

 

 

Tenho certeza que chegaremos a fonte do problema. Um ótimo domingo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem cara apareceu isso:

 

Primeiro mail(): grupobff@ig.com.br

 

assunto:

 

mensagem: ENVIADO POR: Nome: kenneth Email: ken.web@hotmail.com Telefone: 55555555 Celular: Mensagem: daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ENVIADO EM: 22/01/2012 04:10

 

headers:

 

From:

 

Segunda mail(): ken.web@hotmail.com

 

assunto: Re:

 

mensagem: Obrigado por entrar em contato! Estaremos respondendo em breve... Atenciosamente, $ Nome Enviado em: 22/01/2012 04:10

 

headers:

 

From: http://www.grupobff.com.br/ < grupobff@ig.com.br>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui, tem um espaço antes do "g" e depois do "<", tambem pode ser as barras "//"

From: http://www.grupobff.com.br/ < grupobff@ig.com.br> 

 

 

 

tente assim:

From: www.grupobff.com.br <grupobff@ig.com.br>

 

O erro ocorre na "primeira" função mail ou na "segunda"?

 

[editado]

 

Opa agora que eu vi, aqui o FROM está indo vazio:

 

mensagem: ENVIADO POR: Nome: kenneth Email: ken.web@hotmail.com Telefone: 55555555 Celular: Mensagem: daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ENVIADO EM: 22/01/2012 04:10

headers:

From: 

 

Corrija isso, estou preparando uma função de email pra você e já te mando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa reviver um tópico antigo assim, porém queriaprimeiramente agradecer o Carlos Coelho por essa solução que já substitui o PHPMailer em minhas aplicações e nunca foi relatado problemas.

 

Porém tenho uma dúvida, usar os headers dessa forma éseguro? Ouvi falar muito de Mail Header Injection e queria saber se dessa formaposso me sentir mais tranquilo? Outra dúvida é se, com o tempo e um volume altode mensagens enviadas dessa forma, os servidores como Google e Hotmail podem meclassificar como SPAM?

 

Obrigado pela solução.

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.