Ir para conteúdo
Fórum Script Brasil
  • 0

Página De Formulario Enviado?


VianeiRoberto

Pergunta

Estou com um formulario que envia os dados pra um e-mail, funciona tudo ok, mas gostaria de redicionar o usuario pra uma página nova(personalzada), após o envio, ao invés de apenas a mensagem:

Email enviado com sucesso!

Será que alguém poderia me dizer como altero isto?

É possível adaptar a este código?

A parte do código responssável pela confirmação do envio:

# Define o método de envio
  $mail_object =& Mail::factory('smtp', $params);

  # Envia o email. Se não ocorrer erro, retorna TRUE caso contrário, retorna um
  # objeto PEAR_Error. Para ler a mensagem de erro, use o método 'getMessage()'.
  $result = $mail_object->send($recipients, $headers, $body);
  if (PEAR::IsError($result))
  {
    echo "ERRO ao tentar enviar o email. (" . $result->getMessage(). ")";
  }   
  else
  {
    echo "Email enviado com sucesso!";
  }   
?>

OBS.: Eu realmente gostaria de adaptar isto a este código.

Tanks.

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0
No lugar do:

echo "Email enviado com sucesso!";

Coloca:

header("Location: confirmacao.php");

Pois é também achei que era só isso, tanot que já havia testado, no entanto recebo a seguinte mensagem:

Warning: Cannot modify header information - headers already sent by (output started at /home/usuarioftp/www/testes/smtpformphp.php:2) in /home/usuarioftp/www/testes/smtpformphp.php on line 96

a linha 96 no caso é essa:

header("Location: confirmacao.php");

qual será o problema?

To vendo a dica do tiago, mas também deu erro, to vendo os detalhes no site que ele indicou, por hora vlw, mas se alguém conseguir idenificar o problema seria uma boa hehe, vlw

Editado por VianeiRoberto
Link para o comentário
Compartilhar em outros sites

  • 0

coloca na primeira linha:

ob_start();

E na última linha:

ob_end_flush();

Esse erro ocorre porque antes disso tudo alguma coisa é enviada para o navegador... o que eu passei modifica o buffer permitindo que informações sobre o cabeçalho sejam alteradas mesmo depois dos mesmo já terem sido enviados.

Link para o comentário
Compartilhar em outros sites

  • 0
coloca na primeira linha:

ob_start();

E na última linha:

on_end_flush();

Esse erro ocorre porque antes disso tudo alguma coisa é enviada para o navegador... o que eu passei modifica o buffer permitindo que informações sobre o cabeçalho sejam alteradas mesmo depois dos mesmo já terem sido enviados.

Desculpe a ignorancia, mas você se refere a primeira e ultima linha de todo script ou do bloco de comando?

... ainda não estudei sobre esta função ai.

no inicio e no fim do script deu nisso aqui:

Warning: Cannot modify header information - headers already sent by (output started at /home/usuarioftp/www/testes/smtpformphp.php:2) in /home/usuarioftp/www/testes/smtpformphp.php on line 97

Fatal error: Call to undefined function on_end_flush() in /home/usuarioftp/www/testes/smtpformphp.php on line 99

Editado por VianeiRoberto
Link para o comentário
Compartilhar em outros sites

  • 0

É verdade, havia um erro de digitação, mas infelizmente não resolveu, voltou a dar o mesmo erro que dava quando não tinha essa função, afe, isso tá mais complicado do que eu imaginava, o caso é que é um script gerado pelo servidor do site, baseado nisso aqui:

<?

##---------------------------------------------------

## Envio de Emails pelo SMTP Autênticado usando PEAR

##---------------------------------------------------

# Mais detalhes sobre o PEAR:

# http://pear.php.net/

#

# Mais detalhes sobre o PEAR Mail:

# http://pear.php.net/manual/en/package.mail.mail-mime.php

##---------------------------------------------------

# Faz o include do PEAR Mail e do Mime.

include ("Mail.php");

include ("Mail/mime.php");

o foda é que tentei vários outros e o único que consegui adaptar foi este ai, mas agora falta o redirecionamento pra uma página legal.

Bom, se alguém conseguir identificar o problema seria bom, mas desde já vlw aos dois pela atenção!

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, ai vai o script, como falei está enviando ok, só precisava mesmo era abrir uma páina personalizada pra confirmação.

script:

<?
  ##---------------------------------------------------
  ##  Envio de Emails pelo SMTP Autênticado usando PEAR
  ##---------------------------------------------------
  # Mais detalhes sobre o PEAR: 
  #   http://pear.php.net/
  #
  # Mais detalhes sobre o PEAR Mail:
  #   http://pear.php.net/manual/en/package.mail.mail-mime.php
  ##---------------------------------------------------
  
  # Faz o include do PEAR Mail e do Mime.
  include ("Mail.php");
  include ("Mail/mime.php");

  # E-mail de destino. Caso seja mais de um destino, crie um array de e-mails.
  # *OBRIGATÓRIO*
  $recipients = 'atendimento@meusite.com.br';

  # Cabeçalho do e-mail.
  $headers = 
    array (
      'From'    => 'atendimento@meusite.com.br', # O 'From' é *OBRIGATÓRIO*.
      'To'      => 'DESTINATARIO@DominioDestinatario.com',
      'Subject' => 'TITULO DO E-MAIL'
    );

  # Utilize esta opção caso deseje definir o e-mail de resposta
  # $headers['Reply-To'] = 'EMailDeResposta@DominioDeResposta.com';

  # Utilize esta opção caso deseje definir o e-mail de retorno em caso de erro de envio
  # $headers['Errors-To'] = 'EMailDeRerornoDeERRO@DominioDeretornoDeErro.com';

  # Utilize esta opção caso deseje definir a prioridade do e-mail
  # $headers['X-Priority'] = '3'; # 1 UrgentMessage, 3 Normal  

  # Define o tipo de final de linha.
  $crlf = "\r\n";

 //pego os dados enviados pelo formulario
$nome = $_POST["nome"];
$empresa = $_POST["empresa"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];

//formato o campo da mensagem
$mensagem = wordwrap( $mensagem, 50, "<br>", 1);

  # Corpo da Mensagem e texto e em HTML
  $text = ("Nome: $nome <br>
  Empresa: $empresa <br>
  E-mail: $email <br>
  Assunto: $assunto <br>
  Mensagem: $mensagem
  ");
  $html = "<HTML><BODY><font color=blue>$text</font></BODY></HTML>";


  # Instancia a classe Mail_mime
  $mime = new Mail_mime($crlf);

  # Coloca o HTML no email
  $mime->setHTMLBody($html);


##  # Anexa um arquivo ao email.
##  $mime->addAttachment('/home/suapastahome/www/seuarquivo.txt');

  # Procesa todas as informações.
  $body = $mime->get();
  $headers = $mime->headers($headers);

  # Parâmetros para o SMTP. *OBRIGATÓRIO*
  $params = 
    array (
      'auth' => true, # Define que o SMTP requer autenticação.
      'host' => 'smtp.meusite.com.br', # Servidor SMTP
      'username' => 'atendimento=meusite.com.br', # Usuário do SMTP
      'password' => 'teste' # Senha do seu MailBox.
    );
    
  # Define o método de envio
  $mail_object =& Mail::factory('smtp', $params);

  # Envia o email. Se não ocorrer erro, retorna TRUE caso contrário, retorna um
  # objeto PEAR_Error. Para ler a mensagem de erro, use o método 'getMessage()'.
  $result = $mail_object->send($recipients, $headers, $body);
  if (PEAR::IsError($result))
  {
    echo "ERRO ao tentar enviar o email. (" . $result->getMessage(). ")";
  }   
  else
  {
    echo "Email enviado com sucesso!";
  }   
?>

No php tem como eu enviar o resultado do formulário pra um e-mail sem usar um sistema SMTP pro envio? Digo, o próprio sistema php fazer o envio?

OBS.: o Script está na forma original, assim ele funciona imprimindo na tela: "Email enviado com sucesso!"

vlw

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ESerra --

E não funciona assim?

<?php
ob_start();
  ##---------------------------------------------------
  ##  Envio de Emails pelo SMTP Autênticado usando PEAR
  ##---------------------------------------------------
  # Mais detalhes sobre o PEAR: 
  #   http://pear.php.net/
  #
  # Mais detalhes sobre o PEAR Mail:
  #   http://pear.php.net/manual/en/package.mail.mail-mime.php
  ##---------------------------------------------------
  
  # Faz o include do PEAR Mail e do Mime.
  include ("Mail.php");
  include ("Mail/mime.php");

  # E-mail de destino. Caso seja mais de um destino, crie um array de e-mails.
  # *OBRIGATÓRIO*
  $recipients = 'atendimento@meusite.com.br';

  # Cabeçalho do e-mail.
  $headers = 
    array (
      'From'    => 'atendimento@meusite.com.br', # O 'From' é *OBRIGATÓRIO*.
      'To'      => 'DESTINATARIO@DominioDestinatario.com',
      'Subject' => 'TITULO DO E-MAIL'
    );

  # Utilize esta opção caso deseje definir o e-mail de resposta
  # $headers['Reply-To'] = 'EMailDeResposta@DominioDeResposta.com';

  # Utilize esta opção caso deseje definir o e-mail de retorno em caso de erro de envio
  # $headers['Errors-To'] = 'EMailDeRerornoDeERRO@DominioDeretornoDeErro.com';

  # Utilize esta opção caso deseje definir a prioridade do e-mail
  # $headers['X-Priority'] = '3'; # 1 UrgentMessage, 3 Normal  

  # Define o tipo de final de linha.
  $crlf = "\r\n";

//pego os dados enviados pelo formulario
$nome = $_POST["nome"];
$empresa = $_POST["empresa"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];

//formato o campo da mensagem
$mensagem = wordwrap( $mensagem, 50, "<br>", 1);

  # Corpo da Mensagem e texto e em HTML
  $text = ("Nome: $nome <br>
  Empresa: $empresa <br>
  E-mail: $email <br>
  Assunto: $assunto <br>
  Mensagem: $mensagem
  ");
  $html = "<HTML><BODY><font color=blue>$text</font></BODY></HTML>";


  # Instancia a classe Mail_mime
  $mime = new Mail_mime($crlf);

  # Coloca o HTML no email
  $mime->setHTMLBody($html);


##  # Anexa um arquivo ao email.
##  $mime->addAttachment('/home/suapastahome/www/seuarquivo.txt');

  # Procesa todas as informações.
  $body = $mime->get();
  $headers = $mime->headers($headers);

  # Parâmetros para o SMTP. *OBRIGATÓRIO*
  $params = 
    array (
      'auth' => true, # Define que o SMTP requer autenticação.
      'host' => 'smtp.meusite.com.br', # Servidor SMTP
      'username' => 'atendimento=meusite.com.br', # Usuário do SMTP
      'password' => 'teste' # Senha do seu MailBox.
    );
    
  # Define o método de envio
  $mail_object =& Mail::factory('smtp', $params);

  # Envia o email. Se não ocorrer erro, retorna TRUE caso contrário, retorna um
  # objeto PEAR_Error. Para ler a mensagem de erro, use o método 'getMessage()'.
  $result = $mail_object->send($recipients, $headers, $body);
  if (PEAR::IsError($result))
  {
    echo "ERRO ao tentar enviar o email. (" . $result->getMessage(). ")";
  }   
  else
  {
    echo "Email enviado com sucesso!";
  }   
ob_end_flush();
?>

Quanto a mandar e-mail de forma nativa, sim, utilizando a mail » http://www.php.net/mail

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --VianeiRoberto --

Em que parte coloco o link neste caso?

Antes testei usando o:

header("Location: confirmacadastro.php");

no lugar do echo, mas não funcionou mesmo assim.

E não estou conseguindo abrir este link quando estou logado, porque? Sou redirecionado pra baixar o index.php.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ESerra --

Esqueci de colocar o header, mas é no lugar do echo mesmo...

Se isso não funcionar com certeza é por causa dos includes, nesse caso vai ser melhor usar javascript para redirecionar, pois como rodará do lado do cliente não tem problema com os cabeçalhos..

Ps.: O script do fórum está com uns problemas, por isso você, nem eu, não consegue acessar a página logado.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --VianeiRoberto --
Esqueci de colocar o header, mas é no lugar do echo mesmo...

Se isso não funcionar com certeza é por causa dos includes, nesse caso vai ser melhor usar javascript para redirecionar, pois como rodará do lado do cliente não tem problema com os cabeçalhos..

Ps.: O script do fórum está com uns problemas, por isso você, nem eu, não consegue acessar a página logado.

Poots que foda então, pois tentei no lugar do echo e não funcionou, como você mesmo falou deve ser mesmo por causa dos includes, e o mais foda é que já tentei tantas outras opções de script que já nem sei mais quantos, todos usando a função mail(), muitos dizem que a MSN foi enviada mas nada chega ao e-mail configurado no script, e este que funciona não é possivel configurar uma confirmação. :S

Bom, se você tiver uma dica sobre um script mail() que funcione seria bom, mas acho complicado, já tentei tantos, já estou achando que pode ser o próprio servidor.

Vlw.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...