Ir para conteúdo

POWERED BY:

Arquivado

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

red neck *

class smtp

Recommended Posts

opaeu tinha ficado de postar a classe ate o fim da semana, entao aqui esta ela, ela ta meio fraca... mais to meio sem tempo para fazer algo realmente legal, o importante é que esta funcionando XDvou postar ela, e em seguida explicar os parametros:

<?class Smtp{ var $conn; var $user; var $pass; var $debug = true; function Smtp($host){  $this->conn = fsockopen($host, 25, $errno, $errstr, 30);  $this->Put("EHLO $host"); } function Auth(){  $this->Put("AUTH LOGIN");  $this->Put(base64_encode($this->user));  $this->Put(base64_encode($this->pass)); } function Send($to, $from, $subject, $msg){    $this->Auth();  $this->Put("MAIL FROM: " . $from);  $this->Put("RCPT TO: " . $to);  $this->Put("DATA");  $this->Put($this->toHeader($to, $from, $subject));  $this->Put("\r\n");  $this->Put($msg);  $this->Put(".");    $this->Close();  if(isset($this->conn)){  return true;  }else{  return false;  } } function Put($value){  return fputs($this->conn, $value . "\r\n"); } function toHeader($to, $from, $subject){  $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 Close(){  $this->Put("QUIT");  if($this->debug == true){  while (!feof ($this->conn)) {    echo fgets($this->conn) . "<br>\n";  }  }  return fclose($this->conn); }}?>

e

<?include "smtp.class.php";$smtp = new Smtp("mail.host.com");$smtp->user = "user@host.com";$smtp->pass = "password";$smtp->debug = false;if($smtp->Send($to, $from, $subject, $msg)){ echo "enviou";}else{ echo "falha ao enviar ;_;";}?>

é apenas isso.. acho que ja deu para pegar... mais vou explicar XDSmtp( $host_do_smtp ) // ex: smtp.host.com$user // usuario$pass //senha$debug // se estiver true, retorna as msgs do server, so serve mesmo para debugar o codigoSend( $para_quem, $de_quem, $assunto, $mensagem)é bem simples mesmo XDse alguem ver algum erro na logica ou alguma maneira mais facil de fazer a mesma coisa posta ai XD[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem legal cara.Me explica três coisas: o que são esses "Put"?para que usar fputs? se fputs serve para gravação em arquivo? Esse script vê os e-mails que você tem?até

Compartilhar este post


Link para o post
Compartilhar em outros sites

oiientao... tpo, o fsockopen abre uma conexao com um ip, e cria tipo um "prompt de comandos", ai o fputs(), vai enviando os comandos que a gente quer para o servidor, entendeu ? XD, mais ele tambem pode ser usado para escrever em arquivos sim :P , a function Put fui eu quem fiz:

function Put($value){  return fputs($this->conn, $value . "\r\n");}

a unica coisa que ela faz é dar um fputs() num valor + \r\n (que no caso seria para indicar para o "prompt de comandos" que ali acaba aquela linha de comandos), maisela eu so fiz para diminuir o codigo, nao era necessario XD

Esse script vê os e-mails que você tem?

ah nao nao, esse nao le, servidor Smtp, é para enviar, servidor Pop3 é para receber XD, mais eu ja postei um exemplo de como ver seus emails usando Imap XDolha aqui:http://forum.imasters.com.br/index.php?sho...iew=getlastpost[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal, só q aqui nao ta enviando nao...ele mostra a mensagem enviou e o email nao chega.

 

tem idéia do que pode ser?

 

precisava mto disso ai.

 

<?$to = "carlos@aafdz.com";$from = "meuemail";$subject = "[Portal] - Teste";$msg = "#@?$%~, funcionou!!!!";include "smtp.class.php";$smtp = new Smtp("255.255.255.255");$smtp->user = "meuuser";$smtp->pass = "minha senha";$smtp->debug = false;if($smtp->Send($to, $from, $subject, $msg)){echo "enviou";}else{echo "falha ao enviar;_;";}?>

obvio q eu tirei o username, senha e o ip do smtp...mas eles estao corretos

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou conseguindo porém apenas com servidores smtp q nao precisam de autenticação...tenho dois servidores q precisam de autenticação e eles nao enviam nada, a pagina mostra q enviou, porém nao chega nenhum email.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sadboar, alguns dos servidores que necessitam de autenticação requerem que seja feito conexao com o pop3 antes do smtptalvez seja isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP MAILER

Achei essa classe na Internet. Mas já adianto que não é muito interessante... mas

 

<?

 

/******************************************************

**

** PHP Mailer 2.0

**

** This script is easy to configure. Just change the variables below to

** suit your environment and PHP does the rest!

**

** http://www.fulano.com

**

*******************************************************/

 

/*******************************************************

 

Enter your site details below!

 

*******************************************************/

 

// Enter your contact email address here

$adminaddress = "thegreencardtur@yahoo.com.br";

 

// Enter the address of your website here include http://www.

$siteaddress ="http://www.greencardturismo.com";

 

// Enter your company name or site name here

$sitename = "Green Card Turismo®";

 

/*******************************************************

 

No need to change anything below ...

 

*******************************************************/

 

// Gets the date and time from your server

$date = date("m/d/Y H:i:s");

 

// Gets the IP Address

if ($REMOTE_ADDR == "smtp.mail.yahoo.com.br") $ip = "200.155.23.119";

else $ip = getHostByAddr($REMOTE_ADDR);

 

//Process the form data!

// and send the information collected in the Flash form to Your nominated email address

if ($action != ""):

mail("$adminaddress","Info Request",

"A visitor at $sitename has left the following information\n

First Name: $fname

Last Name: $lname

Email: $email

Company: $cname

Telephone: $telno\n

The visitor commented:

------------------------------

$comments

 

Logged Info :

------------------------------

Using: $HTTP_USER_AGENT

Hostname: $ip

IP address: $REMOTE_ADDR

Date/Time: $date","FROM:$adminaddress");

 

//This sends a confirmation to your visitor

mail("$email","Seus dados foram registrados e logo entraremos em contato, obrigado por visitar nosso site $sitename",

"Olá $fname,\n

Obrigado pelo interesse em $sitename!\n

Logo entraremos em contato, Saudações,

$sitename

$siteaddress","FROM:$adminaddress");

 

//Confirmation is sent back to the Flash form that the process is complete

$sendresult = "Seus dados foram registrados e logo entraremos em contato <a href = \"$siteaddress\" target = \"_blank\"><u>$sitename</u></a>. Obrigado. ";

$send_answer = "answer=";

$send_answer .= rawurlencode($sendresult);

echo "$send_answer";

 

endif;

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá aparecendo isso quando tento usar a classe, alguem sabe dizer o que é ?Warning: fputs(): supplied argument is not a valid File-Handle resource in C:\WINDOWS\SERV-N\www\smtp.class.php on line 36

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao deu certo gente fiz assim :nao ta chegando o email .

<?include ("smtp.php");$from = $_POST['email'];$to = "SEU_EMAIL_AQUI";$subject = "Teste de utilização de classe de uso";$msg = "Recebendo o teste";$smtp = new Smtp("smtp.mail.yahoo.com.br");$smtp->user = "o_drunk@yahoo.com.br";$smtp->pass = "XXXX";$smtp->debug = false;if($smtp->Send($to, $from, $subject, $msg)){echo "enviou";}else{echo "falha ao enviar;_;";}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

opaeu tinha ficado de postar a classe ate o fim da semana, entao aqui esta ela, ela ta meio fraca... mais to meio sem tempo para fazer algo realmente legal, o importante é que esta funcionando XDvou postar ela, e em seguida explicar os parametros:

<?class Smtp{ var $conn; var $user; var $pass; var $debug = true; function Smtp($host){  $this->conn = fsockopen($host, 25, $errno, $errstr, 30);  $this->Put("EHLO $host"); } function Auth(){  $this->Put("AUTH LOGIN");  $this->Put(base64_encode($this->user));  $this->Put(base64_encode($this->pass)); } function Send($to, $from, $subject, $msg){    $this->Auth();  $this->Put("MAIL FROM: " . $from);  $this->Put("RCPT TO: " . $to);  $this->Put("DATA");  $this->Put($this->toHeader($to, $from, $subject));  $this->Put("\r\n");  $this->Put($msg);  $this->Put(".");    $this->Close();  if(isset($this->conn)){  return true;  }else{  return false;  } } function Put($value){  return fputs($this->conn, $value . "\r\n"); } function toHeader($to, $from, $subject){  $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 Close(){  $this->Put("QUIT");  if($this->debug == true){  while (!feof ($this->conn)) {    echo fgets($this->conn) . "<br>\n";  }  }  return fclose($this->conn); }}?>

e

<?include "smtp.class.php";$smtp = new Smtp("mail.host.com");$smtp->user = "user@host.com";$smtp->pass = "password";$smtp->debug = false;if($smtp->Send($to, $from, $subject, $msg)){ echo "enviou";}else{ echo "falha ao enviar ;_;";}?>

é apenas isso.. acho que ja deu para pegar... mais vou explicar XDSmtp( $host_do_smtp ) // ex: smtp.host.com$user // usuario$pass //senha$debug // se estiver true, retorna as msgs do server, so serve mesmo para debugar o codigoSend( $para_quem, $de_quem, $assunto, $mensagem)é bem simples mesmo XDse alguem ver algum erro na logica ou alguma maneira mais facil de fazer a mesma coisa posta ai XD[]'s
Depois que eu colocar tudo isto e no formulario como que eu coloco(html)?Depois que eu colocar tudo isto e no formulario como que eu coloco(em html)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae reck_neck, realmente tá de (SUPER) parabéns por essa classe.Poucos (dos que postaram aqui) entenderam a beleza dela.Para os que não entenderam: Esta classe serve pra enviar emails independente da função nativa "mail" do php. E é uma mão na roda. Muito bom... Quase perfeito (só ta faltando a opção de envio de emails html, vou ver se faço ela aqui e posto pro pessoal).PS.: Para quem tentou enviar usando o login do yahoo e não conseguiu é só voce retirar o @yahoo.com.br do seu user que funcionará 100%. Exemplo do meu caso:$smtp->user = "micoxjcg";No campo $from, aí sim, você deve colocar seu email completo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

micox nao deu certo aqui pq ?

<?include ("smtp.class.php");$from = "o_drunk@yahoo.com.br";$to = "familiasimpson@uol.com.br";$subject = "Teste de utilização de classe de uso";$msg = "Recebendo o teste";$smtp = new Smtp("smtp.mail.yahoo.com.br");$smtp->user = "o_drunk";$smtp->pass = "####";$smtp->debug = false;if($smtp->Send($to, $from, $subject, $msg)){echo "enviou";}else{echo "falha ao enviar;_;";}?>

configurei o php.ini pra usar o yahoo .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Implantei a classe normalmente e funciona apenas se o debug estiver true.. os dois..se coloca false como no exemplo, ele simplesmente não envia o e-mail..Onde estaria o problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

micox nao deu certo aqui pq ?

Mestre fyoda, ativa o debug=true e me fala o resultado do debug.sublyer, vou testar o lance do debug lá em casa. Porque aqui no serviço eu não tenho acesso a servidores DNS (que é de onde o fsockopen encontra o host de destino). Mas pra mim funcionou com ou sem o debug. Ele só atua lá no final depois de tudo...Ó, talvez o problema de voces seja o mesmo que eu tenho aqui no serviço.Como nossa rede é filtrada por proxy, o script php (mais especificamente a função fsockopen) não tem como descobrir o ip do provedor que voce indicou pois o acesso a servidores DNS é bloqueado. (servidores DNS são quem mantém a lista que relaciona nome_de_host -> IP).

Compartilhar este post


Link para o post
Compartilhar em outros sites

micox nao deu certo aqui pq ?

Mestre fyoda, ativa o debug=true e me fala o resultado do debug.sublyer, vou testar o lance do debug lá em casa. Porque aqui no serviço eu não tenho acesso a servidores DNS (que é de onde o fsockopen encontra o host de destino). Mas pra mim funcionou com ou sem o debug. Ele só atua lá no final depois de tudo...Ó, talvez o problema de voces seja o mesmo que eu tenho aqui no serviço.Como nossa rede é filtrada por proxy, o script php (mais especificamente a função fsockopen) não tem como descobrir o ip do provedor que voce indicou pois o acesso a servidores DNS é bloqueado. (servidores DNS são quem mantém a lista que relaciona nome_de_host -> IP).
Sabe onde é estranho... quando usei pela primeira vez a classe ele enviava numa boa, mas agora só envia se estiver com o debug true.. muito estranho isso.. tem que realizar alguma mudança no PHP.INI ou não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sabe onde é estranho... quando usei pela primeira vez a classe ele enviava numa boa, mas agora só envia se estiver com o debug true.. muito estranho isso.. tem que realizar alguma mudança no PHP.INI ou não?

Não. No script há a função fsockopen que abre a conexão com o servidor de email (server smpt) de destino. Mas creio que ela não precisa de nenhuma configuração no php.ini não.Imagino que o problema de voces esteja realmente relacionado ao bloqueio de consultas a servidor DNS. Pra testar faça o seguinte:Na máquina que roda o php (seu servidor), execute um ping em "mail.yahoo.com".Se o ping não for executado com sucesso, voce não está conseguindo encontrar o servidor mail.yahoo.com. Sacou?Ah e poste o resultado do debug aqui pra eu ver o que tá retornando de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

retornou isso quando coloquei true o debug

220 smtp104.mail.mud.yahoo.com ESMTP 250-smtp104.mail.mud.yahoo.com 250-AUTH LOGIN PLAIN XYMCOOKIE 250-PIPELINING 250 8BITMIME 334 VXNlcm5hbWU6 334 UGFzc3dvcmQ6 235 ok, go ahead (#2.0.0) 250 ok 250 ok 354 Enter mail, end with "." on a line by itself 250 ok 1145632269 qp 17636 221 smtp104.mail.mud.yahoo.com enviou

e o ping retornou tudo . o ping teve 0% de perda .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puts... Pelamordedeus não faz mas isso não. Código gigantesco. hehehe.A classe do red neck já é suficiente. Esquece esse elefante branco ae...Quanto ao debug que você postou. Lendo ele, agente percebe que o email FOI ENVIADO CORRETAMENTE.O que pode ter acontecido é que, voce não achou o email lá na pasta dele ao tentar ler. Pode ser que seu provedor de email considerou ele um SPAM e jogou na pasta de Mensagens em massa.você já verificou esta pasta?

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.