Resumo : neste tutorial você aprenderá como enviar e-mail usando a mail()
função PHP.
Introdução à função mail() do PHP
Para enviar e-mail, você usa a mail()
função.
Em sistemas Linux ou Unix, você pode configurar a mail()
função para usar o programa sednmail
ou Qmail
para enviar mensagens.
No Windows, você pode instalar sendmail
e definir o arquivo sendmail_path
in php.ini
para apontar para o arquivo executável.
Porém, é mais conveniente configurar o servidor SMTP com uma porta e sendmail_from
no php.ini
arquivo no Windows assim:
[mail function]
SMTP=smtp.phptutorial.net
smtp_port=25
sendmail_from=contact@phptutorial.net
Linguagem de código: PHP ( php )
Se o servidor SMTP exigir autenticação, você poderá adicionar as seguintes linhas para a conta ser autenticada:
auth_username=smtp_user
auth_password=smpt_password
Linguagem de código: PHP ( php )
Assim que a configuração estiver pronta, você precisa reiniciar o servidor web.
O seguinte ilustra a sintaxe da mail()
função:
mail(
string $to,
string $subject,
string $message,
array|string $additional_headers = [],
string $additional_params = ""
): bool
Linguagem de código: PHP ( php )
A mail()
função possui os seguintes parâmetros:
$to
é o destinatário do e-mail$subject
é o assunto do e-mail.$message
é a mensagem de e-mail. Pode ser texto simples ou HTML. Se$message
for texto simples, você usa um CRLF (\r\n) para separar as linhas. E cada linha não deve ultrapassar 70 caracteres.$additional_headers
é uma string ou array inserido no cabeçalho do email. Inclui from, cc, bcc… Se o cabeçalho vier de uma fonte não confiável, você deve sempre higienizá-lo para fins de segurança.$additional_params
permite que você passe sinalizadores adicionais como opções de linha de comando para osendmail
programa.
A mail()
função retorna true
se o e-mail foi aceito para entrega. Isso não significa que o e-mail chegou com sucesso ao destinatário pretendido. Se ocorreu um erro, a mail()
função retorna false
.
Exemplos de funções PHP mail()
Vejamos alguns exemplos de uso da mail()
função PHP.
1) Usando a função PHP mail() para enviar um exemplo de e-mail em texto simples
O exemplo a seguir usa a mail()
função para enviar um email simples:
<?php
$subject = 'This is a test email';
$message = <<<MSG
Hi,
This is a simple email.
It's sent from PHP.
MSG;
wordwrap($message, 70, "\r\n");
mail('[email protected]', $subject, $message);
Linguagem de código: PHP ( php )
Neste exemplo, usamos a wordwrap()
função para garantir que as linhas da mensagem não excedam 70 caracteres.
2) Usando a função PHP mail() para enviar um email com exemplo de cabeçalhos extras
O exemplo a seguir usa a mail()
função para enviar um email com cabeçalhos adicionais como From, Reply-To e X-Mailer:
<?php
$to = '[email protected]';
$subject = 'This is a test email';
$message = 'Hi there';
$headers[] = 'From: [email protected]';
$headers[] = 'Reply-To: [email protected]';
$headers[] = 'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, implode('\r\n', $headers));
Linguagem de código: PHP ( php )
Se você usa PHP 7.2 ou posterior, você pode passar os cabeçalhos como um array como este:
<?php
$to = '[email protected]';
$subject = 'This is a test email';
$message = 'Hi there';
$headers = [
'From' => '[email protected]',
'Reply-To' => '[email protected]',
'X-Mailer' => 'PHP/' . phpversion()
];
mail($to, $subject, $message, $headers);
Linguagem de código: PHP ( php )
3) Exemplo de uso da função PHP mail() para enviar email em HTML
Para enviar e-mail em HTML, você precisa definir o Content-type
cabeçalho assim:
<?php
$to = '[email protected]';
$subject = 'This is a test email';
$message = '<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Email</title>
</head>
<body>
<h1>This is HTML mail</h1>
</body>
</html>';
$headers = [
'MIME-Version' => '1.0',
'Content-type' => 'text/html; charset=utf8',
'From' => '[email protected]',
'Reply-To' => '[email protected]',
'X-Mailer' => 'PHP/' . phpversion()
];
if (mail($to, $subject, $message, $headers)) {
echo 'email was sent.';
} else {
echo 'An error occurred.';
}
Linguagem de código: PHP ( php )
Resumo
- Use a função PHP
mail()
para enviar uma mensagem de email.