gandarez 0 Denunciar post Postado Agosto 23, 2006 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
gandarez 0 Denunciar post Postado Agosto 23, 2006 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
gandarez 0 Denunciar post Postado Agosto 23, 2006 eu procurei sobre esse ini_set() mas não encontrei nada referente a SMTP. Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Agosto 23, 2006 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