Ir para conteúdo

POWERED BY:

Arquivado

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

red neck *

class smtp

Recommended Posts

Véio. Apaga a senha do seu email lá e muda ela pois agora todo mundo já sabe que é "janio1".Tipo apareceu "enviou" ? SE apareceu, aguarda um pouco e verifica se chegou. É que demora um tempo mesmo. Lembre-se de olhar na lixeira e na pasta "em massa".Aquele email que você mandou pro meu yahoo chegou belezão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desabilita o antivirus e o firewall quando for enviar. eles costumam atrapalhar sim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

220 mx.gmail.com ESMTP h9sm4772429wxd 250-mx.gmail.com at your service 250-SIZE 20971520 250-8BITMIME 250-STARTTLS 250 ENHANCEDSTATUSCODES 530 5.7.0 Must issue a STARTTLS command first h9sm4772429wxd

Compartilhar este post


Link para o post
Compartilhar em outros sites

para enviar como HTML altere duas funcoes:

 

 

function Send($to, $from, $subject, $msg, $ad=''){

 

$this->Auth();

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

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

$this->Put("DATA");

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

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

$this->Put($msg);

$this->Put(".");

$this->Close();

if(isset($this->conn)){

return true;

}else{

return false;

}

}

function toHeader($to, $from, $subject, $ad=''){

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

$header .= $ad;

return $header;

}

em negrito o que foi adicionado.

o restante nao precisa mexer

 

 

quando for chamar a class faça assim:

 

<?php

 

include "smtp.class.php";

 

$smtp = new Smtp("seu_sevidor");

$smtp->user = "seu_user";

$smtp->pass = "sua_senha";

$smtp->debug = false;

 

 

$to = "email_destino";

$from = "quem-envia";

$subject = "assunto";

$msg = "mensagem em html";

$ad = "Content-Type: text/html \r\n";

 

if($smtp->Send($to, $from, $subject, $msg, $ad)){

echo "enviou";

}else{

echo "falha ao enviar ;_;";

}

 

?>

a diferença em negrito

 

 

aqui funcionou beleza

 

valeu ai pro cara que criou, muito bopm e prático

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sensuais, você disse que o fputs está fora do WHILE

 

<?

 

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

}

}

 

?>

Nesse caso, como ficaria o código acima sem dar o erro ?! :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

o o que está aparecendo em meu navegador com debug true:220 smtp102.mail.mud.yahoo.com ESMTP 250-smtp102.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 go ahead 250 ok 1149776064 qp 14126 221 smtp102.mail.mud.yahoo.com enviouMas ainda não chegou nada. Alguém poderia me dar uma dica? Estava tendo os mesmos problemas do Mestre Fyoda. Mas agora só estou esperando a chegada o email. Pelo yahoo demora. Mandei ontem um email do yahoo para outro email comercial, mais ou menos este horário e chegou só a tarde. Vou aguardar. Se alguém achar que está errado, favor dar um toque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que está certo.Toda a comunicação SMTP foi feita certin de acordo com o debug aí.Agora é aguardar.Lembre-se que as vezes, os provedores jogam estes emails em lixeiras ou caixas de SPAM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que devo fazer se isso acontecer?

Eu acho que está certo.Toda a comunicação SMTP foi feita certin de acordo com o debug aí.Agora é aguardar.Lembre-se que as vezes, os provedores jogam estes emails em lixeiras ou caixas de SPAM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada nas minhas configurações se estão corretas:

 

 

---- php.ini------

 

 

[mail function]

; For Win32 only.

SMTP = smtp.mail.yahoo.com.br

smtp_port = 25

 

; For Win32 only.

sendmail_from = www_fabioaires@yahoo.com.br

 

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").

;sendmail_path =

 

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

 

Agora olha o meu arquivo teste.php

 

------------teste.php------------

 

 

<?

 

include ("smtp.class.php");

 

$smtp = new Smtp("smtp.mail.yahoo.com.br");

$smtp->user = "www_fabioaires";

$smtp->pass = "XXXXXXX";

$smtp->debug = true;

 

 

if($smtp->Send($to, $from, $subject, $msg)){

echo "enviou";

}else{

echo "falha ao enviar ;_;";

}

 

?>

 

O usuário tem que ter somente a id, pois se acrescentar o @yahoo.com.br dá pau.

 

 

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

 

Olha só um detalhe:

 

o interessante é que se eu configurar o php.ini e o teste.php para o e-mail www_fabioaires@yahoo.com.br, dá certo, como vcs viram a configuração acima. Agora se eu usar outros e-mails que estão ativos, estes dão os seguinte erros, mesmo eu substituindo o www_fabio aires no php.ini e no teste.php. Usando os outros usuários(tjairesjr@yahoo.com.br ou apl_silva@yahoo.com.br) dá o seguinte erro:

 

 

220 smtp107.mail.mud.yahoo.com ESMTP

250-smtp107.mail.mud.yahoo.com

250-AUTH LOGIN PLAIN XYMCOOKIE

250-PIPELINING

250 8BITMIME

334 VXNlcm5hbWU6

334 UGFzc3dvcmQ6

535 authorization failed (#5.7.0)

530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html

enviou

 

obs.: Com o www_fabioaires@yahoo.com.br está dando tudo certo, só falta chegar o e-mail, que no caso, não quer chegar de jeito nenhum.

 

Muito estranho.

Aires

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que devo fazer se isso acontecer?

Quanto a jogarem seu email em caixas de SPAM voce não pode fazer quase nada.Tenta mudar o texto e o assunto da sua mensagem pros algorítmos antispam não acharem que voce é propaganda.Lembre-se de que o mesmo email que está configurado em smtp->user deve ser o mesmo do from pra evitar que caia como spam.Isso é uma guerra de tentativas e erros. Não há uma regra ou jeito certo de fazer (pelo menos que eu saiba).Algo que já deu certo pra mim pode parar de dar certo.Seu email pode demorar a chegar sim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera naun tive tempo de ler tudo mais sobre o servidor que requer autenticação tentem isso $mail->SMTPAuth = true;ainda naun testei mais naun custa tentar okflwz

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae galera ...usei o smtp.class com o suporte pra html ... e enviando a mensegem individualmente ( para um destinatario só, ) ela chega normal.Mas qdo faço um while, pra enviar pra várias pesssoas ele dá o seguinte erro:Fatal error: Cannot redeclare class smtp in /var/www/dimontao.com.br/admin/smtp.class.php on line 3dae manda só para o primeiro.toda a parte das funções estão dentro do while ... cujo a estrutura é mais ou menos assim: (ficticio)// SELECT E QUERY DO MYSQLwhile (ARRAY) { //abre while$destinatario = $array[destinatario]include "smtp.class.php";$smtp = new Smtp("HOST");$smtp->user = "USER";$smtp->pass = "PASS";$smtp->debug = false;$to = $destinatario; //setada dentro do while$from = $remetente; //setada antes do while por $_POST$subject = $assunto; //setada antes do while por $_POST$ad = "Content-Type: text/html \r\n";if($smtp->Send($to, $from, $subject, $msg, $ad)){echo "Enviado";}else{echo "falha ao enviar ;_;";}} //fecha whileAlguem poderia me ajudar ?Aguardo uma resposta ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia galera olhem so eu consegui fazer rodar esse script na minha maquina local mais no servidor onde fica a pagina ele não rodou nem f******. o que será que pode ser ?

 

alterei a class smtp para enviar html

<?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";  $header .= "MIME-Version: 1.0\r\n";  $header .= "Content-type: text/html charset=iso-8859-1\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);}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,Alguma luz para como fazer o envio para diversos emails? Usando while or foreach...Estou me deparando com o seguinte erro:Warning: fputs(): 2 is not a valid stream resource in /home/tiago/public_html/news_class_2.php on line 37O que é isso??Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para mim funcionou de cara... parabens...só fiz um ajuste para enviar em formato htmlfunction 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"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; // só adicionei esta linha return $header;}se ninguem postou... ai via a contribuiçãoabraços

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.