Forum und email

mail

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

Aviso

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
("[email protected]""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
("[email protected]""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
("[email protected]""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  "[email protected]", " // Observe a vírgula
$to .= "[email protected]";

/* 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 <[email protected]>, Kelly <[email protected]>\r\n";
$headers .= "From: Birthday Reminder <[email protected]>\r\n";

$headers .= "Cc: [email protected]\r\n";
$headers .= "Bcc: [email protected]\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 <[email protected]>". 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().