ezmlm_hash
Mailparse
Funções da Mail
PHP Manual

# mail

(PHP 4, PHP 5)

mail — Envia email

### Descrição

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

Envia um email.

### Parâmetros

`to`

  Receptor, ou receptores do email.

  O formato desta string precisa estar de acordo com » RFC 2822. Alguns exemplos:

  - user@example.com
  - user@example.com, anotheruser@example.com
  - User <user@example.com>
  - User <user@example.com>, Another User <anotheruser@example.com>
`subject`

  Assunto do email a ser enviado.

  Cuidado

  Não deve conter caractere de nova linha, ou o email pode não ser enviado corretamente.

`message`

  Mensagem a ser enviada.

  Cada linha deve ser separada com um LF (\n). Linhas não deve ser maiores que 70 caracteres.

  Cuidado

  (Somente Windows) Quando PHP está usando o servidor SMTP diretamente, e uma parada total é encontrada no início de uma linha, ela é removida. Para se defender disto, substitua estas ocorrência com dois pontos seguindos.

  `<?php
  $text = str_replace("\n.", "\n..", $text);
  ?>`
`additional_headers` (opcional)

  String a ser inserida no final do cabeçalho do email.

  Esta é normalmente usada para adicionar cabeçalhos extras (From, Cc, e Bcc). Múltiplos cabeçalhos extra devem ser separados com um CRLF (\r\n).

  > Nota: Quando enviando email, o email precisa conter um cabeçalho From. Este pode ser definido com o parâmetro `additional_headers`, ou um padrão pode ser definido no php.ini.
  > Um deslize fará com que resulte em uma mensagem de erro similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. O cabeçalho From define também Return-Path em Windows.

  > Nota: Se mensagens não são recebiedas, tente usar somente um LF (\n). Alguns Unix mail transfer agents de má qualidade modificam LF por CRLF automaticamente (que leva a duplicação de CR se CRLF é usado). Este deve ser um último recurso, como não está de acordo com » RFC 2822.

`additional_parameters` (opcional)

  O parâmetro `additional_parameters` pode ser usado para passar um parâmetro adicional para o programa configurado para usa quando enviando email usando a configuração sendmail_path. Por exemplo, isto pode ser usado para definir o endereço do envelope remetente quando usando sendmail com a opção do sendmail -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 (-f) usando este método. Para usuários de sendmail, este arquivo é /etc/mail/trusted-users.

### Valor Retornado

Retorna `TRUE` se o email foi aceito com sucesso pelo entregado, `FALSE` caso contrário.

É importante notar que somente pelo o email ser aceito pelo entregado, não significa que o email alcancará o destino esperado.

### Histórico

Versão | Descrição
--- | ---
4.3.0 (Somente Windows) | Todos os cabeçalhos (como From, Cc, Bcc e Date) são suportados, e não são case-sensitive. (Como cabeçalhos customizados não são interpretados pela MTA, são analisados pelo PHP, PHP < 4.3 suportava somente o elemento de cabeçalho Cc e era case-sensitive).
4.2.3 | O parâmetro `additional_parameters` é desabilitado em safe_mode e a função mail() emitirá uma mensagem de aviso e retornará `FALSE` quando usada.
4.0.5 | O parâmetro `additional_parameters` foi adicionado.

### Exemplos

Exemplo #1 Enviando email.

Usando mail() para enviar um simples email:

`<?php
// The message
$message = "Line 1\nLine 2\nLine 3";
// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);
// Send
mail('caffinated@example.com', 'My Subject', $message);
?>`

Exemplo #2 Enviando email com cabeçalhos extra.

A adição de cabeçalhos básicos, dizendo a MUA os endereços From e Reply-To:

`<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>`

Exemplo #3 Enviando email com um parâmetro adicional da linha de comando.

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.

`<?php
mail('nobody@example.com', 'the subject', 'the message', null,
'-fwebmaster@example.com');
?>`

Exemplo #4 Enviando email HTML

É também possível enviar email HTML com mail().

`<?php
// multiple recipients
$to = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';
// subject
$subject = 'Birthday Reminders for August';
// message
$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 */
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$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";
// Mail it
mail($to, $subject, $message, $headers);
?>`

> Nota: Se a intenção é enviar email HTML ou outro formato complexo, é recomendado usar o pacote PEAR » PEAR::Mail_Mime.

### Notas

> Nota: 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, cabeçalhos customizados como From:, Cc:, Bcc: e Date: not são interpretados pela MTA, mas são analiados pelo PHP.
> Assim como, o parâmetro `to` não deve 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.

> Nota: Email com anexos e tipos especiais de conteúdo (e.g. HTML) podem ser enviado usando esta função. Isto é melhorado com MIME-encoding - para mais informação, veja este » artigo da Zend ou as classes » PEAR Mime.

> Nota: Vale a pena notar que a função mail() não é apropriada para grande volume de email em um loop. Esta função abre e fecha um socket SMTP para cada email, que não é muito eficiente.
> Para enviar uma grande quantidade de email, veja os pacotes » PEAR::Mail, e » PEAR::Mail_Queue.

> Nota: O seguintes RFCs podem ser úteis: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049, e » RFC 2822.

### Veja Também

- imap_mail() - Send an email message
- » PEAR::Mail
- » PEAR::Mail_Mime

ezmlm_hash
Mailparse
Funções da Mail
PHP Manual