wenderlan 0 Denunciar post Postado Setembro 12, 2006 Galera antes de tudo quero dizer que já fiz pesquisa no forum e no google, mas o que eu encontrei estava meio confuso, gostaria de saber se alguém pode me informar como vou enviar um formulário que esta em Formulário de contato , entrei em contato com o pessoal do servidor e eles disseram que para o envio do email eu preciso de um script que autentica o email para o envio do formulário. este é um tópico parecido com o meu, mas que não teve solução, ou pelo menos o colega não postou a solução http://forum.imasters.com.br/index.php?sho...ail+autenticado Compartilhar este post Link para o post Compartilhar em outros sites
PacketSpy 0 Denunciar post Postado Setembro 12, 2006 Oláá !!! Apanhei com isso tbm ... dá uma olhada nesse aqui: http://www.xpertmailer.com/ Seu codigo fica + ou - assim !!!! Espero que te ajude !!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif require_once "xpm2/smtp.php";// E_ALL -> debugging// false -> publicerror_reporting(E_ALL);// 0 -> no time limitset_time_limit(0);$nome = $_POST["txt_nome"];$de = $_POST["txt_email"];$assunto = $_POST["txt_assunto"];$cliente = $_POST["txt_cliente"];// Essa variavel contém os simbolos que seram substituidos para corrigir o bug na formatação do email$descartar = array('"', "\"", "\\", "3D~");$msg = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";$msg.= "<html>\n";$msg.= "<head>\n";$msg.= "<title>************</title>\n";$msg.= "<meta http-equiv=\"Content-Type\" content=\"text/html\"; charset=\"iso-8859-1\">\n";$msg.= "</head>\n";$msg.= "<body>\n";// a linha abaixo faz a substituição$msg.= str_replace($descartar, "", $_POST["txt_msg"]);$msg.= "\n</body>\n";$msg.= "</html>";$mail = new SMTP;$mail->Delivery('relay');//$mail->Relay('relay-hostname.net', 'username', 'password', 465, 'autodetect', 'tls');$mail->Relay($smtp_server, $smtp_user, $smtp_pass, 25, 'autodetect', false);$mail->TimeOut(10);$mail->Priority('high');$mail->From($de, $de);$mail->AddTo($destinatario, $destinatario);//$mail->AddCc('another@domain.com', 'another user');//$mail->AddBcc('hidden@host.com');//$mail->Text($msg, $charset, $encoding, $disposition);$mail->Html($msg);//$mail->AttachFile('image.gif', 'photo.gif', 'autodetect', 'inline');//$mail->AttachFile('file.zip');//$sent = $mail->Send('Hello World!');//echo $sent ? 'Success' : 'Error';if($sent = $mail->Send($assunto)){echo "E-mail enviado com sucesso para <b>$destinatario</b> <br /> \n";}else{echo "Falha ao enviar e-mail para <b>$destinatario</b> <br /> \n";}// for debugging//echo '<br>Result: '.$mail->result; Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Rambo 4 Denunciar post Postado Setembro 12, 2006 eu vi um script por aeh, que verificava a existencia do dominio utilizado no email, mas nau eh mtu seguro, pois eu poderia apenas escrever qualquercoisa@msn.com, por exemplo e funcionaria igual... =/flw Compartilhar este post Link para o post Compartilhar em outros sites
ScornInPC 1 Denunciar post Postado Setembro 13, 2006 amigo, tenho uma classe feita por mim, da uma olhada smtp.class.php <?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(3600); } //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; } }}?> formulario.php <form method="POST" action="enviar.php">Seu Email<BR><input type="text" name="origem" size="30"><BR><BR>Assunto<BR><input type="text" name="assunto" size="30"><BR><BR>Mensagem<BR><textarea name="mensagem" rows="5" cols="23"></textarea><BR><BR><input type="submit" value="Enviar"></form> enviar.php <?php include "smtp.class.php"; $Email = new SendMail; $Email->Servidor = "smtp.servidor.com.br"; //Servidor $Email->Autenticado = TRUE; //É autenticado $Email->Usuario = "usuario"; //Usuario $Email->Senha = "senha"; //Senha $Email->EmailDe = $_POST['origem']; //seu email $Email->EmailPara = "seu_email@dominio.com"; //Destino $Email->Assunto = $_POST['assunto']; //Assunto $Email->Corpo = $_POST['mensagem']; //Corpo /* * Caso precise anexar arquivos no email * utilize: * $Email->Anexar("/caminho/do/arquivo/1"); * $Email->Anexar("/caminho/do/arquivo/2"); * ... * Não se esqueça que é necessario fazer o * upload do cliente para o servidor primeiro * */ //Envia o email if($Email->Enviar()) { echo "Seu email foi enviado corretamente"; } else { echo "Desculpe, seu email não pode ser enviado"; }?> qualquer coisa pode postar ok?? =) Compartilhar este post Link para o post Compartilhar em outros sites
phrafa 0 Denunciar post Postado Novembro 24, 2010 Esse seu Script está Ótimo nossa cara muito bom mais como faço para colocar para enviar em formato HTML ? Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 24, 2010 Olha, para enviar e-mail com autenticação, eu sugiro a classe PHPMailer. Aqui tem um exemplo de como utilizar, fazendo a autenticação com o Gmail e em HTML. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites