Manual do PHP
Anterior |  | Próxima

# mail

(PHP 3, PHP 4 )

mail -- Envia email

## Descrição

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])

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.

Atenção

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:` são not interpretados por `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.

Exemplo 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`).

Exemplo 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.

Exemplo 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.

Exemplo 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().

Anterior | Principal | Próxima
ezmlm_hash | Acima | mailparse Functions