Não perca as ofertas da Promoção de Ano Novo!
search

Como enviar e-mails do seu servidor web com o PHP mail() e o PHPMailer: guia completo

Como enviar e-mails do seu servidor web com o PHP mail() e o PHPMailer: guia completo

Se você tem uma empresa, provavelmente já sabe que ter uma conta de e-mail profissional é importante para aumentar a credibilidade e a confiança para com seus clientes. Para isso, você precisa comprar um domínio e configurar seus endereços comerciais em um cliente de e-mail ou servidor.

E existe um detalhe: caso seu site ou web app seja baseado na linguagem de programação PHP, ele pode enviar e-mails diretamente do seu servidor web. Os recursos de correio eletrônico do PHP permitem que você crie formulários de e-mail personalizados e envie e-mails básicos para múltiplos destinatários.

Você tem duas maneiras de enviar e-mails em PHP: usando a função mail() integrada do PHP ou optando por uma biblioteca de envio de e-mails, como o PHPMailer.

Neste artigo, falaremos sobre  as diferenças entre o PHPMailer e a função mail() e mostraremos como enviar e-mails com ambos.

Baixar Glossário Completo de Desenvolvimento Web

O PHP mail é uma função que envia e-mails usando scripts PHP. A função, integrada nativamente à linguagem PHP, pode enviar mensagens para múltiplos destinatários a cada disparo. No entanto, ela não é indicada para envio de e-mails em massa sem o uso de um pacote de correio PHP externo, como o PHPMailer.

PHPMailer e função mail(): prós e contras

O PHP mail permite que os administradores de sites baseados em PHP enviem e-mails diretamente de seus servidores web usando scripts PHP. Com isso, você fica livre da obrigação de contratar uma hospedagem de e-mail separada, pois a função PHP é integrada ao servidor web.

O envio de e-mails via PHP é possível por meio da função nativa mail() ou de um pacote externo do PHP, como o PHPMailer. Aqui está uma breve explicação de cada método, incluindo suas vantagens e desvantagens:

Função PHP mail()

mail() é uma função PHP que usa scripts PHP para enviar e-mails simples. A função mail inclui três parâmetros obrigatórios: $to$subject $message. Os parâmetros opcionais que você pode utilizar incluem $headers $parameters. Falaremos sobre esses parâmetros mais abaixo neste artigo.

Essa função PHP nativa retorna um valor booleano após a execução: TRUE se o servidor receber com êxito o e-mail para envio ou FALSE em caso de falha.

Vantagens:

  • Pré-instalado e pronto para uso — tudo o que você precisa é ter o PHP.
  • Compatível com versões anteriores, então uma mudar a versão do PHP não interromperá o script.
  • Fácil de aprender.

Desvantagens:

  • Envia e-mails usando um método ultrapassado e sem suporte a autenticações modernas, como SPF e DKIM.
  • Muitas vezes, as mensagens enviadas caem em pastas de spam ou lixo eletrônico devido à falta de autenticação e às configurações inadequadas.
  • Requer uma configuração complexa se você quiser usar SMTP, aumentando a chance de acionar filtros de spam.
  • Não consegue lidar com grandes volumes de e-mails de forma eficaz.
  • Oferece limites de envio mais baixos e menos confiabilidade em comparação com o PHPMailer.
  • Retorna a mensagem de sucesso TRUE mesmo que o e-mail não chegue ao destinatário.

Importante! Para os cleintes da Hostinger, lembre-se de que os limites atuais para e-mails enviados via PHP mail() são 100/dia e 10/minuto. Esses limites serão redefinidos a cada 24 horas e serão consumidos imediatamente se houver e-mails na fila de envio.

PHPMailer

O PHPMailer é uma biblioteca de envio de e-mails muito popular que usa a função mail() ou um servidor SMTP (Simple Mail Transfer Protocol). Ela permite que você tenha acesso a uma série de funções para envio de e-mails, simplificando o processo configuração do PHP para enviar mensagens.

Vantagens:

  • Envia e-mails por meio de uma conexão segura com autenticação SPF e DKIM, melhorando a confiabilidade das suas mensagens.
  • Simplifica a configuração e oferece suporte a recursos avançados, como corpos HTML e anexos.
  • Oferece suporte a SMTP com criptografia SSL TLS integrada.
  • Lida com grandes volumes de e-mail de forma eficiente em um curto período.

Desvantagens:

  • Requer instalação manual por meio de SSH.
  • No plano de hospedagem Single da Hostinger, gera custos adicionais devido à falta de acesso SSH.
  • Tem uma curva de aprendizado mais acentuada em comparação com a função mail() nativa.

Importante! Se você usar o PHPMailer com o Titan Mail na Hostinger, o limite de envio será de 1/000 e-mails/dia 300 e-mails/hora. Para o serviço de e-mail da Hostinger, o limite é maior: até 3.000 e-mails/dia sem limite por hora. Verifique os parâmetros e limites de cada serviço, pois eles variam de acordo com seu plano de hospedagem.

Como usar o PHPMailer para enviar e-mails

Nesta seção, detalharemos as etapas para enviar e-mails usando o PHPMailer. Recomendamos o uso de uma conexão SMTP autenticada com o PHPMailer para aumentar a capacidade de entrega de seus e-mails sem que eles sejam bloqueados por filtros de spam.

Instalando do PHPMailer

A instalação do PHPMailer é bastante simples, especialmente se você usar o Composer.

Observe que os planos de hospedagem Premium e Business da Hostinger, bem como nossas opções de hospedagem cloud, vêm pré-instalados com duas versões do Composer.

Use o comando composer para ativar a versão 1.10 do Composer. Se você precisar da nova versão 2.0 ou usar o PHP versão 8.0 ou posterior, execute o comando composer2.

Importante! Você deve instalar o PHPMailer usando o Composer por meio de SSH para que ele funcione corretamente. Adicionar um arquivo phpmailer.php com código SMTP, conforme abordaremos mais adiante neste guia, não funcionará sem a instalação adequada.

Siga estas etapas para instalar o PHPMailer manualmente:

  1. No hPanel, vá até Avançado → Acesso SSH e anote o IPa porta, o nome de usuário a senha do SSH na janela detalhes do SSH.
  2. Abra o PuTTY e digite suas informações de SSH nos campos Hostname (ou endereço IP) Porta. Em seguida, clique em Abrir.
  3. Quando uma janela de comando for exibida, digite o nome de usuário e a senha do SSH e pressione Enter. Lembre-se de que o PuTTY não exibirá a senha, portanto, não se estranhe se ela não aparecer na tela.
  4. Execute o seguinte comando para navegar até o diretório public_html:
cd public_html
  1. Execute o seguinte comando para instalar o PHPMailer:
composer2 require phpmailer/phpmailer
  1. Aguarde um pouco até que o processo de instalação seja concluído. Você deverá ver algo assim:
linha de comando após instalação do composer e do phpmailer

Dica de leitura

Saiba mais sobre os comandos SSH para ajudar a gerenciar seu servidor.

Entendendo os componentes do PHPMailer

Para entender como o PHPMailer funciona, vamos analisar cada componente do script acima.

  • use PHPMailer\PHPMailer\PHPMailer; – importa a classe PHPMailer para o namespace global.
  • require ‘../vendor/autoload.php’; – inclui várias bibliotecas de que o PHPMailer precisa.
  • $mail = new PHPMailer; – cria um novo objeto PHPMailer.
  • $mail->isSMTP(); – informa à classe PHPMailer para usar a configuração SMTP personalizada definida no script em vez do servidor de correio eletrônico local.
  • $mail->SMTPDebug = 2; – detecta se algo está errado com a conexão SMTP.
  • $mail->Host = ‘smtp.hostinger.com’; – é aqui que o endereço do servidor SMTP deve ser especificado.
  • $mail->Port = 587; – define a porta SMTP. Escolheremos a porta SMTP 587 como a porta padrão de envio de e-mail para todos os tipos de transmissão de dados SMTP.
  • $mail->SMTPAuth = true; – ativa a autenticação SMTP.
  • $mail->Username = ‘mymail@myawesomedomain.tld’; – especifique seu endereço de e-mail aqui.
  • $mail->Password = ‘My$tr0ngPa55w0rd!; – digite sua senha de e-mail aqui.
  • $mail->setFrom(‘mymail@myawesomedomain.tld’, ‘Your Name’); – é aqui que você insere o endereço de e-mail do remetente.
  • $mail->addReplyTo(‘mymail@myawesomedomain.tld’, ‘Your Name’);- informa ao destinatário para qual endereço ele deve responder.
  • $mail->addAddress(‘recipient@domain.tld’, ‘Receiver Name’); – insira o endereço do destinatário aqui.
  • $mail->Subject = ‘Checking if PHPMailer works’; – adicione o assunto do e-mail aqui.
  • $mail->msgHTML(file_get_contents(‘message.html’), DIR); – lê o corpo de uma mensagem HTML de um arquivo externo. A função file_get_contents() carregará o conteúdo de message.html, um arquivo local localizado no diretório public_html, e o incluirá na mensagem.
  • $mail->Body = ‘This is just a plain text message body’; – contém o corpo da mensagem do e-mail.
  • //$mail->addAttachment(‘attachment.txt’); – se quiser incluir anexos, adicione os nomes dos arquivos e remova a barra dupla dessa declaração.
  • if (!$mail->send()) { – define o que acontece quando o script é executado.
  • echo ‘Mailer Error:’. $mail->ErrorInfo; – você verá uma mensagem de erro e os detalhes do erro se o script não conseguir fazer o envio.
  • } else { – estende a instrução if e descreve o que acontece se a condição anterior não for atendida.
  • echo ‘The email message was sent!’; – significa que o processo de envio de e-mail foi bem-sucedido.

Dica

A linha SMTPDebug = 2; só é aplicável quando você testa um script e deseja ver como ele funciona. Lembre-se de alterá-la para SMTPDebug = 0; quando terminar o teste para evitar que os receptores capturem o relatório de entrega do protocolo SMTP.

Usando o PHPMailer com o SMTP da Hostinger

Depois de instalar o PHPMailer, você pode começar a enviar e-mails em PHP. Esta seção mostrará como enviar e-mails por meio do servidor SMTP da Hostinger usando o PHPMailer.

Para isso, siga as etapas abaixo:

  1. Crie uma conta de e-mail acessando o hPanel e, em seguida, vá para Emails → Contas de e-mail → Criar conta de e-mail.
  2. Preencha o novo endereço de e-mail e defina uma senha. Em seguida, clique em Criar. Lembre-se dessas informações, pois você as usará para enviar e-mails pelo PHPMailer.
  3. Na mesma página, vá para Configurações → Configuração Manual e anote a porta SMTP e o hostname.
  4. Acesse o hPanel e navegue até Arquivos → Gerenciador de Arquivos. Clique na pasta public_html e selecione Adicionar Novo para criar um novo arquivo. Nomeie o arquivo como phpmailer.php e clique em Criar.
  5. Clique duas vezes no arquivo phpmailer.php, copie e cole o código abaixo depois de fazer todas as alterações necessárias. Certifique-se de substituir mymail@myawesomedomain.tld recipient@domain.tld pelo seu domínio existente e My$tr0ngPa55w0rd! pela senha da sua conta de e-mail.
<?php
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'mymail@myawesomedomain.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('mymail@myawesomedomain.tld', 'Your Name');
$mail->addReplyTo('mymail@myawesomedomain.tld', 'Your Name');
$mail->addAddress('recipient@domain.tld', 'Receiver Name');
$mail->Subject = 'Checking if PHPMailer works';
$mail->msgHTML(file_get_contents('message.html'), __DIR__);
$mail->Body = 'This is just a plain text message body';
//$mail->addAttachment('attachment.txt');
if (!$mail->send()) {
echo 'Mailer Error:'. $mail->ErrorInfo;
} else {
echo 'The email message was sent.';
}
?>
  1. Após editar o código, clique em Salvar e fechar. Para executar o script, digite seudominio.com/phpmailer.php em seu navegador.

Configuração do Titan SMTP

Se estiver usando o Titan Mail, conecte-se pela porta 465 (SSL) ou 587 (STARTTLS). Acesse Emails → Configurar Aplicativo de Desktop para ver os detalhes de configuração de sua conta de e-mail. Você também pode consultar o tutorial oficial do Titan para obter as configurações corretas de SMTP, IMAP ou POP.

Criando de um formulário de contato com o PHPMailer

Além de enviar e-mails PHP simples, o PHPMailer permite que os usuários criem vários formulários de contato, como pesquisas de feedback.

Como os scripts PHP anteriores, crie um novo arquivo PHP na pasta public_html e nomeie-o como formscript.php. Copie e cole o script abaixo no novo arquivo e modifique os valores de acordo com o que você deseja:

<?php
use PHPMailer\PHPMailer\PHPMailer;
$msg = '';
if (array_key_exists('email', $_POST)) {
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Username = 'mymail@myawesomedomain.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('mymail@myawesomedomain.tld', 'Mr. Snuffles');
$mail->addAddress('recipient@domain.tld', 'Receiver Name');
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
$mail->Subject = 'PHPMailer contact form';
$mail->isHTML(false);
$mail->Body = <<<EOT
Email: {$_POST['email']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
if (!$mail->send()) {
$msg = 'Sorry, something went wrong. Please try again later.';
} else {
$msg = 'Message sent! Thanks for contacting us.';
}
} else {
$msg = 'Share it with us!';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Contact form</title>
</head>
<body>
<h1>Contact us</h1>
<?php if (!empty($msg)) {
echo "<h2>$msg</h2>";
} ?>
<form method="POST">
<label for="name">Name: <input type="text" name="name" id="name"></label><br>
<label for="email">Email address: <input type="email" name="email" id="email"></label><br>
<label for="message">Message: <textarea name="message" id="message" rows="8" cols="20"></textarea></label><br>
<input type="submit" value="Send">
</form>
</body>
</html>

Dica

Usar os dados do usuário diretamente a partir de $_POST sem qualquer tratamento não é seguro, pois pode abrir brechas para ataques de cross-site scripting (XSS). Para evitar isso, confira as práticas recomendadas para sanitização de variáveis do PHP.

Salve suas alterações e execute o script em seu navegador.

Veja como será o resultado:

formulário de contato básico criado via phpmailer

Se um visitante enviar uma mensagem por meio do formulário, ele receberá uma confirmação. O conteúdo do formulário será enviado para o endereço de e-mail que você inseriu aqui:

$mail-&gt;addAddress('recipient@domain.tld', 'Receiver Name');

Dica

Se o formulário de contato do PHPMailer não funcionar, altere a linha $mail->SMTPDebug = 0; para $mail->SMTPDebug = 2 para identificar a causa. Não se esqueça de remover a linha ou alterar o para depois.

Visite o repositório oficial do PHPMailer no GitHub para conferir outros exemplos de como usar a biblioteca de envio de e-mails.

Se você usar o WordPress, pode simplificar o processo de criação de formulários usando um plugin de formulário de contato, como o Formidable Forms, o Contact Form 7 ou o WPForms.

Como enviar e-mails usando a função mail() do PHP

Outro método para enviar e-mails diretamente do PHP é a função mail() incorporada. Para usar esse recurso, os usuários que hospedam seu aplicativo ou site PHP em um servidor local devem configurar um programa Sendmail alterando o arquivo php.ini na pasta de instalação do PHP.

Se você usa um servidor de hospedagem, o Sendmail geralmente já vem pré-configurado. No entanto, é preciso se certificar de que o provedor de hospedagem permita que você gerencie manualmente a opção de serviço do Sendmail.

Por padrão, o serviço Sendmail já está ativado. No entanto, verifique novamente para ter certeza.

Importante! O Titan Mail ativa a função PHP mail() por padrão. Portanto, você não pode ativá-la ou desativá-la no hPanel.

Compreendendo os componentes do PHP mail

Para você entender melhor a função mail() do PHP, analisaremos os componentes do script PHP usado na seção anterior.

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

As duas primeiras linhas acima permitem que o relatório de erros informe se houve alguma falha na execução do script PHP.

$from = "mymail@myawesomedomain.tld";

Essa linha contém o endereço de e-mail do remetente. A maioria dos provedores de hospedagem proíbe a adição de endereços de e-mail aleatórios aqui devido ao risco de falsificação. Portanto, é melhor usar um endereço com seu nome de domínio para executar o script com êxito.

$to = "recipient@domain.tld";

O endereço de e-mail do destinatário é colocado aqui. Separe os endereços de e-mail com vírgulas se quiser enviar vários e-mails.

$subject = "Checking PHP mail";

Digite a linha de assunto do e-mail aqui.

$message = "PHP mail works just fine";

Aqui, insira o corpo de sua mensagem de e-mail.

$headers = "From:" . $from;

Essa linha geralmente inclui cabeçalhos adicionais como FromReply-To Cc. Você pode separá-los com o CRLF.

if (mail ($to,$subject,$message,$headers))

Esse script executa a função mail() e verifica se ela foi executada com êxito.

echo "The email message was sent.";

A mensagem acima será exibida se a função mail() for executada com êxito.

echo "The email message was not sent.";

Como alternativa, você verá esta mensagem se a função mail() falhar.

Embora os cabeçalhos adicionais sejam opcionais, é essencial incluir o cabeçalho From ao enviar e-mails. Caso contrário, você receberá uma notificação como esta:

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.

Para obter mais informações sobre a função Sendmail e seus parâmetros, consulte a documentação oficial do PHP.

Criando um arquivo de teste para o PHP mail

Depois de garantir que o Sendmail esteja ativo, crie um arquivo de correio PHP dentro do diretório public_html.

Veja como fazer isso:

  1. No hPanel, navegue até Arquivos →  Gerenciador de Arquivos para acessar o Gerenciador de arquivos da Hostinger.
  2. Clique duas vezes na pasta public_html e selecione o ícone Novo arquivo na parte superior. Dê a esse novo arquivo o nome de testmail.php e clique em Criar.
  3. Clique duas vezes em testmail.php para editá-lo. Você pode usar o código PHP básico abaixo, mas altere os parâmetros de acordo:
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "mymail@myawesomedomain.tld";
$to = "recipient@domain.tld";
$subject = "Checking PHP mail";
$message = "PHP mail works just fine";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "The email message was sent.";
} else {
echo "The email message was not sent.";
}
?>
  1. Clique em Salvar e fechar quando terminar.
  2. Envie o e-mail acessando yourdomain/testmail.php no seu navegador. Lembre-se de alterar “yourdomain” para o domínio usado ao criar o testmail.php.

Enviando e-mails em HTML com PHP

A função mail() do PHP também pode enviar e-mails em HTML. Esse formato é altamente personalizável em comparação com uma mensagem de texto simples.

O processo de envio de e-mail em HTML é o mesmo, mas dessa vez você deve incluir uma mensagem HTML e cabeçalhos de parâmetros adicionais.

Aqui está um exemplo de um script básico para enviar um e-mail em HTML:

<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "mymail@myawesomedomain.tld";
$to = "recipient@domain.tld";
$subject = "Checking PHP mail";
$message = "
<html>
<head>
<title>This is a test HTML email</title>
</head>
<body>
<p>Hi, it's a test email. Please ignore.</p>
</body>
</html>
";
// The content-type header must be set when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "Message was sent.";
} else {
echo "Message was not sent.";
}
?>

Como solucionar erros comuns do PHP mail e PHPMailer

Agora, falaremos sobre alguns dos problemas mais comuns ao usar a função mail() do PHP ou o PHPMailer e como corrigi-los.

Endereço do remetente rejeitado: não pertence ao usuário

Esse erro significa que o servidor não pôde autenticar o remetente usando os detalhes fornecidos. Para corrigi-lo, verifique o endereço de e-mail que você usou para enviar a mensagem e certifique-se de que ele corresponde a um endereço existente.

Além disso, verifique se o Sender Policy Framework (SPF) está ativado. Se você usa a Hostinger, verifique seu registro SPF acessando o hPanel e navegando até Emails→  Contas de e-mail→  Configurações de DNS →  Gerenciar entrega de e-mail.

Se o registro SPF estiver ativado, ele será mostrado como Ativo.

O Gmail não pôde verificar se o domínio.tld enviou esta mensagem

Se você vir esse aviso ao testar um script de correio PHP, a causa pode ser uma das seguintes:

  • Não há registro SPF na zona DNS do domínio – se o registro estiver ausente ou se você estiver usando nameservers externos, adicione manualmente um novo registro SPF TXT pelo hPanel ou cPanel.
  • Você usou detalhes de autenticação SMTP inválidos – certifique-se de usar um endereço de e-mail existente que pertença a você.

O e-mail vai para a pasta de spam

Há vários motivos pelos quais o PHP mail pode acionar filtros de spam. Algumas das causas mais comuns incluem:

  • Assunto enganoso ou semelhante a spam – geralmente acontece quando você usa termos como “teste” ou “urgente”. Certifique-se de definir uma intenção clara na linha de assunto.
  • Endereço de remetente incorreto – adicionar o endereço errado pode invocar medidas de segurança para filtrar seu e-mail a fim de evitar falsificações e golpes.
  • Uso de palavras de gatilho de spam – remova palavras de spam como “uma ótima oferta” e “isso não é spam” da sua mensagem para aumentar a credibilidade do seu e-mail.
  • Sua lista de e-mails não tem um link de cancelamento de inscrição – certifique-se de incluir um botão de cancelamento de inscrição para evitar esse problema e aumentar a confiança do leitor.

Não foi possível conectar-se ao host SMTP

As versões mais recentes do PHP geralmente têm um comportamento SSL mais rígido. Se a função mail() do PHP não for executada depois de atualizar seu PHP para a versão mais recente, essa pode ser a causa.

O uso do PHPMailer com alguns provedores de hospedagem também costuma disparar esse erro de código.

Por exemplo, de acordo com o wiki do PHPMailer, a GoDaddy bloqueia conexões SMTP de saída por meio das portas 25465 587 para servidores de terceiros, como o Gmail e o Hotmail, exceto os seus próprios. Além disso, ele não oferece suporte à integração com servidores SMTP de terceiros.

Use o script a seguir para resolver esse erro:

$mail->SMTPOptions = array( 
'ssl' => array( 
'verify_peer' => false, 
'verify_peer_name' => false, 
'allow_self_signed' => true 
) 
);

Importante! Evite implementar essas alterações globalmente no php.ini, pois isso permite conexões inseguras — um problema de segurança que o PHP resolveu desde a versão 5.6.

Como o SMTP da Hostinger não tem esse problema, considere migrar para o nosso serviço de e-mail profissional para obter uma melhor experiência.

Conclusão

Você pode enviar e-mails com o PHP usando a função mail() ou uma biblioteca de envio de e-mails, como o PHPMailer. A primeira é adequada para enviar pequenos volumes de mensagens simples baseadas em texto, enquanto a segunda é melhor para enviar e-mails em massa ou criar formulários de contato.

Você pode aproveitar a função PHP mail nativa criando um novo arquivo PHP no diretório public_html e executando o script usando seu navegador.

Por outro lado, o envio de e-mails com o PHPMailer exige a instalação da biblioteca de código por meio do Composer, a configuração de uma conta de e-mail para ela e a definição das configurações de SMTP da sua hospedagem.

Neste tutorial, falamos sobre como instalar o PHPMailer, como criar um script de teste e configurar de um formulário de contato simples. Também abordamos o envio de e-mails com a função mail() do PHP e a solução de erros comuns durante o processo de envio.

Esperamos que este tutorial tenha sido útil para você. Se tiver mais perguntas, deixe-as na seção de comentários abaixo. Boa sorte!

Mail PHP: perguntas frequentes

Posso enviar e-mails do PHPMailer para o Gmail ou outros serviços de e-mail?

Isso depende de seu provedor de hospedagem. Com a GoDaddy, você não pode enviar e-mails para caixas de entrada que implementam os protocolos de autenticação de e-mail SPF e DKIM, como Gmail, Yahoo e Hotmail. A Hostinger, por outro lado, não tem essa limitação. Entre em contato com seu provedor de hospedagem para saber mais sobre suas configurações de SMTP e se ele oferece suporte ao PHPMailer com servidores SMTP de terceiros.

Como validar meus endereços antes de usar a função mail() ou o PHPMailer para enviar e-mails?

Você pode usar a função filter_var() e passar o endereço de e-mail para o filtro FILTER_VALIDATE_EMAIL. Esse filtro verificará a validade do e-mail, garantindo que ele não contenha caracteres não suportados ou espaços em branco.

Semua konten tutorial di website ini telah melalui peninjauan menyeluruh sesuai padrões editoriais e valores da Hostinger.

Author
O autor

Bruno Santana

Jornalista formado pela Universidade Federal da Bahia e Especialista em Marketing de Conteúdo na Hostinger, onde atuo na criação e otimização de artigos úteis, envolventes e criativos em áreas como desenvolvimento web e, marketing. Além disso, sou colaborador eventual do site MacMagazine e da editoria de cultura do Jornal A Tarde, fascinado por arte, culinária e tecnologia.

O que dizem nossos clientes

Comentários

Author
willian

September 24 2017

Olá, estou tentando enviar mais de 10 e-mail com essa função, porem ele só esta enviando 8 no maximo, o que será que esta acontecendo?

Author
luan Eduardo

February 13 2018

Quando executo ele, aparece o código e não envia o e-mail. O que eu faço?

Author
Adriano

April 06 2018

Olá, tudo bem. Fiz exatamente copiando todo script e alterando para meus emails e funcionou bem, porém só que o remetente aparece o principal de meu domínio (sendo meu usuario de cpanel @myserver...) e não o email que criei para este domínio atendimento@meudomínio,... O que poderia fazer para mudar isso? Desde já agradeço.

Author
THIAGO CORREA NEVES

August 15 2018

Aqui funcionou, porém fiquei com uma dúvida. Eu queria colocar uma mensagem de resposta automática para quem envia o email. Como posso fazer isso?

Author
nathan

December 04 2018

top

Author
Orlando Felipe Martins da Costa

June 12 2019

Rafael, Eu usava o envio de e-mail no meu site, quando era "orlandofmc.16mb.com". Após migrar para "orlandofmc.xyz" as rotinas de envio de e-mails deixaram de funcionar. Ainda hoje é assim: usando o código abaixo (o mesmo que está nesta página), em "orlandofmc.16mb.com" funciona, mas não funciona em "orlandofmc.xyz". Nos dois casos, vem a mensagem de que enviou, mas, no último caso, de fato,não envia. Não recebo no yahoo. O código:

Author
Orlando Felipe Martins da Costa

June 12 2019

Postei uma mensagem aqui hoje, 12/06/19, pela manhã, e ela apareceu normal, com a mensagem dizendo que estava aguardando aprovação. À tarde, 17h00, ela não está mais aqui.

Author
Fhilipe Alves

July 04 2019

Testei seu codigo e diz "A mensagem de e-mail foi enviada." mas nao chega nada! O que pode ser??

Author
mario

July 27 2019

Tem como anexar uma imagem que esta na url usando este script?

Author
mario

July 27 2019

como anexar um arquivo?

Author
Paulo Junior

August 14 2019

Criei um formulário de cadastro para o usuário, dai os dados vão ser enviado direto para meu email usando o php mail, tem algum limite de emails que posso esta recebendo ou enviando, atualmente estou usando 000webhost!

Author
André Luiz

January 27 2021

Boa tarde Onde eu consigo o arquivo autoload.php, que está em require 'vendor/autoload.php';? Não tenho o mesmo e estou tendo erro na página. Acredito ser a falta deste.

Author
Filipe Almeida Simões

March 28 2021

Olá, quais são as credenciais que devo colocar nessa parte do código? $mail->Username = 'test@hostinger-tutorials.com'; $mail->Password = 'EMAIL_ACCOUNT_PASSWORD';

Author
André

June 05 2021

Eu tento executar o código de exemplo do phpmailer e ocorre erro 524. Composer está instalado. Log de erro do php está habilitado (e não aparece nada).

Author
Fledson Jesus Santos

August 11 2021

Prezados, boa tarde! Meu problema é que fiz todas as configurações, esta funcionando, mas quando chega a mensagem de confirmação chega desta forma "Error: Email enviado com sucesso". Não entendo por que a mensagem de erro na frente. Já fiz de tudo, mas não conheço quase nada da linguagem PHP. Os e-mails são enviados normalmente. Se alguém poder me ajudar fico super grato.

Author
Mário Massanga

October 13 2021

Olá, eu tenho uma dúvida...depois que o e-mail é enviado como posso fazer para recuperar alguma informação da minha caixa de correio através do php

Author
Vitor

December 27 2021

Obtenho este erro: Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in

Author
Ivanilson

February 18 2022

Muito obrigado pela explicação!

Author
Horst

November 12 2022

tem como usar dois $headers ? Gostaria de usar o text/html e o from, tô tentando e tá ficando só um. (No primeiro código)

Author
Felipe

November 17 2022

Todos os emails que envio vão para a caixa de Spam. E só tem escrita, sem edição.

Author
Miguel Goffredo

May 22 2024

Esse artigo está ultrapassado. A minha interface é completamente diferente da que é mostrada nos prints e simplesmente não consigo acessar as informações necessárias.

Deixe uma resposta

Por gentileza, preencha os campos solicitados.Marque o campo de aceitação da privacidade.Preencha os campos necessários e marque a opção de aceitar termos de privacidade.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.