Como enviar e-mail usando a função PHP mail()
⚡ Resumo Inteligente
A função `mail` do PHP é uma função integrada que envia e-mails diretamente de um script PHP usando as configurações SMTP do servidor. Este guia aborda a sintaxe e os parâmetros da função `mail()`, a configuração do SMTP no arquivo `php.ini`, a sanitização da entrada do usuário com a variável `filter_var`, o envio de e-mails seguros e o uso do PHP.Mailer para entrega confiável.

O que é correio PHP?
O comando `php mail` é uma função nativa do PHP usada para enviar e-mails a partir de scripts PHP.
A função mail aceita os seguintes parâmetros:
- Assunto
- Mensagem
- Endereços de e-mail CC ou BCC
Por que e quando usar o PHP mail
A função de e-mail é útil em muitas situações:
- É uma forma econômica de notificar os usuários sobre eventos importantes.
- Permita que os usuários entrem em contato com você por e-mail, fornecendo um formulário de contato no site que envia por e-mail o conteúdo fornecido.
- Os desenvolvedores podem usá-lo para receber erros do sistema por e-mail.
- Você pode usá-lo para enviar e-mail aos assinantes do boletim informativo.
- Você pode usá-lo para enviar links de redefinição de senha para usuários que esqueceram suas senhas.
- Você pode usá-lo para enviar links de ativação e confirmação por e-mail. Isso é útil ao cadastrar usuários e verificar seus endereços de e-mail.
Enviando e-mail usando PHP
A função mail do PHP possui a seguinte sintaxe básica.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
AQUI,
- “$to_email_address” é o endereço de e-mail do destinatário do e-mail
- “$subject” é o assunto do e-mail
- “$message” é a mensagem a ser enviada.
- “[$headers]” é opcional; pode ser usado para incluir informações como CC e BCC.
- CC é a sigla para "cópia carbono". É usada quando você deseja enviar uma cópia para uma pessoa interessada, ou seja, um e-mail de reclamação enviado para uma empresa também pode ser enviado com cópia (CC) para o setor de reclamações.
- BCC é a sigla para "cópia oculta". É semelhante ao CC, mas os endereços de e-mail incluídos no campo BCC não são exibidos aos outros destinatários.
simples Mail Transmission Protocolo (SMTP)
O PHP mail usa o Simple Mail Transmission Protocolo (SMTP) para enviar e-mail.
Em um servidor hospedado, as configurações SMTP já estariam definidas.
As configurações de e-mail SMTP podem ser configuradas a partir do arquivo “php.ini” na pasta de instalação do PHP.
Para configurar as definições de SMTP no seu localhost, assumindo que você está usando o XAMPP em WindowsLocalize o arquivo “php.ini” no diretório “C:\xampp\php”.
- Abra o arquivo usando o Bloco de Notas ou qualquer outro editor de texto. Usaremos o Bloco de Notas neste exemplo. Clique no menu Editar.
- Clique no menu Localizar…
- A caixa de diálogo Localizar será exibida.
- Clique no botão Localizar Próximo
Localize as entradas em [função de e-mail]. As linhas padrão geralmente têm esta aparência:
- ; SMTP = localhost
- ; porta_smtp = 25
Remova os pontos e vírgulas antes de SMTP e smtp_port e defina SMTP para o seu endereço. Servidor SMTP e a porta para sua porta SMTP. Suas configurações devem ser semelhantes a estas:
- SMTP = smtp.exemplo.com
- porta_smtp = 25
Nota: as configurações SMTP podem ser obtidas com seu provedor de hospedagem web. Se o servidor exigir autenticação, adicione as seguintes linhas:
- auth_username = example_username@example.com
- auth_password = exemplo_senha
Salve as novas alterações e reinicie o programa. apache servidor.
PHP Mail Exemplo
Vejamos agora um exemplo que envia um e-mail simples.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
Saída:
Observação: o exemplo acima considera apenas os 4 parâmetros obrigatórios. Você deve substituir o endereço de e-mail fictício acima por um endereço de e-mail real.
Limpeza de entradas de usuário de e-mail
O exemplo acima usa valores codificados no código-fonte para o endereço de e-mail e outros detalhes para simplificar.
Vamos supor que você precise criar um formulário de contato onde os usuários preencham os dados e depois o enviem.
- Os usuários podem, acidentalmente ou intencionalmente, inserir código nos cabeçalhos, o que pode resultar no envio de e-mails de spam.
- Para proteger seu sistema contra tais ataques, você pode criar uma função personalizada que limpa e valida os valores antes do envio do email.
Vamos criar uma função personalizada que valide e higienize o endereço de e-mail usando a função integrada `filter_var`. A função `filter_var` é usada para higienizar e validar dados de entrada do usuário.
Possui a seguinte sintaxe básica.
<?php filter_var($field, SANITIZATION_TYPE); ?>
AQUI,
- “filter_var(…)” é a função de validação e higienização
- “$field” é o valor do campo a ser filtrado.
- “SANITIZATION_TYPE” é o tipo de sanitização a ser realizada no campo, como por exemplo:
- FILTRO_VALIDAR_EMAIL – retorna verdadeiro para endereços de e-mail válidos e falso para endereços de e-mail inválidos.
- FILTRO_HIGIENIZAR_EMAIL – Remove caracteres inválidos de endereços de e-mail, de forma que um endereço com caracteres estranhos seja reduzido a info@dominio.com.
- FILTRAR_SANITIZAR_URL – remove caracteres ilegais de URLs, deixando um endereço limpo como https://www.example.com.
- FILTER_SANITIZE_STRING – remove tags de valores de string, então "am bold" se torna "am bold". Observe que este filtro está obsoleto no PHP 8.1; use htmlspecialchars() em vez disso.
O código abaixo utiliza uma função personalizada para enviar e-mails seguros.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
Saída:
Garanta o Mail
Os e-mails podem ser interceptados durante a transmissão por destinatários não intencionais.
Isso pode expor o conteúdo do e-mail a destinatários não intencionais.
O e-mail seguro resolve esse problema. transmitEnvio de e-mails por meio de uma conexão criptografada usando SSL ou TLS, por exemplo, SMTP sobre SSL na porta 465 ou STARTTLS na porta 587.
A criptografia embaralha a mensagem antes de enviá-la, de forma que apenas o servidor de e-mail do destinatário pretendido possa lê-la.
PHPMailer: Uma alternativa melhor ao mail()
Para aplicações reais, a maioria dos desenvolvedores usa o PHP.MailUse a biblioteca er em vez da função mail() original. PHPMailO sistema autentica-se com um servidor SMTP externo, o que melhora bastante a capacidade de entrega, e simplifica o envio de anexos e e-mails em HTML.
Instale-o com o Composer e, em seguida, envie e-mails por meio de uma conexão SMTP autenticada e criptografada, conforme mostrado abaixo.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Comparado com mail(), PHPMailO er oferece autenticação SMTP, criptografia integrada, suporte a anexos e um tratamento de erros mais claro, razão pela qual é a opção recomendada para e-mails de produção.






