Manual do PHP
Anterior |  | Próxima

# mail

(PHP 3, PHP 4, PHP 5)

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:` 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.

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