Ir para conteúdo

POWERED BY:

Arquivado

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

red neck *

class smtp

Recommended Posts

Estou com o seguinte problema para a classe postada na primeira página deste tópico:

 

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /usr/local/apache/htdocs/mail/1/smtp.class.php on line 11Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.mail.yahoo.com:25 (Unknown error) in /usr/local/apache/htdocs/mail/1/smtp.class.php on line 11Warning: fputs(): supplied argument is not a valid stream resource in /usr/local/apache/htdocs/mail/1/smtp.class.php on line 37

Alguém sabe oq há de errado?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo.. aqui só funcionou com o debug = TRUE;Mas tirei o echo para não mostrar e está ok agora... envia o e-mail e ninguém vê o debug.Mas.. por que só com o debu = true fununceia? Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me bati um poco para fazer funcionar...mais agora esta funcionando que nem uma belezasó que funciona só com o debug true, dai aparece aquele monte de tranquera do debugpir4t4 que echo que você tiro para não aparece o debug?upachei...só tira o echo da linhaecho fgets($this->conn) . "<br>\n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tava olhando esse código todo para envio d email com autenticação achei o maximo mas nao consegui colocar a funcionar e to precisando mesmo.... Ficou assim meu código:smtp.class.php<?class Smtp{ var $conn; //aqui coloco o servidor, senha e usuario novamente? ou nao precisa? 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); }}?>email.php<? //ENVIO EMAIL $to = 'osinfo@susepe.rs.gov.br'; $from = $to; $subject = 'os'; $msg = 'teste'; $host = 'smtp.direto.procergs.rs.gov.br'; include ("smtp.class.php"); $smtp = new Smtp($host); $smtp->user = 'osinfo@susepe.rs.gov.br'; $smtp->pass = '####'; $smtp->debug = true; if($smtp->Send($to, $from, $subject, $msg)) { echo "enviou"; } else { echo "falha ao enviar ;_;"; } ?>O email de envio e recebimento será o mesmo, aqui só faço um teste, pq quero enviar por email outras informações.. Como coloquei true no debug.. me apareceu isto:220 madison.procergs.com.br ESMTP Postfix250-madison.procergs.com.br250-PIPELINING250-SIZE 10000000250-VRFY250-ETRN250-AUTH PLAIN LOGIN250 8BITMIME334 VXNlcm5hbWU6334 UGFzc3dvcmQ6535 Error: authentication failed250 Ok554 : Relay access denied554 Error: no valid recipients221 Error: I can break rules, too. Goodbye.enviouSendp q tah dando erro na autenticação, queria saber semeu código esta correto ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema do script quanto a utilização somente com debug true...

 

Na verdade, o resultado está sendo exibido pelo while que está no final do arquivo smtp.class.php:

 

if($this->debug == true){  while (!feof ($this->conn)) {	echo fgets($this->conn) . "<br>\n";  }
Eu só removi o código echo fgets($this->conn) . "<br>\n"; e o problema foi resolvido. No lugar deste, coloquei uma mensagem de resultado, pois a mensagem de resultado da página no arquivo teste.php tornou-se desnecessária.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque quando envio um email em html com um estilo CSS ele remove os pontos dos estilos?

 

Ex:

<style type="text/css">

.texto {

color: #0099CC;

font-family:Arial, sans-serif;

font-size:12px;

font-weight:normal;

}

.texto_negrito {

color: #0099CC;

font-family:Arial, sans-serif;

font-size:12px;

font-weight:bold;

}

</style>

 

Ai fica assim:

 

<style type="text/css">

texto {

color: #0099CC;

font-family:Arial, sans-serif;

font-size:12px;

font-weight:normal;

}

texto_negrito {

color: #0099CC;

font-family:Arial, sans-serif;

font-size:12px;

font-weight:bold;

}

</style>

 

Ja testei com outra classe de SMTP tambem e da o mesmo erro, porque sera?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o coisa linda de deusfuncionou direitinho com email do yahoo, mas passei uns dois dias me matando, as vezes enviava, as vezes naum.Já tinham comentado aqui: mesmo desabilitado o firewall do windows continua a bloquear, eu teimei, mas finalmente...iniciar - painel de controle - firewall do windows - guia avançado - botão "configurações" da sua conexão - habilitar "Servidor de email para internet (SMTP)"se alguém souber de outro email gratuito que funcione avise por favor. testei o gmail com a porta 25 e 465 mas não deu certo.parabéns ao red neck e os outros usuários que colaboraram, em todos os foruns que eu visitei (+ de 10) falaram que não dava pra autenticar no php.ini (acho q é verdade) e que era impossível testar ou enviar localmente sem um servidor de email instalado na máquina.salve a exceção!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, desculpa ressuscitar o post... muito legal esta classe!Bom, consegui utilizá-la normalmente, mas nao consegui implementar duas necessidades:1 - Envio de anexos;2 - Envio de cópia da mansagem para outros destinatários.Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, esta dando este erro nas trê ultimas linhas, fala que enviou mas não chega ao destino.503 Error: need MAIL command 503 Error: need RCPT command 221 Error: I can break rules, too. Goodbye. Estou tentando enviar e-mail localmente.Obrigado a todos e fiquem com Deus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, achei o problema eu vacilei bonito.Nesta linha eu esqueci de configurar como smtp.mail.yahoo.com.br$smtp = new Smtp("smtp.mail.yahoo.com.br");Ai funcionou tudo certinho.Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, notem que se vocês deixarem o debug = false o e-mail não chega. Isso porque o serviço de SMTP precisa devolver as respostas dos comandos enviados. Então no método Close() vocês podem modificar o conteúdo:

 

function Close() {  $this->Put("QUIT");    /* Notem que o comando if ( $this->debug == true) foi removido daqui... */  while (!feof ($this->conn)) {  	/* ...e foi passado para dentro do while. */	if ($this->debug == true) {	  echo fgets($this->conn) . "<br>\n";	}		/* Mesmo sem dar echo é necessário receber a resposta do servidor */	else {	  fgets($this->conn);	}    }    return fclose($this->conn);}

Abraços,

 

 

Julian Davi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem pode miajudar?sou novo no php e estava procurando sulucoes pra enviar email com copia oculta e html ou txt algume tem algo ja pronto com essa clase que possa postar pois eu vi umexemplo aqui com html mais a onde eu colocao o arquivo html?Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso class smtp e pop para meu server de mu que usa 1 sistema de recuperação de senha via e-mail.

 

 

tem que ativa includes no php.ini pra funfa certin

 

 

 

Nada díficil, só demorei pra saka ;P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

Estou usando a class.smtp só q eu to recebendo a seguinte mensagem de erro:

 

220 xxx.mysite4now.com

250-xxx.mysite4now.com Hello

250-SIZE 31457280

250-AUTH LOGIN CRAM-MD5

250 OK

334 VXNlcm5hbWU6

 

334 UGFzc3dvcmQ6

421 Command timeout, closing transmission channel

 

falha ao enviar ;_;

 

Alguem sabe me dizer o pq??

Obs: Ja mudei o timeout da classe no fsockopen e nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos

Já fiz de td que postaram aqui nesse tópico, mas o envio não rola de jeito nenhum.

No looping da como enviado, mas não recebo nada.

 

vejam o código:

 

classe smtp

<?
class Smtp{

var $conn;
var $user;
var $pass;
var $debug = true; //imasters

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: Low \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);
}
}
?>

Para o envio:

<?php
	 include ("smtp.class.php");
 
	  // Configuração da classe.smtp.php 
	  //$host = "smtp.sjc.terra.com.br"; //host do servidor SMTP 
	  $smtp = new Smtp("smtp.sjc.terra.com.br");
	  //$smtp = new Smtp($host);
	  $smtp->user = "xxxxxx"; //usuario do servidor SMTP 
	  $smtp->pass = "yyyyyyyy"; // senha do usuario do servidor SMTP
	  //$smtp->debug =true; // ativar a autenticação SMTP
	  $smtp->debug = false;	   

	  // Página que vai fazer a conexão com o bd 
	  include("conecta.php");
	  
	  // recebendo as informações do formulário
	  $to 		= $_POST["msg_para"];
	  $subject 	= $_POST["msg_assunto"];
	  $msg 		= $_POST["mensagem"];
	  
	  if($to == "todos"){
	  $sql 		= mysql_query("SELECT * FROM cadastro WHERE ativo = 's'");
	  $total 	= mysql_num_rows($sql); /* quantidade de registros */
	  $enviados = 0; /* conta os e-mails enviados */
	  $falhado 	= 0; /* conta os e-mail que não foram enviado */
	  
	  /* inicio do loop */
	  while($lista = mysql_fetch_array($sql))
	   /*coloca o resultado da consulta do banco de dados numa ARRAY e com o while imprime todo o conteudo da Array.*/
	   {

	  //$host = "smtp.sjc.terra.com.br"; //host do servidor SMTP 
	  $smtp = new Smtp("smtp.sjc.terra.com.br");
	  //$smtp = new Smtp($host);
	  $smtp->user = "xxxxxxx"; //usuario do servidor SMTP 
	  $smtp->pass = "yyyyyyy"; // senha do usuario do servidor SMTP
	  //$smtp->debug =true; // ativar a autenticação SMTP
	  $smtp->debug = false;		 
	  
	  $to = $lista["email"];
	  $from = "meuemail@terra.com.br";
	  if($smtp->Send($to, $from, $subject, $msg )) {
	  $enviados = $enviados + 1;
	  $mensagem = "Enviado Corretamente!";
	  }
	  else{
	  $falhados = $falhados +1;
	  $mensagem = "E-mail não enviado";
	  }
	  echo "Enviado para $to <br> Status: $mensagem<br>";
	  }
	  /* fim do loop */
	  echo "E-mail que deveriam ser enviados: $total e-mails<br>";
	  echo "E-mail enviados: $enviados e-mails <br>";
	  echo "E-mail não enviados: $falhado <br>";
	  }
	  else{
	  $from = "meuemail@terra.com.br";
	  if($smtp->Send($to, $from, $subject, $msg)){
	  $mensagem = "Enviado Corretamente!";
	  }
	  else{
	  $mensagem = "E-mail não enviado";
	  }
	  echo "Enviado para $to <br> Status: $mensagem<br>";
	  }
	  ?>

O que estou fazendo de errado?

Ainda restam alguns cabelos p/ arrancar.

Td ajuda é divina e bem vinda.

abraç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.