This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

Como enviar e-mails em PHP usando PHPMailer (guia para iniciantes)

Updated on October 1, 2025

11 Min Read

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?

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:

  1. Um Servidor Local como XAMPP ou MAMP instalado. Isto permite que o PHP seja executado na tua máquina.
  2. PHP 7.4 ou superior (o PHPMailer funciona com 5.5+, mas as versões mais recentes são mais seguras e fiáveis).
  3. Instala o Composer (utilizado para gerir as bibliotecas PHP): Obtém o Composer
  4. Um editor de texto como o VS Code ou o Sublime.
  5. (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

CD Desktop

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.

Tutorial por e-mail

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.

Código

Vendedor

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.

index.php

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

Obter índice

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:

Função de correio

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:

  1. Visita: https://myaccount.google.com/apppasswords.
  2. Inicia sessão e verifica-te.
  3. Na caixa Nome da aplicação, escreve algo como: PHPMailer (ou algo com significado para ti, como “O meu formulário de contacto PHP”).
  4. Clica em Criar.
  5. O Google dá-te uma palavra-passe de 16 caracteres.

Palavra-passe da aplicação

  1. 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

Código SMTP

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:

Olá do gmail.

Recebe a caixa de entrada:

Olá do aviso do gmail

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.

Evita a encomenda de spam

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.

Anexo

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.

Share your opinion in the comment section. COMMENT NOW

Share This Article

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.

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Quer experimentar a plataforma Cloudways em todo o seu esplendor?

Faça um tour guiado GRATUITO pela Cloudways e veja por si mesmo como é fácil gerenciar seu servidor e suas aplicações na principal plataforma de hospedagem em nuvem.

Iniciar mi recorrido