[Tutorial] Atualizando o PHPMailer da include NMailer
#1

Saudaзхes!
Eu uso a include NMailer, do Locky_, faz tempo e funciona perfeitamente!

Ela usa os scripts do PHPMailer para enviar os e-mails, porйm й uma versгo antiga e vulnerбvel.
Eu atualizei com a versгo mais recente e vou disponibilizar abaixo as alteraзхes mнnimas necessбrias para a
include funcionar com as novas versхes do PHPMailer. Muito simples.
OBS: Nгo sou um expert em PHP, mas mesmo entendendo do bбsico, meu tutorial funciona!

--------------------------------------------------------------------------------------
NOTA: As novas atualizaзхes usam PHP 5.5 pra cima, ao contrбrio da atual que usa PHP 5.2 pra cima.
Certifique-se de que seu host usa PHP 5.5 pra cima!

Com acesso ao CPanel de sua hospedagem, procure por:


Clique e veja as opзхes de versхes do PHP disponнveis!
--------------------------------------------------------------------------------------

VANTAGENS DE ATUALIZAR
1 - Melhorias constantes nos scripts.
2 - Seguranзa no sistema de envio de e-mails.
3 - Reduзгo, dinamismo e organizaзгo dos arquivos.

TUTORIAL
1 - Nгo esqueзa de fazer um backup dos arquivos originais antes.
2 - Se vocк nгo possui, baixe a include NMailer: https://sampforum.blast.hk/showthread.php?tid=572769
3 - Baixe a ъltima versгo do PHPMailer: https://github.com/PHPMailer/PHPMailer/releases
4 - A presente versгo й 6.0.5, entгo pegue a pasta "PHPMailer-6.0.5" e cole dentro da pasta "nmail", a qual vem junto com os arquivos da include.
5 - Dentro da pasta "nmail", abra o arquivo "index.php".
6 - Substitua todo o conteъdo do arquivo por este:
PHP код:
<?php
    
use PHPMailer\PHPMailer\PHPMailer;
    use 
PHPMailer\PHPMailer\SMTP;
    include (
"PHPMailer-6.0.5/src/PHPMailer.php");
    include (
"PHPMailer-6.0.5/src/SMTP.php");
    
$mail = new PHPMailer();
    if(!isset(
$_GET['autenticado']))
    {
        if(!isset(
$_POST['de']) || !isset($_POST['para']) ||
        !isset(
$_POST['tit']) || !isset($_POST['msg'])) die ("Erro - E-mail nгo autenticado ou mal formado!");
        
$charset $_POST['charset'];
        
$de $_POST['de'];
        
$nome $_POST['nome'];
        
$para $_POST['para'];
        if(
$charset == "utf-8")
        {
            
$titulo utf8_encode($_POST['tit']);
            
$msg utf8_encode($_POST['msg']);
        }
        else
        {
            
$titulo $_POST['tit'];
            
$msg $_POST['msg'];
        }
        
$type $_POST['type'];
        
$headers "MIME-Version: 1.1\r\n";
        
$headers .= "Content-type: $type; charset=$charset\r\n";
        
$headers .= "From: $nome<{$_POST'de' ]}>\r\n"// remetente
        
$headers .= "Return-Path: $de\r\n"// return-path
        
$envio mail($para$titulo$msg$headers);
        if(!
$envio) echo 'E-mail nгo enviado...';
        else echo 
'E-mail enviado com sucesso!';
    }
    else
    {
        if(!isset(
$_POST['nome']) || !isset($_POST['de']) || !isset($_POST['senha']) || !isset($_POST['host']) || !isset($_POST['porta']) ||
        !isset(
$_POST['para']) || !isset($_POST['tit']) || !isset($_POST['msg'])) die ("Erro - E-mail nгo autenticado ou mal formado!");
        
//$mail->SMTPDebug = 1;//Use isso para checar possiveis problemas
        
$mail->SMTPSecure 'tls';
        
$mail->IsSMTP();
        
$mail->SetLanguage("br");
        
$mail->CharSet $_POST['charset'];
        
$mail->Username $_POST['de'];
        
$mail->From $_POST['de'];
        
$mail->FromName $_POST['nome'];
        
$mail->Password $_POST['senha'];
        
$mail->Host $_POST['host'];
        
$mail->Port $_POST['porta'];
        
$mail->SMTPAuth true;
        
$mail->AuthType $_POST['auth'];
        if(
$_POST['charset'] == "utf-8")
        {
            
$mail->Subject utf8_encode($_POST['tit']);
            
$mail->Body utf8_encode($_POST['msg']);
            
$mail->AltBody utf8_encode($_POST['msg']);
        }
        else
        {
            
$mail->Subject $_POST['tit'];
            
$mail->Body $_POST['msg'];
            
$mail->AltBody $_POST['msg'];
        }
        
$mail->IsHTML((($_POST['type'] == "text/html") ? (true) : (false)));
        
$mail->AddAddress($_POST['para']);
        
$envio $mail->Send();
        if(!
$envio) echo 'E-mail nгo enviado...';
        else echo 
'E-mail enviado com sucesso!';
    }
?>
7 - Observe os seguintes cуdigos importantes, com as regras das novas versхes:
PHP код:
    use PHPMailer\PHPMailer\PHPMailer;//Й preciso definirmos isso pra usarmos a classe PHPMailer().
    
use PHPMailer\PHPMailer\SMTP;//Tambйm isso pra usarmos as funзхes de envio de e-mail via SMTP.
    //Definindo/incluindo os arquivos necessбrios baseado na pasta com a versгo atual do PHPMailer.
    
include ("PHPMailer-6.0.5/src/PHPMailer.php");//Arquivo com as funзхes bбsicas do PHPMailer.
    
include ("PHPMailer-6.0.5/src/SMTP.php");//Arquivo com as funзхes bбsicas do sistema de envio via SMTP.
    
$mail = new PHPMailer();//Declaramos a classe PHPMailer() para usarmos no envio dos e-mails. 
NOTA: Esses cуdigos devem estar sempre no topo do script, nunca dentro de uma funзгo, ou nгo vai funcionar!

8 - Salve o arquivo "index.php" e envie a pasta "nmail" para o host.
9 - Pronto, vocк estб com a versгo mais atual do PHPMailer.
10 - Caso queira estudar mais sobre esse incrнvel projeto: https://github.com/PHPMailer/PHPMailer

CRЙDITOS
Tutorial - JR_Junior
Include NMailer - Locky_
PHPMailer - Synchro
Reply
#2

Ficou bom! vou testar aqui.
Reply
#3

Bom trabalho, mas deve ser melhorado mais.
Reply
#4

Quote:
Originally Posted by Danielu
Посмотреть сообщение
Bom trabalho, mas deve ser melhorado mais.
Tudo sempre pode ser melhorado! Poste aqui o que vocк acha que deve melhorar e compartilhe com todos...
Reply
#5

Acredito que algumas partes da include devem ser adaptadas para a atualizaзгo.

A versгo melhor compatнvel й 5.2.26: https://github.com/PHPMailer/PHPMail...es/tag/v5.2.26

Para aqueles que tem uma alta demanda de e-mails do servidor, й recomendado que use um sistema prуprio para isso.
Reply
#6

Quote:
Originally Posted by Locky_
Посмотреть сообщение
Acredito que algumas partes da include devem ser adaptadas para a atualizaзгo.

A versгo melhor compatнvel й 5.2.26: https://github.com/PHPMailer/PHPMail...es/tag/v5.2.26

Para aqueles que tem uma alta demanda de e-mails do servidor, й recomendado que use um sistema prуprio para isso.
1 - A questгo da include, nгo tive problemas, mas qualquer melhoria seria bem-vinda.

2 - A questгo da compatibilidade, a 5.2.26 pode ser sim "a mais compatнvel" pra include atual, mas estб muito desatualizada e o prуprio criador disse que nela tem problemas de seguranзa, entre outros.

3 - Com certeza, alta demanda+host de terceiros = possнvel bloqueio por spam. Mas para pessoas como eu, que usam o sistema de email para recuperaзгo de senha e outras coisas pequenas, essa include й perfeita.
Reply
#7

Gostei da atualizacao que voce fez aqui nesta include bom trabalho.
Reply
#8

Quote:
Originally Posted by Marllun
Посмотреть сообщение
Ficou bom! vou testar aqui.
Quote:
Originally Posted by PT
Посмотреть сообщение
Gostei da atualizacao que voce fez aqui nesta include bom trabalho.
Muito obrigado!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)