(PHP 4, PHP 5, PHP 7)
mail — Envia email
$to
, string $subject
, string $message
[, string $additional_headers
[, string $additional_parameters
]] )Envia um email.
to
Receptor, ou receptores do email.
O formato desta string precisa estar de acordo com » RFC 2822. Alguns exemplos:
subject
Assunto do email a ser enviado.
Assunto deve satisfazer o » RFC 2047.
message
Mensagem a ser enviada.
Cada linha deve ser separada com um LF (\n). Linhas não deve ser maiores que 70 caracteres.
(Somente Windows) Quando PHP está usando o servidor SMTP diretamente, e uma parada total é encontrada no início de uma linha, ela é removida. Para se defender disto, substitua estas ocorrência com dois pontos seguidos.
<?php
$text = str_replace("\n.", "\n..", $text);
?>
additional_headers
(opcional)String a ser inserida no final do cabeçalho do email.
Esta é normalmente usada para adicionar cabeçalhos extras (From, Cc, e Bcc). Múltiplos cabeçalhos extra devem ser separados com um CRLF (\r\n).
Nota:
Quando enviando email, o email precisa conter um cabeçalho From. Este pode ser definido com o parâmetro
additional_headers
, ou um padrão pode ser definido no php.ini.Um deslize fará com que resulte em uma mensagem de erro similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. O cabeçalho From define também Return-Path em Windows.
Nota:
Se mensagens não são recebidas, tente usar somente um LF (\n). Alguns Unix mail transfer agents (mais notavelmente » qmail) modificam LF por CRLF automaticamente (que leva a duplicação de CR se CRLF é usado). Este deve ser um último recurso, como não está de acordo com » RFC 2822.
additional_parameters
(opcional)
O parâmetro additional_parameters
pode ser usado para passar um parâmetro adicional para o programa configurado
para usa quando enviando email usando a configuração
sendmail_path. Por exemplo, isto pode ser usado para definir
o endereço do envelope remetente quando usando sendmail com a opção do sendmail
-f.
O usuário que executa o servidor web deve ser adicionado como trusted user na configuração de sendmail para evitar que um cabeçalho 'X-Warning' seja adicionado à mensagem quando você define o envelope remetente (-f) usando este método. Para usuários de sendmail, este arquivo é /etc/mail/trusted-users.
Retorna TRUE
se o email foi aceito com sucesso para entrega, FALSE
caso contrário.
É importante notar que somente pelo o email ser aceito para entrega, não significa que o email alcancará o destino esperado.
Versão | Descrição |
---|---|
4.3.0 (Somente Windows) | Todos os cabeçalhos (como From, Cc, Bcc e Date) são suportados, e não são case-sensitive. (Como cabeçalhos customizados não são interpretados pela MTA, são analisados pelo PHP, PHP < 4.3 suportava somente o elemento de cabeçalho Cc e era case-sensitive). |
4.2.3 |
O parâmetro additional_parameters é desabilitado em
safe_mode e a função
mail() emitirá uma mensagem de aviso e
retornará FALSE quando usada.
|
4.0.5 |
O parâmetro additional_parameters foi adicionado.
|
Exemplo #1 Enviando email.
Usando mail() para enviar um simples email:
<?php
// The message
$message = "Line 1\nLine 2\nLine 3";
// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);
// Send
mail('caffinated@example.com', 'My Subject', $message);
?>
Exemplo #2 Enviando email com cabeçalhos extra.
A adição de cabeçalhos básicos, dizendo a MUA os endereços From e Reply-To:
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Exemplo #3 Enviando email com um parâmetro adicional da linha de comando.
O parâmetro additional_parameters
pode ser usado
para passar um parâmetro adicional para o programa configurado
para usar quando enviar email usando a definição de configuração sendmail_path.
<?php
mail('nobody@example.com', 'the subject', 'the message', null,
'-fwebmaster@example.com');
?>
Exemplo #4 Enviando email HTML
É também possível enviar email HTML com mail().
<?php
// multiple recipients
$to = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';
// subject
$subject = 'Birthday Reminders for August';
// message
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
?>
Nota:
Se a intenção é enviar email HTML ou outro formato complexo, é recomendado usar o pacote PEAR » PEAR::Mail_Mime.
Nota:
A implentação do Windows de mail() difere bastante da implentação Unix. Primeiro, ele não usa um binary local para compor mensagens mas apenas opera com sockets diretos o que significa que uma MTA é necessária monitorando um socket de rede (que pode ser ou o localhost ou uma máquina remota).
Segundo, cabeçalhos customizados como From:, Cc:, Bcc: e Date: not são interpretados pela MTA, mas são analiados pelo PHP.
Assim como, o parâmetro
to
não deve ser um endereço na forma de "Algo <alguem@example.com>". O comando de email poderia não analisar isso adequadamente enquanto se comunica com o MTA.
Nota:
É válido notar que a função mail() não é apropriada para um grande volume de email em um loop. Esta função abre e fecha um SMTP socket para cada email, o que não é muito eficiente.
Para enviar uma grande quantidade de email, veja os pacotes » PEAR::Mail, e » PEAR::Mail_Queue.
Nota:
O seguintes RFCs podem ser úteis: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049, e » RFC 2822.