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

Formmail


Eder

Pergunta

Ola pessoal...

Não entendo quase nada de PHP porem preciso fazer um FormMail para um site.....

Mas não to conseguindo fazer com que a mensagem chegue a mim com os dados preenchidos do formulario..

já consegui fazer com que ele chegue a mim...mas os dados não consegui corretamente.

Exemplo:

Meu form é simples tem um campo de:

nome, email e mensagem

Mas a mensagem que chega pra mim ou é só o nome ou mensagem ou apenas o email do camarada...não consigo configura-lo para que chegue os demais campos.(3campos)

O codigo que estou usando eu peguei na net e adaptei a minha necessida..

hp

class SmtpMailer{

var $sock, $host, $port, $error;

var $isAuth, $user, $pass;

function SmtpMailer($host,$port=25,$isAuth=true){

$this->host = $host;

$this->port = $port;

$this->isAuth = $isAuth;

$this->sock = fsockopen($host, $port, $errno, $errstr, 30);

if( $this->Get() <> 220 ) $error = "Falha ao tentar se conectar ao servidor";

$this->Put("EHLO $host");

if( $this->Get() <> 250 ) $error = "Falha ao tentar enviar o comando EHLO";

}

function Auth(){

$this->Put("AUTH LOGIN");

if( $this->Get() <> 250 ) $error = "Falha ao tentar enviar o comando AUTH PLAIN";

$this->Put(base64_encode($this->user));

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o USUARIO";

$this->Put(base64_encode($this->pass));

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a SENHA";

if( $this->Get() <> 235 ) $error = "Falha ao tentar autentificar";

}

function MakeHeader($to, $from, $subject){

$header = "MIME-Version: 1.0\r\n";

$header .= "Content-type: text/html; charset=iso-8859-1\r\n";

$header .= "Message-Id: < " . date('YmdHis') .".". md5(microtime()).".". strtoupper($from) ." > \r\n";

$header .= "From: < $from > \r\n";

$header .= "To: < $to > \r\n";

$header .= "Subject: $subject \r\n";

$header .= "Date: " . date('D, d M Y H:i:s O') . " \r\n";

$header .= "X-MSMail-Priority: High \r\n";

return $header;

}

function Send($to, $from, $subject, $msg){

if( $this->isAuth == true )

$this->Auth();

$this->Put("MAIL FROM: <$from>");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando MAIL FROM";

$this->Put("RCPT TO: <$to>");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando RCPT TO";

$this->Put("DATA");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando DATA";

$this->Put($this->MakeHeader($to, $from, $subject));

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar as HEADERS";

$this->Put("\r\n");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando NEWLINE";

$this->Put($msg);

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a MENSAGEM";

$this->Put(".");

if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a SENHA";

if( $this->Get() <> 250 ) return false; else return true;

$this->Close();

}

function Close(){

$this->Put("QUIT");

return fclose($this->sock);

}

function Put($value){

return fputs($this->sock, $value . "\r\n");

}

function Get(){

$line = fgets($this->sock). "<br>\n";

return $line{0}.$line{1}.$line{2};

}

}

define('SMTP_HOST','xxx.0.0.1'); // host do servidor smtp

define('SMTP_PORT',25); // porta do servidor smtp

define('SMTP_USER','xxxx@yyy.com.br'); // usuario para autentificação

define('SMTP_PASS','xxxxxx'); // senha para autentificação

$destino = "yyyy@yyy.com.br";

$assunto = "Mensagem enviada via Smtp";

$subject = $HTTP_POST_VARS['email'];

$nome = $HTTP_POST_VARS['nome'];

$smtp = new SmtpMailer(SMTP_HOST,SMTP_PORT,true);

$smtp->user = SMTP_USER;

$smtp->pass = SMTP_PASS;

$smtp->Send($destino, SMTP_USER, $assunto, $HTTP_POST_VARS['msg']);

?>

Neste caso acima o email chega pra mim mim com o titulo da mensagem no caso:

MENSAGEM ENVIADA VIA SMTP e a MENSAGEM atraves do MSG

mas os demais como: email e nome não chegam

o codigo do html é este:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<title>Formulário</title>

<meta name="generator" content="Namo WebEditor v3.0">

<style type="text/css">

<!--

textarea,p,table {

font-family: Arial, Helvetica, sans-serif;

font-size: 12px;

color: #003300;

}

-->

</style>

</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<form name="form" method="post" action="mail.php">

<p align="center"><img src="http://www.yyy.com.br/images/yyy.jpg"

width="170" height="97" border="0"><br>

 <font size="5"><strong>FormMail-Teste </strong></font>

<div align="center"><table border="0" cellpadding="0" cellspacing="0" width="100">

<tr>

<td><table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="15%"><p>Nome:</td>

<td><p><input type="text" name="nome" maxlength="80" size="40"

id="nome"></td>

</tr>

<tr>

<td colspan="2"><table border="0" cellpadding="0" cellspacing="0"

width="100%">

<tr>

<td width="15%"><p>E-mail:</td>

<td><p><input type="text" name="email" maxlength="80"

size="40" id="email"></td>

</tr>

<tr>

<td colspan="2"><p><textarea name="msg" rows="8"

cols="65"></textarea></td>

</tr>

</table>

<p><input type="submit" name="Enviar" value="Enviar Mensagem">

<input type="reset" name="Enviar" value="Limpar"></td>

</tr>

</table></td>

</tr>

</table></div></form>

</body>

</html>

alguém poderia me ajudar...já fiquei umas 4 horas neste codigo e não consigo fazer funcionar..

muito Grato..pessoal :(

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Cara, pra você que sabe pouca coisa de php, começar por um formmail é bom. Na verdade, acho que todo mundo começa por aí. Mas, com PHP 4 Orientado à Objeto (OOP), é meio complicado aprender.

Olha, seu form é simples como você mesmo disse. Tem nome, email e mensagem, né?! Procura um formmail mais simples. Aqui mesmo no SB tem. Se não sair do canto mermo, volta aqui que agente faz um!

Aquele abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

amigão...obrigado por responder....

eu até tentei começar por um formmail mais simples..mas o problema é que eu tenho que usar um que autentique via smtp(como MOSTRA O CODIGO),....e este é o unico que testei e passou pelo servidor...e funciona legal...só por este detalhe que mencionei.

Eu notei que é esta linha que faz com que a informação chegue pra mim:

$smtp->Send($destino, SMTP_USER, $assunto, $HTTP_POST_VARS['msg']);

neste caso acima a mensagem chega legal pra mim...ela chega com o TEXTO da mensagem(MSG).....atraves da variavel MSG

$HTTP_POST_VARS['msg]);

SE eu substituir o MSG por NOME ...ai vem pra mim a informação do NOME de quem está mandando...

se eu substiuir o NOME por EMAIL...ai vem pra mim a informação do EMAIL de quem está mandando...

Mas eu queria que viesse pra mim...os tres: NOME, EMAIL E MSG

ASSIM:

Nome: Jose da Silva

Email: jose@xxx.com.br

Mensagem: Hoje é dia 26 domingo....novembro...blablablabla...etc...

Compreendeu??.....eu tentei de varias formas mudar este codigo.....

Como trabalho com Delphi....usei a ideia do delphi(variaveis)...mas no php parece que não é asssim...usei assim:

$smtp->Send($destino, SMTP_USER, $assunto, $HTTP_POST_VARS['nome, email, msg]);

ou

$smtp->Send($destino, SMTP_USER, $assunto, email, nome, $HTTP_POST_VARS['msg']);

em fim..testei um monte de situção e nenhuma funciona...acho que é mais dificil que pensei...

Bom....acredito que alguém possa me ajudar...parece simples...mas pra mim..está sendo o Bicho...

Fico no aguardo......e na esperança de uma ajuda..

Mesmo assim..muito Obrigado..amigão..

t+

:D

Link para o comentário
Compartilhar em outros sites

  • 0

Porque você não monta tudo numa variável só e chama essa única variável no Send? Veja só:

<?
class SmtpMailer{
var $sock, $host, $port, $error;
var $isAuth, $user, $pass;
function SmtpMailer($host,$port=25,$isAuth=true){
$this->host = $host;
$this->port = $port;
$this->isAuth = $isAuth;

$this->sock = fsockopen($host, $port, $errno, $errstr, 30);
if( $this->Get() <> 220 ) $error = "Falha ao tentar se conectar ao servidor";

$this->Put("EHLO $host");
if( $this->Get() <> 250 ) $error = "Falha ao tentar enviar o comando EHLO";
}
function Auth(){
$this->Put("AUTH LOGIN");
if( $this->Get() <> 250 ) $error = "Falha ao tentar enviar o comando AUTH PLAIN";

$this->Put(base64_encode($this->user));
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o USUARIO";

$this->Put(base64_encode($this->pass));
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a SENHA";

if( $this->Get() <> 235 ) $error = "Falha ao tentar autentificar";
}

function MakeHeader($to, $from, $subject){
$header = "MIME-Version: 1.0\r\n";

$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "Message-Id: < " . date('YmdHis') .".". md5(microtime()).".". strtoupper($from) ." > \r\n";

$header .= "From: < $from > \r\n";
$header .= "To: < $to > \r\n";

$header .= "Subject: $subject \r\n";
$header .= "Date: " . date('D, d M Y H:i:s O') . " \r\n";

$header .= "X-MSMail-Priority: High \r\n";
return $header;
}

function Send($to, $from, $subject, $msg){
if( $this->isAuth == true )
$this->Auth();

$this->Put("MAIL FROM: <$from>");
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando MAIL FROM";

$this->Put("RCPT TO: <$to>");
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando RCPT TO";

$this->Put("DATA");
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando DATA";

$this->Put($this->MakeHeader($to, $from, $subject));
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar as HEADERS";

$this->Put("\r\n");
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar o comando NEWLINE";

$this->Put($msg);
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a MENSAGEM";

$this->Put(".");
if( $this->Get() <> 334 ) $error = "Falha ao tentar enviar a SENHA";

if( $this->Get() <> 250 ) return false; else return true;
$this->Close();
}
function Close(){
$this->Put("QUIT");
return fclose($this->sock);
}
function Put($value){
return fputs($this->sock, $value . "\r\n");
}
function Get(){
$line = fgets($this->sock). "<br>\n";
return $line{0}.$line{1}.$line{2};
}
}

define('SMTP_HOST','localhost'); // host do servidor smtp
define('SMTP_PORT',25); // porta do servidor smtp
define('SMTP_USER','****@****.com'); // usuario para autentificação
define('SMTP_PASS','*********'); // senha para autentificação

$destino = "*******@*******.com";
$assunto = "Mensagem enviada via Smtp";
$subject = $_POST['email'];
$nome = $_POST['nome'];
$msg = $_POST['msg'];
$monta = "Nome: $nome<BR>E-mail: $subject<BR>Mensagem: VOCÊ COLOCA AQUI A FUNÇÃO DATE, $msg"; //aqui a gente monta a variável que será chamada no e-mail

$smtp = new SmtpMailer(SMTP_HOST,SMTP_PORT,true);
$smtp->user = SMTP_USER;
$smtp->pass = SMTP_PASS;
$smtp->Send($destino, SMTP_USER, $assunto, $monta); //chamamos a $monta que por sua vez trará o nome, email e msg do usuário.

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Carinha...ESERRA..Deu certo

muito Obrigado.....Era mais fácil que eu imaginava...mas sozinho nunca iria descobrir.... :D

Valeu a ajuda....foi muito útil..já tinha gastado umas 5 horas neste codigo e não tinha Sucesso.

Agora que peguei o esquema posso ampliar o form.

Valeu...t+

:D

--

amigão...sem querer abusar ....só pra ficar completinho o codigo....

Como coloco ...para que se a mensagem é enviada corretamente..aparecer uma outra pagina dizendo.."SUA MENSAGEM FOI ENVIADA COM SUCESSO!!!"

ou se for incorreto aparecer uma outra pagina dizendo:

"SUA MENSAGEM NÃO PODE SER ENVIADA".

É dificil colocar estes dois codigos rederecionando para duas paginas uma chamado erro.htm e outra chamada obrigado.htm??

Bom valeu mesmo...muito Grato

t+ :D

Link para o comentário
Compartilhar em outros sites

  • 0

Se a função Send() retornar true e false, você poderá fazer assim:

$enviar = $smtp->Send($destino, SMTP_USER, $assunto, $monta); //chamamos a $monta que por sua vez trará o nome, email e msg do usuário.;

if ($enviar)
  header ("Location:sucesso.php");
    else
      header ("Location:erro.php");

Função header ()

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Beraldo...Valeu..deu certo...to pengando o esqueminha do php...é meio diferente do Delphi......mas no fundo...quem sabe um acaba aprendendo o outro...

Até coloquei um codigo para validar um campo...

Ficou jóia...a medida que vou aprendendo vou deixando o codigo mais legal..

muito Grato...amigos...fui muito util a dica de vocês..

t+ :D

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,8k
×
×
  • Criar Novo...