O envio de e-mails é um recurso comum na maioria das aplicações PHP – seja para registro de usuário, atualizações de pedidos ou formulários de contato. Enquanto a função mail() embutida no PHP oferece uma maneira simples de enviar e-mails, ela tem suporte limitado para formatação HTML, anexos e entrega SMTP confiável.
O PHPMailer fornece uma alternativa mais flexível e robusta. Neste guia, aprenderás a instalar e a configurar o PHPMailer, a ligá-lo ao SMTP do Gmail e a enviar e-mails bem formatados com anexos usando apenas algumas linhas de código.
Vamos começar…
- Por que usar o PHPMailer em vez da função mail() do PHP?
- Vantagens da utilização do PHPMailer
- Enviando e-mails em PHP usando PHPMailer
- Enviar e-mail usando SMTP (exemplo do Gmail)
- Personaliza estes campos antes de usar o código
- Enviar anexos de e-mail usando o SMTP do Gmail e o PHPMailer
- Considerações finais
Por que usar o PHPMailer em vez da função mail() do PHP?
PHPMailer é uma biblioteca
biblioteca PHP
que fornece uma maneira simples de enviar e-mails em PHP. Oferece uma gama de recursos que a tornam uma alternativa popular à função mail() embutida do PHP, como suporte a e-mails HTML, anexos e
autenticação SMTP
.
PHPMailer é fácil de configurar e usar e fornece um alto nível de personalização e flexibilidade, tornando-o uma escolha popular para desenvolvedores que precisam enviar e-mails a partir de suas aplicações PHP. É também ativamente mantido e atualizado, o que o torna uma opção de correio eletrónico fiável e segura.
Aqui está uma comparação rápida entre o PHPMailer e o PHP mail:
| Funcionalidade | PHPMailer | mail() |
Funcionalidade |
Uma biblioteca de correio eletrónico com todas as funcionalidades que permite enviar mensagens de correio eletrónico com ou sem SMTP | Uma função simples que permite enviar e-mails através da função mail() do PHP |
Complexidade |
Mais complexo, mas oferece mais funcionalidades e opções | Mais simples, com opções limitadas |
Suporte SMTP |
Suporta o envio de correio eletrónico via SMTP, incluindo autenticação e encriptação | Não suporta o envio de e-mail via SMTP |
Anexos |
Suporta o envio de anexos | Não suporta anexos |
Tratamento de erros |
Fornece mensagens de erro detalhadas e informações de depuração | Fornece informações de erro mínimas |
Segurança |
Suporta encriptação e autenticação quando envia correio eletrónico através de SMTP | Não suporta encriptação ou autenticação |
Também podes gostar:
Como Adicionar Certificados SSL a Sites PHP Personalizados
Vantagens da utilização do PHPMailer
Há várias vantagens em usar o PHPMailer em vez da função nativa mail() ao enviar e-mails em PHP:
1. Código mais limpo e gestão automática de cabeçalhos
Ao usar a função mail(), os desenvolvedores muitas vezes precisam criar manualmente cabeçalhos complexos – como tipos MIME, limites de conteúdo e codificações de caracteres – que podem confundir o código e introduzir erros de formatação. O PHPMailer trata de tudo isso nos bastidores, permitindo que te concentres no conteúdo do e-mail em vez de te preocupares com a sintaxe.
2. Suporte SMTP sem dependência de servidor
A função mail() depende do agente de transferência de e-mail embutido no servidor (como o Sendmail), que nem sempre é configurado ou confiável. O PHPMailer suporta SMTP de imediato e permite-te configurar tudo – host, porta, método de encriptação, credenciais – diretamente dentro do teu script PHP. Não precisa de alterações em todo o servidor.
3. Mensagens de erro multilingues
O PHPMailer fornece mensagens de erro em mais de 40 idiomas, o que o torna ideal para aplicações com utilizadores internacionais. Podes definir facilmente o idioma para o tratamento de erros, oferecendo uma experiência mais localizada e fácil de utilizar.
4. Encriptação SSL/TLS para entrega segura
A segurança é fundamental quando envias mensagens de correio eletrónico. O PHPMailer suporta encriptação SSL e TLS para ligações SMTP, ajudando a proteger as tuas mensagens de interceção durante a transmissão.
5. E-mails HTML e alternativas de texto simples
Embora a função mail() possa tecnicamente enviar e-mails ou anexos em HTML, isso requer a criação manual de mensagens MIME com várias partes. O PHPMailer torna isso mais fácil – ele pode enviar tanto uma versão HTML quanto uma versão de texto simples com o mínimo de configuração, garantindo melhor compatibilidade entre dispositivos e clientes de e-mail.
Enviando e-mails em PHP usando PHPMailer
Agora, vou mostrar-te exatamente como configurar e usar a biblioteca PHPMailer. Cobriremos tudo, desde os primeiros passos até o envio de e-mails com anexos através de um serviço confiável como o SMTP do Gmail.
Pré-requisitos
Antes de começarmos, vamos preparar algumas coisas. Vais precisar de:
- Um Servidor Local como XAMPP ou MAMP instalado. Isto permite que o PHP seja executado na tua máquina.
- PHP 7.4 ou superior (o PHPMailer funciona com 5.5+, mas as versões mais recentes são mais seguras e fiáveis).
- Instala o Composer (utilizado para gerir as bibliotecas PHP): Obtém o Composer
- Um editor de texto como o VS Code ou o Sublime.
- (Opcional, mas recomendado) Uma conta do Gmail para testar o envio de emails SMTP .
Passo 1: Instala o PHPMailer através do Composer
Muito bem, vamos colocar o PHPMailer no teu projeto.
Abre o teu terminal (Prompt de Comando, PowerShell ou aplicação Terminal) e vai para a pasta do teu projeto. Por exemplo, se quiseres uma pasta chamada email-tutorial no teu ambiente de trabalho, farás algo como:
cd Ambiente de trabalho mkdir email-tutorial cd email-tutorial

Estás a ver? Criaste com sucesso a tua pasta workspace e agora estás pronto para começar a instalar o PHPMailer dentro dela.

Agora, para instalar o PHPMailer, quando estiveres dentro da pasta do teu projeto, escreve (ou copia e cola) este comando e carrega em Enter:
compõe o require phpmailer/phpmailer
Isto descarrega o PHPMailer e configura-o para ti. Verás uma nova pasta chamada vendor/ no teu projeto – é aí que o Composer guarda as tuas bibliotecas.


Passo 2: Configurar os teus ficheiros (Organizar o teu espaço de trabalho)
Agora que o PHPMailer está no teu projeto, vamos organizar os nossos ficheiros. A tua pasta de projeto de email deve agora ser algo como isto:
Estrutura da pasta do projeto:
- email-project (pasta principal)
- index.php – Vamos criar este ficheiro para o nosso código de e-mail
- vendor – Contém o PHPMailer (criado automaticamente pelo Composer)
- composer.json – Ficheiro de configuração (criado automaticamente pelo Composer)
Vai em frente e cria um novo ficheiro chamado index.php dentro da pasta do teu projeto de e-mail. É aqui que vamos escrever todo o nosso código PHP para enviar e-mails.

Passo 3: Envia um e-mail básico (sem SMTP ainda)
Vamos começar com um teste simples. Vamos enviar um email sem usar um servidor de email especial (SMTP). Isto é apenas para ver se o PHPMailer está a funcionar corretamente no teu projeto.
Abre o teu ficheiro index.php no teu editor de texto e cola este código:
<?php
utiliza PHPMailer\PHPMailer\PHPMailer;
utiliza PHPMailer\PHPMailer\Exception;
requer 'vendor/autoload.php';
$mail = new PHPMailer(true); // true ativa as excepções
tenta {
// Cabeçalhos e corpo do e-mail
$mail->setFrom('[email protected]', 'O teu nome');
$mail->addAddress('[email protected]', 'Nome do destinatário');
$mail->addReplyTo('[email protected]', 'Nome da resposta');
$mail->isHTML(true);
$mail->Assunto = 'Testar e-mail usando PHPMailer';
$mail->Corpo = '<b>Este é um e-mail de teste enviado de localhost usando PHPMailer!</b>';
$mail->AltBody = 'Esta é uma versão em texto simples para clientes não HTML.';
$mail->envia();
echo '✅ O e-mail foi enviado com sucesso!';
} catch (Exception $e) {
echo \"❌ Não foi possível enviar o e-mail. Erro: {$mail->ErrorInfo}\";
}
Guarda o teu ficheiro index.php.
Passo 4: Executa o servidor Web incorporado do PHP
No CMD (dentro da pasta do teu projeto), inicia o servidor Web do PHP:
php -S localhost:8000
Vais ver:
Servidor de desenvolvimento PHP 8.x.x (http://localhost:8000) iniciado

Passo 5: Abre o browser e testa
Vai para: http://localhost:8000/index.php
O que deve acontecer
Se tudo estiver bem ligado, ou vês:
- ✅ “O e-mail foi enviado com sucesso!” (se o transporte de correio eletrónico funcionar)
- Ou: Não foi possível enviar o e-mail. Erro: … (provavelmente se o SMTP ainda não estiver configurado)
No meu caso, estou a ver isto:

Porquê?
Por defeito, esta configuração não usa SMTP – e a minha configuração PHP local provavelmente não tem um servidor de correio configurado. Isso é normal. É por isso que a maioria dos desenvolvedores usa SMTP para enviar e-mails reais.
Nós vamos resolver esse problema adicionando o SMTP em seguida. Mas por agora, isto confirma que o teu servidor local funciona, que o PHP está a correr e que o PHPMailer está carregado.
Enviar e-mail usando SMTP (exemplo do Gmail)
O SMTP (Simple Mail Transfer Protocol) é a forma padrão de envio de correio eletrónico através da Internet. Pensa num servidor SMTP como o verdadeiro posto de correios que recolhe a tua carta e a entrega na caixa de correio do destinatário.
A utilização de um garante que os teus e-mails chegam onde têm de chegar.
Utilizaremos o servidor SMTP do Gmail porque está amplamente disponível e é uma opção fiável para enviar e-mails.
Abre novamente o teu ficheiro index.php , elimina o código anterior e cola este novo código:
<?php
utiliza PHPMailer\PHPMailer\PHPMailer;
utiliza PHPMailer\PHPMailer\Exception;
requer 'vendor/autoload.php';
$mail = new PHPMailer(true);
tenta {
// Definições do servidor
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
// 1. o teu endereço Gmail
$mail->Username = '[email protected]';
// 2. a tua palavra-passe da aplicação
$mail->Password = 'your_app_password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Etiquetas com nomes (opcional)
$mail->setFrom('[email protected]', 'O teu nome');
$mail->addReplyTo('[email protected]', 'O teu nome');
// Endereço de correio eletrónico do destinatário
$mail->addAddress('[email protected]', 'Friend Name');
// 5. conteúdo do e-mail
$mail->isHTML(true);
$mail->Subject = "Olá do Gmail SMTP!";
$mail->Body = 'Esta mensagem foi enviada usando o SMTP do Gmail e o PHPMailer!
$mail->AltBody = 'Versão SMTP do Gmail da mensagem.';
$mail->send();
echo '✅ Mensagem enviada por SMTP!';
} catch (Exception $e) {
echo "❌ Falha ao enviar o e-mail. Erro: {$mail- >ErrorInfo}";
}
Importante: Configuração da palavra-passe da aplicação para o Gmail
Se tiveres a verificação em dois passos (2FA) activada no teu Gmail (e deves ter), não podes utilizar a tua palavra-passe normal do Gmail. Tens de utilizar uma palavra-passe da aplicação.
Eis como o podes obter:
- Visita: https://myaccount.google.com/apppasswords.
- Inicia sessão e verifica-te.
- Na caixa Nome da aplicação, escreve algo como: PHPMailer (ou algo com significado para ti, como “O meu formulário de contacto PHP”).
- Clica em Criar.
- O Google dá-te uma palavra-passe de 16 caracteres.

- Guarda-o algures. Precisaremos dele quando modificarmos o nosso ficheiro index.php.
Personaliza estes campos antes de usar o código
Para enviar uma mensagem de correio eletrónico com êxito utilizando o Gmail SMTP e o PHPMailer, certifica-te de que actualizas os seguintes campos:
1. O teu endereço do Gmail
Substitui todas as instâncias de [email protected] pelo teu endereço real do Gmail (o mesmo que utilizaste para gerar a palavra-passe da aplicação).
Encontrarás isto em:
$mail->Username = '[email protected]'; $mail->setFrom('[email protected]', 'O teu nome'); $mail->addReplyTo('[email protected]', 'O teu nome');
2. A tua palavra-passe da aplicação
Agora, a palavra-passe da aplicação que guardámos anteriormente, substitui ‘your_app_password’ pela palavra-passe que obtiveste:
$mail->Password = ‘your_app_password’;
Não utilizes a tua palavra-passe de início de sessão real do Gmail aqui –utiliza apenasa palavra-passe de 16 caracteres da aplicação fornecida pela Google.
3. Endereço de correio eletrónico do destinatário
Altera [email protected] para o endereço de correio eletrónico para o qual pretendes enviar a mensagem:
$mail->addAddress(‘[email protected]’, ‘Friend Name’);
Podes adicionar mais destinatários duplicando esta linha com endereços diferentes, se necessário.
4. Etiquetas com nomes (opcional)
Actualiza as etiquetas “O teu nome” e “Nome do amigo” com os nomes do remetente/destinatário que pretendes apresentar no cliente de e-mail.
5. Conteúdo do correio eletrónico
Podes alterar o assunto e o corpo do texto para que correspondam à tua própria mensagem:
$mail->Subject = "Olá do Gmail SMTP!"; $mail->Body = 'Esta mensagem foi enviada usando o SMTP do Gmail e o PHPMailer! $mail->AltBody = 'Versão SMTP do Gmail da mensagem.';
Quando todos estes campos estiverem actualizados com os teus dados reais, guarda o ficheiro.
Testa tudo
Agora vamos testar tudo.
Abre o CMD e navega até à pasta do teu projeto:
cd path\to\your\email-tutorial
Em seguida, executa o script:
php index.php

Foste bem-sucedido! Podes confirmar que tudo funcionou verificando as caixas de entrada do remetente e do destinatário para ver se o e-mail foi entregue através do Google SMTP.
Caixa de entrada do remetente:

Recebe a caixa de entrada:

Enviar anexos de e-mail usando o SMTP do Gmail e o PHPMailer
Depois de teres o teu script de e-mail básico a funcionar, o envio de anexos está apenas a uma linha de distância – mas vamos percorrer toda a configuração para nos certificarmos de que é hermética.
1. Escolhe o teu ficheiro
Coloca o ficheiro que queres anexar na tua pasta de projeto para manteres os caminhos simples.
Por exemplo, se quiseres anexar um PDF com o nome sample.pdf, coloca-o aqui:
C:\Usuários\abdulrehman\Desktop\email-tutorial\sample.pdf
Nota: O nome do teu ficheiro pode ser qualquer coisa… não tem de ser sample.pdf. Anexei um guia em PDF que escrevemos, como podes ver na captura de ecrã abaixo.

2. Actualiza o teu código
No teu ficheiro index.php , vai até onde configuras o objeto $mail. Logo depois de teres adicionado o destinatário, mas antes de enviares o e-mail, inclui esta linha:
$mail->addAttachment('sample.pdf');
Isto anexará o ficheiro chamado sample.pdf localizado na mesma pasta que o teu script.
3. Verifica o caminho do ficheiro (Importante!)
Certifica-te de que:
- O ficheiro não está aberto em nenhum programa.
- O nome corresponde exatamente (sensível a maiúsculas e minúsculas).
- Se estiver numa subpasta, inclui o caminho:
$mail->addAttachment('docs/report2024.pdf');
4. Executa o teu Script Novamente
Utiliza o CMD para navegar para a pasta do projeto:
cd C:\Users\abdulrehman\Desktop\email-tutorial
Corre:
php index.php
Se tudo estiver correto, verás:
Mensagem enviada por SMTP!
5. Verifica o teu e-mail
Abre a caixa de entrada do destinatário e verifica se recebeste o anexo. Como podes ver na captura de ecrã abaixo, o nosso destinatário recebeu o ficheiro PDF que anexámos no nosso script.

Potencia os teus projectos PHPMailer com um alojamento PHP rápido
Dá vida às tuas funcionalidades de e-mail PHP com um alojamento PHP extremamente rápido. Lança as tuas aplicações sem problemas com servidores fiáveis feitos para programadores.
Considerações finais
Por esta altura, já viste como o PHPMailer pode aliviar a dor do envio de emails em PHP. Desde a configuração de um script básico até a configuração do SMTP do Gmail e até mesmo o envio de anexos, você tem uma base sólida para construir recursos confiáveis de e-mail em seus projetos.
Em vez de ter de lutar com a função mail() nativa do PHP ou lidar com limitações do lado do servidor, o PHPMailer dá-te uma forma mais limpa, mais segura e mais flexível de lidar com emails – sem complexidade extra.
À medida que as tuas aplicações crescem, executá-las numa plataforma de alojamento que suporta configurações SMTP e bibliotecas PHP como o PHPMailer pode poupar-te horas de resolução de problemas.
Com
hospedagem PHP da Cloudways
você obtém ambientes PHP pré-configurados, suporte SMTP integrado por meio de serviços como SendGrid ou Mailgun e uma pilha de desempenho otimizada para execução rápida. Isso significa menos tempo na configuração do servidor – e mais tempo escrevendo códigos limpos e eficientes.
Perguntas frequentes
Q. O que é que o PHPMailer faz?
PHPMailer é uma biblioteca PHP popular que te permite enviar emails diretamente das tuas aplicações. Suporta HTML, anexos, autenticação SMTP e torna o manuseio de e-mails mais fácil do que usar a função mail() embutida no PHP.
Q. O PHPMailer é seguro?
Sim, o PHPMailer suporta a transmissão segura de correio eletrónico através de encriptação TLS e SSL. Quando configurado corretamente, fornece uma maneira confiável de enviar informações confidenciais por e-mail usando servidores SMTP autenticados.
Q. Como é que configuro o Outlook SMTP com o PHPMailer?
Para enviar e-mails usando o Outlook com o PHPMailer, configura estas definições SMTP:
$mail->isSMTP(); $mail->Host = 'smtp.office365.com'; $mail->SMTPAuth = true; $mail->Username = '[email protected]'; $mail->Password = 'your-password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;
Estas definições permitem-te enviar e-mails de forma segura através do servidor SMTP do Outlook.
Q. O PHPMailer usa Sendmail?
O PHPMailer pode usar o Sendmail, mas é mais comummente usado com o SMTP para melhor controlo, segurança e compatibilidade. O Sendmail é suportado como um fallback ou em configurações mais simples.
Q. Qual é o objetivo do PHPMailer?
PHPMailer lida com o envio de e-mails em aplicações PHP. Suporta e-mails em texto simples e HTML, anexos de arquivos e autenticação SMTP – o que o torna uma alternativa mais capaz e amigável para o desenvolvedor do que a função nativa mail().
Q. Qual é o melhor método para enviar e-mails usando PHP?
Para uso básico, a função mail() do PHP funciona. Mas para um envio de e-mail seguro, flexível e rico em recursos, o PHPMailer é a melhor opção. Suporta SMTP, conteúdo HTML, anexos e um melhor tratamento de erros.
Abdul Rehman
O Abdul é um profissional de marketing experiente em tecnologia, movido a café e criativo, que adora manter-se a par das últimas actualizações de software e gadgets tecnológicos. É também um escritor técnico competente que consegue explicar conceitos complexos de forma simples para um público alargado. Abdul gosta de partilhar os seus conhecimentos sobre a indústria da nuvem através de manuais de utilizador, documentação e publicações em blogues.