(PHP 4, PHP 5)
mail — Envia email
Descrição
mail() automaticamente envia a mensagem especificada em message para o destinatário especificado em to . Destinatários múltiplos podem podem ser especificados colocando uma vÃrgula entre cada endereço em to . Email com anexos e tipos de conteúdo especiais podem ser enviados usando esta função. Esta é completada via MIME-encoding- para mais informações, veja » o artigo do Zend ou o » PEAR Mime Classes.
Os seguintes RFC's pode ser úteis: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, e » RFC 2049.
mail()devolve TRUE se o email foi enviado com sucesso, FALSE se não foi.
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, os cabeçalhos personalizados como From:, Cc:, Bcc: e Date: não são interpretados pelo MTA em primeiro lugar, mas são analizados pelo PHP. PHP < 4.3 somente elementos suportados Cc: elemento de cabeçalho (e foi caso-sensitivo). PHP >= 4.3 suporta todos os elementos de cabeçalho mensionados e não mais caso-sensitivo.
Example#1 Enviando email.
<?php
mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");
?>
Se uma string como quarto argumento é passada, esta string é insrida no fim do cabeçalho. É usado tipicamente para adicionar cabeçalhos extras. Cabeçalhos extras múltiplos são separados com sinal de retorno e novalinha.
Nota: Você deve utilizar \r\n para separar headers, embora alguns agentes de transferência de email Unix podem trabalhar com uma simples "newline" (nova linha) apenas (\n).
Example#2 Enviando email com cabeçalhos extras.
<?php
mail("nobody@example.com", "the subject", $message,
"From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion());
?>
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. Por exemplo, isto pode ser usado para definir o endereço do envelope remetente quando usar sendmail com a opção de configuração -f. Você pode precisar adicionar o usuário que seu servidor web executa como para sua configuração de sendmail para evitar que um cabeçalho 'X-Warning' seja adicionado á mensagem quando você define o envelope remetente usando este método.
Example#3 Enviando email com cabeçalhos extras e definindo um parâmetro de uma linha de comando adicional.
<?php
mail("nobody@example.com", "the subject", $message,
"From: webmaster@{$_SERVER['SERVER_NAME']}", "-fwebmaster@{$_SERVER['SERVER_NAME']}");
?>
Nota: Este quinto parâmetro foi adicionado no PHP 4.0.5. Desde o PHP 4.2.3 este parâmetro está desabilitado em safe_mode e a função mail() irá expor uma mensagem de aviso e devolverá FALSE se você estiver tentando usá-la.
Você pode utilizar strings simples utilizando técnicas para construir mensagens complexas.
Example#4 Enviando email complexo.
<?php
/* Destinatário */
$to = "mary@example.com" . ", " ; // Observe a vÃrgula
$to .= "kelly@example.com";
/* assunto */
$subject = "Birthday Reminders for August";
/* mensagem */
$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>
';
/* Atenção se você pretende inserir numa variável uma mensagem html mais
complexa do que essa sem precisar escapar os carateres
necessários pode ser feito o uso da sintaxe heredoc, consulte tipos-string-sintaxe-heredoc */
/* Para enviar email HTML, você precisa definir o header Content-type. */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
/* headers adicionais */
$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";
/* Enviar o email */
mail($to, $subject, $message, $headers);
?>
Nota: Certifique-se que você não tem nenhum caractere novalinha em to ou subject , ou o email não será enviado corretamente.
Nota: O parâmetro to não deveria 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 (Particularmente dentro do Windows).
Veja também imap_mail().