Ir para conteúdo

Arquivado

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

gandarez

Usando a função MAIL

Recommended Posts

Pessoal,Quando eu utilizo a função mail sei que é usado o SMTP do servidor, eu gostaria de saber, como usar outro SMTP para enviar um email pelo PHP.Aguardo,

Compartilhar este post


Link para o post
Compartilhar em outros sites

só uma dúvida que ficou por mim,Muita gente ocmenta de setar valores no PHP.INI, mas esse arquivo não é de configuração do servidor ? se for, não tem como eu alterar né.Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ae, filézinho??

 

precisei fazer isso a um tempo, e ainda por cima enviar anexo, foi entaum que fiz uma classezinha pra fazer isso pra mim

 

smtp.class.php

<?/**	Classe SendMail e todas as suas funções foraum escrita por: Bruno Pitteli Gonçalves ||*scorninpc[(at])gmail([dot)]com como necessidade*ao se deparar com tal problema em enviar emails com anexos em servidores SMTP auteticados na criação*do portal http://www.unimed-andradina.com.br.*	Esta classe ou qualquer função nela contida pode ser usada em qualquer programa com fins lucrativos ou não,*porem devem ser setados no trexo do codigo fonte o nome e email do autor, e qual a*modificação caso ouver.*   O autor não é responsavel por erros e danos nestas funções.**   Possiveis problemas:*   Anexar mais de 10 arquivos sem ter auterado o array $Anexos para suportar mais que 10 anexos*   Anexar um arquivo de tipo não setado que não seja uma aplicação (necessita de testes)*   Caso a internet seja lenta o suficiente para cancelar a conexao com o servidor SMTP, o*   script ficará travado, pois não trato a quantidade de loops que ele erá fazer na função Esperar_Resp()**   Seja livre, distribua seu codigo, tire duvidas e de suporte a quem precisa.**   Duvidas:*   http://faidevel.zapto.org && http://www.fai.com.br/forum &&*   scorninpc[(at])gmail([dot)]com && #motd@irc.freenode.net*/class SendMail{   var $Servidor;	   //Endereço do servidor SMTP   var $Porta=25;	   //Porta do servidor SMTP   var $Autenticado;	//Autenticado ou não   var $Usuario;		//Usuario do servidor SMTP   var $Senha;		  //Senha do servidor SMTP	   var $EmailDe;		//Email de quem está enviando   var $EmailPara;	  //Email de quem vai receber   var $Assunto;		//Assunto do email   var $Corpo;		  //Mensagem do email   //Aumente para mais anexos   var $Anexos=array(" ", " ", " ", " ", " ", " "," ", " ", " "," ");   var $NumAnexos=0;   var $Barra="\\";	 //Variavel que guarda o tipo da barra, \\ - windows | / - Linux   var $erros=FALSE;	//Variavel que trata a situação da classe   //Construtor   function SendMail()   {	   //Aumenta o tempo de espera maximo	   set_time_limit(60);   }   //Criptografa o arquivo na base64   function CodarArquivo($arq)   {	   $fp=fopen($arq, "rb");	   if(!$fp)	   {		   $this->erros=TRUE;		   return FALSE;	   }	   $File=fread($fp, filesize($arq));	   fclose($fp);	   return base64_encode($File);   }   	//Retorna o nome do arquivo	function PegarNome($str)	{		$Nome="";		$i=strlen($str)-1;		while($str[$i]!="\\")			$i--;		$i++;		$j=0;		for($i; $i<strlen($str); $i++)		{			$Nome.=$str[$i];			$j++;		}		return $Nome;	}	//Retorna a extensão do arquivo, desde que ele tenha extesão	function PegarTipo($str)	{		$tipo="";		$i=strlen($str)-1;		$j=0;		while($str[$i]!=".")			$i--;		$i++;		$j=0;		for($i; $i<strlen($str); $i++)		{			$tipo.=$str[$i];			$j++;		}		return $tipo;	}	//Coloca o endereço do arquivo no array e aumenta o numero de anexos	function Anexar($arq)	{		$this->Anexos[$this->NumAnexos]=$arq;		$this->NumAnexos++;		return TRUE;	}	   //Função que verifica se as variaveis estão OK   function Verificar()   {	   //Verifica se é um servidor autenticado	   if( $this->Autenticado )		   if( !isset($this->Usuario) || !isset($this->Senha) )  //Se for autenticado, verifica o usuario e a senha			   $this->erros=TRUE;	   //Verifica se o servidor foi digitado	   if( !isset($this->Servidor) )		   $this->erros=TRUE;		   	   //Verifica se os parametros são validos	   if( !isset($this->EmailDe) || !isset($this->EmailPara) || !isset($this->Assunto) || !isset($this->Corpo) )		   $this->erros=TRUE;   }   //Função que espera o servidor responder   function Esperar_Resp($socket, $response, $line = __LINE__)   {	   while (substr($server_response, 3, 1) != ' ')		   if (!($server_response = fgets($socket, 256)))			   $this->erros=TRUE;	   if (!(substr($server_response, 0, 3) == $response))		   $this->erros=TRUE;   }   function Enviar()   {		$this->Verificar();		if( !$this->erros )		{			//Tenta conectar			if( !$socket=fsockopen($this->Servidor, $this->Porta, $errno, $errstr, 20) )				$this->erros=TRUE;			//Espera por resposta			$this->Esperar_Resp($socket, "220", __LINE__);		   //Verifica se o email esta sendo autenticado		   //Caso for ele ira mandar um EHLO, pra dizer que vai ser autenticado		   //Caso não for ele manda um HELO simples.		   if( $this->Autenticado )		   {			   fputs($socket, "EHLO " . $this->Servidor . "\r\n");			   $this->Esperar_Resp($socket, "250", __LINE__);			   fputs($socket, "AUTH LOGIN\r\n");			   $this->Esperar_Resp($socket, "334", __LINE__);			   fputs($socket, base64_encode($this->Usuario) . "\r\n");			   $this->Esperar_Resp($socket, "334", __LINE__);			   fputs($socket, base64_encode($this->Senha) . "\r\n");			   $this->Esperar_Resp($socket, "235", __LINE__);		   }		   else		   {			   fputs($socket, "HELO " . $this->Servidor . "\r\n");			   $this->Esperar_Resp($socket, "250", __LINE__);		   }		   		   //Envia quem está mandando o email		   fputs($socket, "MAIL FROM: " . $this->EmailDe . "\r\n");		   $this->Esperar_Resp($socket, "250", __LINE__);		   //Diz ao servidor quem vai receber o email		   fputs($socket, "RCPT TO: " . $this->EmailPara . "\r\n");		   $this->Esperar_Resp($socket, "250", __LINE__);		   //Diz ao servidor que estou pronto para enviar a mensagem		   fputs($socket, "DATA\r\n");		   $this->Esperar_Resp($socket, "354", __LINE__);		   //Cabeçalho do email		   fputs($socket, "From: " . $this->EmailDe . "\r\n");		   fputs($socket, "To: " . $this->EmailPara . "\r\n");		   		   //Mando o assunto do email		   fputs($socket, "Subject: " . $this->Assunto . "\r\n");		   		   //Envia o cabeçalho		   fputs($socket, "MIME-Version: 1.0\r\n");		   fputs($socket, "Content-Type: multipart/mixed;\r\n");		   fputs($socket, "	  boundary=KkK170891tpbkKk__FV_KKKkkkjjwq\r\n");		   fputs($socket, "\r\n");		   fputs($socket, "\r\n");		   fputs($socket, "--KkK170891tpbkKk__FV_KKKkkkjjwq\r\n");		   fputs($socket, "Content-Type: text/plain; charset=US-ASCII\r\n");		   fputs($socket, "\r\n");		   fputs($socket, $this->Corpo);		   fputs($socket, "\r\n\r\n");		   		   //verifica se existe arquivo para ser enviado junto		   if($this->NumAnexos>0)		   {			   for($i=0; $i<$this->NumAnexos; $i++)			   {				   //Pega o tipo para o MIME TYPE				   $tipo=$this->PegarTipo($this->Anexos[$i]);				   strtolower($tipo);				   switch($tipo)				   {					   case "jpeg":					   case "jpg":						   $Tipo="image/jpeg";						   break;					   case "gif":						   $Tipo="image/gif";						   break;					   case "doc":						   $Tipo="application/msword";						   break;					   case "rar":						   $Tipo="application/rar";						   break;					   case "zip":						   $Tipo="application/zip";						   break;					   default:						  $Tipo="application/octet-stream";						  break;						  				   }				   //Pega o nome do arquivo				   $Nome=$this->PegarNome($this->Anexos[$i]);				   				   fputs($socket, "--KkK170891tpbkKk__FV_KKKkkkjjwq\r\n");				   fputs($socket, "Content-Type: " . $Tipo . "; name=\"". $Nome . "\"\r\n");				   fputs($socket, "Content-Transfer-Encoding: base64\r\n");				   fputs($socket, "Content-Disposition: attachment; filename=\"" . $Nome . "\"\r\n");				   fputs($socket, "\r\n");				   fputs($socket, $this->CodarArquivo($this->Anexos[$i]));				   fputs($socket, "\r\n");			   }			   fputs($socket, "--KkK170891tpbkKk__FV_KKKkkkjjwq--\r\n");		   }		   //Avisa o servidor que ja acabei de enviar a mensagem		   fputs($socket, "\r\n.\r\n");		   $this->Esperar_Resp($socket, "250", __LINE__);		   //Sai do servidor e fecha o socket		   fputs($socket, "QUIT\r\n");		   fclose($socket);		   //Retorna um TRUE pra dizer que o email foi enviado		   if ($this->erros==TRUE)			  return FALSE;		   else			  return TRUE;		}	}}?>
teste.php

<?	set_time_limit(9999);		include "smtp.class.php";	$Email = new SendMail;	$Email->Servidor="smtp.yahoo.com.br"; //Servidor	$Email->Autenticado=TRUE;  //É autenticado	$Email->Usuario="email@server.com.br";  //Usuario	$Email->Senha="senha";	//Senha	$Email->Barra="\\"; //barra pra windows	$Email->EmailDe="teste@yahoo.com.br";  //seu email	$Email->EmailPara="teste@yahoo.com.br";  //Destino	$Email->Assunto="Minha mensagem.";  //Assunto	$Email->Corpo="";  //Corpo	$Email->Anexar("C:\\apache\\htdocs\\sendmail\\index.htm");   //Anexo	if($Email->Enviar())   //Envia o email		echo " -- $Assunto enviado. <BR>";	else	{		echo "erro";		die;	}?>
qualquer coisa ou duvida, só postar

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.