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: 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 tonã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