Ajuda - Busca - Membros - Calendário
Versão Completa: SMTP enviando e-mail Autenticado
Fórum Script Brasil > Programação & Desenvolvimento > PHP > Repositório de Scripts - PHP
jissa
Segue classe simples com exemplo para envio de e-mail autenticado


smtp.class.php
CODE
<?
class Smtp{

var $conn;
var $usuario_smtp;
var $senha_smtp;
var $debug;

function Smtp($servidor_smtp){
    $this->conn = fsockopen($servidor_smtp, 25, $errno, $errstr, 30);
    $this->AdicionaDadosSMTP("EHLO $servidor_smtp");
    }
function Autentica(){
    $this->AdicionaDadosSMTP("AUTH LOGIN");
    $this->AdicionaDadosSMTP(base64_encode($this->user));
    $this->AdicionaDadosSMTP(base64_encode($this->pass));
}

function Send($para, $de, $assunto, $mensagem){
    $this->Autentica();
    $this->AdicionaDadosSMTP("MAIL FROM: " . $de);
    $this->AdicionaDadosSMTP("RCPT TO: " . $para);
    $this->AdicionaDadosSMTP("DATA");
    $this->AdicionaDadosSMTP($this->CabecTO($para, $de, $assunto));
    $this->AdicionaDadosSMTP("\r\n");
    $this->AdicionaDadosSMTP($mensagem);
    $this->AdicionaDadosSMTP(".");
    $this->Close();
    if(isset($this->conn)){
    return true;
    }else{
        return false;
    }
}

function AdicionaDadosSMTP($valor){
    return fputs($this->conn, $valor . "\r\n");
}

function CabecTO($para, $de, $assunto){
    $header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($de) ."> \r\n";
    $header .= "From: <" . $de . "> \r\n";
    $header .= "To: <".$para."> \r\n";
    $header .= "Subject: ".$assunto." \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";
    return $header;
}

function Close(){
    $this->AdicionaDadosSMTP("QUIT");
    if($this->debug == true){
        while (!feof ($this->conn)) {
            fgets($this->conn) . "<br>\n";
        }
    }
    return fclose($this->conn);
}
}
?>


configura_smtp.php
CODE
<?
###Inclui a Classe ###
include "smtp.class.php";

###Configuração dos dados de conexão com o servidor###
################################################################################
###############################
$ServidorEmail = "mail.seuservidor"; //coloque a mesma configuração que coloca no SMTP em cliente de e-mail
$EmailParaAutenticar = "endereco@email"; coloque o endereco de e-mail
$SenhaEmail = "senha"; //coloque a senha de seu e-mail
################################################################################
###############################


###Servidor que vai se conectar ###
$servidor_smtp = $ServidorEmail;
###e-mail para autenticação ###
$smtp->usuario_smtp = EmailParaAutenticar;

###senha do e-mail para autenticação ###
$smtp->senha_smtp = $SenhaEmail; /* senha do usuario do servidor SMTP*/

$smtp = new Smtp($servidor_smtp);
$smtp->debug =true;
?>



envia_email.php
CODE
<?
include "configura_smtp.php";


### Dados para o envio #####

$de= "email@quequerqueapareca; /* coloque aqui o e-mail que vai aparecer */
$para = "email@paraquemvai"; /* para quem enviar o e-mail*/
$assunto = "Teste de e-mail utilizando SMTP"; /* assunto da mensagem */
$mensagem = "<b>Teste de Envio de Mensagem utilizando classe smtp</b><br>";

### Envia a mensagem ###
$smtp->Send($para, $de, $assunto, $mensagem);/* faz o envio da mensagem */
?>
RonaFreitas
Funcionou, foi útil pra mim. Obrigado.
needforspeed1501
Bom dia,
Sou novata e fiz meu primeiro site seguindo tutoriais da net.Porem estou com problemas para receber e-mails atravez de meu formulario.A uolhost disse q somente e possivel se o formulario tiver autenticacao smtp.mas quando peco suporte quanto a isso eles falam falam e num explicam nada!
Gostaria,se possivel,que me ensinasse a adicionar essa tal d autenticacao smtp no meu arquivo enviar.php
Meu arquivo esta assim:

<?php
##########################################################
///////////////////////////////////////////////////// ###
/// Autor: Mateus Campos //// ###
/// E-mail: mateuscampos@globo.com //// ###
/// Site: www.centralwarez.com //// ###
/// MSN: mateus@centralwarez.com //// ###
/// Obs: favor não retirar os nossos créditos!!! //// ###
///////////////////////////////////////////////////// ###
##########################################################
// aqui começa o script
//pega as variaveis por POST
$nome = $_POST["nome"];
$site = $_POST["site"];
$email = $_POST["email"];
$fone = $_POST["fone"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];

global $email; //função para validar a variável $email no script todo

$data = date("d/m/y"); //função para pegar a data de envio do e-mail
$ip = $_SERVER['REMOTE_ADDR']; //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT']; //função para pegar o navegador do visitante
$hora = date("H:i"); //para pegar a hora com a função date

//aqui envia o e-mail para você
mail ("contato@japaservice.com", //email aonde o php vai enviar os dados do form
"$assunto",
"Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nSite: $site\nE-mail: $email\nTelefone: $fone\n\nMensagem: $mensagem",
"From: $email"
);

//aqui são as configurações para enviar o e-mail para o visitante
$site = "www.japaservice.com"; //o e-mail que aparecerá na caixa postal do visitante
$titulo = "Japa Service - Comunicação Visual e Toldos"; //titulo da mensagem enviada para o visitante
$msg = "$nome, obrigado por entrar em contato conosco, em breve entraremos em contato";

//aqui envia o e-mail de auto-resposta para o visitante
mail("$email",
"$titulo",
"$msg",
"From: $site"
);
echo "<p align=center>$nome, sua mensagem foi enviada com sucesso!</p>";
echo "<p align=center>Estaremos retornando em breve.</p>";
?>

Desde já agradeco a quem puder me dar uma luz!!
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.