PHPMailer como biblioteca externa + GMail

Ola pessoal.

Resolvi vir comparitlhar essa dica aqui pois tive que pesar vários topicos distintos, incluindo o forum gringo do scriptcase (scriptcase.net).

O scriptcase traz instalada a biblioteca PHPMailer que apesar do scriptcase ter macros para envios de email ajuda bastante o envio de emails.


Entretanto a versão do Scriptcase é a 5.2.4 se não me engano (Muito antiga e com falhas de segurança graves diga-se de passagem. Netmake pode corrigir isso sem muito esforço né?).

Um dos problemas é que ao tentar utilizar o Gmail ou Gsuite para envio de emails você não consegue logar. E uma das causas e a autenticaçao OAUTH que não é reconhecida por essa versão.
Então separarei em seçoes esse tópico para explicar uma soluçao.

1- Instalando o PHPMailer como biblioteca Externa
Para contornar o problema podemos instalar qualquer versão do PHPMailer acima do 5.2.11 (a primeira versão a reconhecer o OAUTH). Essa versão reconhece o PHP desde o 5 ate o 7.
Porem na versão do PHPMailer 6, ele so reconhece o PHP 7 e passa a utilizar namespaces para chamar as classes. E o Scriptcase não reconhece namespaces.

Pesquisando no github do phpmailer e no CVE para ver os registro de falhas de segurança. Podemos ter certeza que apesar de não ter mais atualizaçoes de segurança, a versão 5.2.28 é segura, sem novos registros de falhas. https://github.com/PHPMailer/PHPMailer/releases

Obs: A versão 6 tem obviamente melhorias, mas a 5.2.28 não tem falhas. A ultima grande falha corrigida foi na versão 5.2.22. A versão 5.2.28, como explicado no site do CVE, possui uma observaçao que não afeta diretamente a segurança https://www.cvedetails.com/vulnerability-list/vendor_id-15729/product_id-32737/Phpmailer-Project-Phpmailer.html)

Essa versão pode ser instalada sem problemas. Bastanto criar uma nova biblioteca externa, dentro da biblioteca criar a estrutura de pastas semelhantes a do projeto, e extair os arquivos do projeto para dentro de suas respectivas pastas.

Depois é só marcar para utilizar no projeto.

2- Configurando a biblioteca em um projeto

Agora para utilizar biblioteca basta requisitar ela dentro do evento do projeto.

Para tal utilizamos a macro sc_url_library.
Entretanto, a biblioteca do PHP mailer precisa de varias classes, PHPmailer.php SMTP.php e outra se não me engano. Para facilitar isso, o criado do projeto criou uma classe loader que cuida disso.
Então a macro de chamar a biblioteca fica assim:

$_biblioteca = sc_url_library(‘prj’, ‘PHPMailer’, ‘PHPMailerAutoload.php’); (Nesse caso a biblioteca esta dentro do projeto ‘prj’)
require_once($_biblioteca); (para requerer os arquivos, e verificar se já não foi carregado)

E para inciar a biblioteca efetivamente, basta seguir com o processo normal do PHPMailer
$mail = new PHPMailer();
etc.

3- Configurando o Gmail para usar o PHPMailer.

Alem da questão do OAUTH que precisa de atualizaçao, ainda precisamos mudar algumas configuraçoes dentro do Gmail:

  • Você precisa ativar a opção de acesso para “Less Secure Apps”.
    Essa opçao efetivamente não expõe sua conta a riscos severos, apesar do que o nome faz parecer.
  • Alem disso, é conveniente ativar a autenticaçao em 2 fatores por segurança da sua conta.
  • E criar uma senha de APPs, assim a senha principal da conta fica protegida e o App consegue acessar o serviço apesar da autenticaçao de 2 fatores.

Espero ter ajudado alguém.
Caso tenha algum erro avise para corrigir
Abraços

2 Curtidas