Jump to content
Fórum Script Brasil
  • 0

Formmail


Eder
 Share

Question

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','[email protected]'); // usuario para autentificação

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

$destino = "[email protected]";

$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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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: [email protected]

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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...