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
Conteúdo
O que é PHP mail?
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 e $message. Os parâmetros opcionais que você pode utilizar incluem $headers e $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 e 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 e 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:
- No hPanel, vá até Avançado → Acesso SSH e anote o IP, a porta, o nome de usuário e a senha do SSH na janela detalhes do SSH.
- Abra o PuTTY e digite suas informações de SSH nos campos Hostname (ou endereço IP) e Porta. Em seguida, clique em Abrir.
- 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.
- Execute o seguinte comando para navegar até o diretório public_html:
cd public_html
- Execute o seguinte comando para instalar o PHPMailer:
composer2 require phpmailer/phpmailer
- Aguarde um pouco até que o processo de instalação seja concluído. Você deverá ver algo assim:
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:
- Crie uma conta de e-mail acessando o hPanel e, em seguida, vá para Emails → Contas de e-mail → Criar conta de e-mail.
- 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.
- Na mesma página, vá para Configurações → Configuração Manual e anote a porta SMTP e o hostname.
- 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.
- 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 e 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.'; } ?>
- 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:
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->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 2 para 0 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 From, Reply-To e 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:
- No hPanel, navegue até Arquivos → Gerenciador de Arquivos para acessar o Gerenciador de arquivos da Hostinger.
- 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.
- 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."; } ?>
- Clique em Salvar e fechar quando terminar.
- 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 25, 465 e 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.
Comentários
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?
September 25 2017
Olá, Willian. O formulário informado utiliza o envio de e-mails pelo PHP, esse envio dependendo da conta tem como recurso até 60 e-mails enviados em um minuto. Já no SMTP esse limite é 8, assim como o webmail. Por gentileza, verifique se está usando o envio pelo PHP mesmo e não pode formulários autenticados (que utilizam seu e-mail, senha e porta smtp) pois esses e-mails são limitados em 8. :)
November 12 2017
Quando tento executar esse código vem um erro na linha da função mail,o que posso fazer para superar esse erro!
November 13 2017
Oi, Marina. Fala pra gente qual o erro e em qual linha aparece? Ou então você pode entrar em contato com o nosso suporte pelo https://www.hostinger.com.br/contatos ;) Vamos resolver isso aí! Abraço!
February 13 2018
Quando executo ele, aparece o código e não envia o e-mail. O que eu faço?
February 20 2018
Oi, Luan. Qual código aparece? Entre em contato com nosso suporte que vamos te ajudar :) Abraço.
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.
August 30 2018
Oi, Adriano. Nesse exemplo do blog, o guia dispara e-mails onde o servidor não requer uma autenticação, é ótimo para formulários de contato por exemplo. Porém, para disparar e-mails usando o seu endereço você precisa realizar algumas autenticações por parte do servidor. O que recomendamos é utilizar o phpmailer, é uma biblioteca em php pronta para disparar e-mails, você pode baixar o projeto original por aqui: https://github.com/PHPMailer/PHPMailer Após subir o projeto para sua hospedagem pode criar um script de formulário disponibilizado pelo próprio phpmailer na página acima adaptando com as configurações que sua hospedagem fornece.
PHPMailer/PHPMailer The classic email sending library for PHP Stars 11655 Language PHP
Espero ter ajudado ;)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?
August 20 2018
Oi, Thiago Você precisa criar um e-mail para isso. * Coloque no formulário que vai enviar de contato@meudominio.com.br * Após isso cadastre uma resposta automática aqui: https://prnt.sc/kkyb14 com uma mensagem como "Obrigado por ter interesse em nosso serviço, em breve retornaremos o contato etc.." * Ao responderem o formulário para contato@meudominio.com.br a pessoa receberá essa mensagem acima. :) A única dificuldade nesse processo é que sempre que a pessoa enviar um e-mail para contato@meudominio.com.br receberá essa mensagem automática. Então aconselhamos a criar um e-mail que só receba, e não enviar nada por ele. Um nome comum utilizado para isso é no-reply/noreply@meudominio.com.br Espero ter ajudado!
December 04 2018
top
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:
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.
June 13 2019
Oi, Orlando. Acredito que sua mensagem veio incompleta. Mas de qualquer forma, você pode falar com um dos nossos agentes do suporte direto pelo painel de controle da sua hospedagem que eles estão online e vão te responder em menos de 3 minutos! :)
July 04 2019
Testei seu codigo e diz "A mensagem de e-mail foi enviada." mas nao chega nada! O que pode ser??
July 10 2019
Oi Fhilipe Pode falar com um dos nossos agentes através do seu painel de controle que eles irão ajudar você!
July 27 2019
Tem como anexar uma imagem que esta na url usando este script?
July 27 2019
como anexar um arquivo?
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!
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.
January 29 2021
Olá, André Luiz! Você pode tentar rodar o comando
comoposer install
, que vai importar os pacotes e criar a pasta vendor!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';
April 09 2021
Olá, Filipe. Neste caso, você deve colocar o seu endereço de email e a senha deste email!
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).
June 25 2021
Olá, André! O erro 524 geralmente indica que a conexão com o servidor foi encerrada porque o tempo se esgotou. Recomendamos que você cheque novamente se tanto o servidor de envio quanto o de recebimento estão ativos e operando. Caso contrário, entre em contato com nosso time de suporte ?
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.
August 19 2021
Olá, Fledson! Então, o email chega no destinatário? Se tiver chegando, está tudo certo, é apenas uma peculiaridade do PHPMailer mesmo. Caso não esteja chegando, sugiro que você vá para o site Mail-Tester e então copie o endereço de email que aparece. Então envie uma mensagem para esse endereço e o site vai mostrar os possíveis erros.
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
October 15 2021
Olá, Mário! Você pode usar o comando
imap_fetch_overview
para recuperar informações de um email php!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
January 07 2022
Olá Vitor, tudo bem? Então, isso pode ser algum problema na informação de servidor SMTP utilizado. Tenta inserir o servidor smtp.hostinger.com pela porta 465 SSL e vê se resolve!?
February 18 2022
Muito obrigado pela explicação!
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)
December 03 2022
Olá, isso é possível sim! Contudo, só é recomendado usar um de cada para cada "seção" (ex.: body, section, etc.) ?
November 17 2022
Todos os emails que envio vão para a caixa de Spam. E só tem escrita, sem edição.
December 03 2022
Olá, Felipe! Se você tem uma conta de email profissional com a gente, dá uma conversada com nosso time de suporte ao cliente ?
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.
May 24 2024
Oi, Miguel, tudo bem? Obrigado pelo apontamento, vamos adicionar o artigo à nossa lista de auditorias para atualizá-lo assim que possível!