Enviar e-mails pelo PHP

Explicamos a maneira de enviar correios através de páginas PHP, exemplos simples e complexos para realizar a tarefa.

Por Miguel Angel Alvarez - Tradução de JML


Publicado em: 26/9/04
Valorize este artigo:
Para enviar correios electrónicos utilizando PHP dispomos de uma função bastante potente, incluída em todas as versões de PHP, sem a necessidade de instalar mais nada, em contra do que acontecia com ASP.

Em concreto, em PHP dispomos de uma função chamada mail() que permite configurar e enviar mensagens de correio. A função chama-se mail() e recebe três parâmetros obrigatórios e dois opcionais. Retorna true se o mail se enviou com êxito e false em caso contrario.

Parâmetros necessários em todos os casos

Destinatário: o endereço de correio ou endereços de correio que vão receber a mensagem. Se incluirmos vários endereços devemos separa-las por uma virgula.

Assunto: para indicar uma cadeia de caracteres que queremos que seja o assunto do correio electrónico a enviar.

Corpo: o corpo da mensagem, o que queremos que tenha escrito o correio.

Exemplo de envío de um mail simples

<?
mail("ze@criarweb.com,maria@criarweb.com","assunto","Este é o corpo da mensagem")
?>


Parámetros opcionais do envio de correio

Headers: Cabeçalhos do correio. Dados como o endereço de resposta, os possíveis endereços que receberão copia da mensagem, os endereços que receberão cópia oculta, se o correio está em formato HTML, etc.

Additional_parameters: esta opção não costuma utilizar-se e só está disponível a partir da versão 4.0.5 e desde PHP 4.2.3 está desabilitado em modo seguro. Pode usar-se para passar parâmetros adicionais ao programa configurado para enviar o correio, quando se manda o mail usando a opção de configuração sendmail_path. Podemos obter mais informação na documentação de PHP para a função mail().

Exemplo complexo de envio de correio

Vamos enviar um correio com formato HTML a ze@criarweb.com, com cópia a manel@criarweb.com e com uma cópia oculta para vinnie@criarweb.com e joao@criarweb.com. O endereço de resposta será configurado a xuxe@criarweb.com.

<?
$destinatario = "ze@criarweb.com";
$assunto = "Esta mensagem é um teste";
$corpo = '
<html>
<head>
   <title>Teste de correio</title>
</head>
<body>
<h1>Olá amigos!</h1>
<p>
<b>Bem-vindos ao meu correio electrónico de teste</b>. Estou contente de ter tantos leitores.
</p>
</body>
</html>
';

//para o envio em formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html;
charset=iso-8859-1\r\n";

//endereço do remitente
$headers .= "From: Xuxé <xuxe@criarweb.com>\r\n";

//endereço de resposta, se queremos que seja diferente a do remitente
$headers .= "Reply-To: mariano@desarrolloweb.com\r\n";

//endereços que receberão uma copia $headers .= "Cc: manel@desarrolloweb.com\r\n";
//endereços que receberão uma copia oculta
$headers .= "Bcc: vinnie@criarweb.com,joao@criarweb.com\r\n";
mail($destinatario,$assunto,$corpo,$headers)
?>


Nota: Antes de pôr em funcionamento o script no vosso servidor, por favor, mudem os dados das configurações dos endereços de correio que vão receber a mensagem e coloquem uns endereços que sejam vossos e onde possam verificar se as mensagens se enviaram correctamente.

Conclusão e download

Pensamos e esperamos que depois deste artigo compartam a nossa opinião, que o envio de mails em PHP é uma tarefa simples. É de muito agradecer que todas as versões de PHP incluam uma função para o envio de mails.

Nota: Para o envio de correio através de PHP é necessário que este tenha uma correta configuração.

Se a nossa web está num servidor de um provedor de hosting provavelmente já tenham configurado o PHP para o envio de mails. Se estamos a trabalhar desde um servidor próprio, temos de configurar PHP.

PHP configura-se editando o ficheiro php.ini onde devemos especificar dados como o servidor de correio de saída que deve utilizar PHP para transferir as mensagens.

Dentro do php.ini, devemos procurar o epigrafe [mail function]. Dependendo do nosso sistema deveremos configura-lo de uma maneira ou de outra.

Em sistemas Windows encontraremos o php.ini no directório windows ou dentro deste, no subdirectório system32 ou similar. Neste sistema deveremos indicar o domínio do servidor de smtp, algo parecido a smtp.meudominio.com. Se é o PC local o que faz de servidor, poderemos por "localhost" como máquina que enviará o correio. Também podemos especificar o endereço desde donde queremos que pareça que se envia a mensagem no caso de que não se indique outra durante o envio.





Comentários do artigo
Foram enviados 31 comentários ao artigo
21 comentários não revisados
10 comentários revisados:
Por: Weslley
18/10/06
Ola, a Função mail do PhP tem alguma forma de saber se o emial foi recebido pelo destinatario ?
Por: Klaus
19/2/07
Vocês não entenderam porque são burros... o artigo está bem escrito, a função funciona,e eh bem basica...

soh que não adianta achar que eh soh dar crtl+c, crtl+v e querer que funcione...

suas mães mastigam a comida e a colocam nas suas bocas?
Por: Aline
14/3/07
Vcs não entenderam pq ñ sabem nada mesmo, o meu script ta funcionando direitinho.
Por: Leonardo Gazio
19/5/07
Meu querido amigo,
esquece essa função mail(), esse trem não funciona e já tá mais do que provado, não envia NADA, nem pra caixa de entrada nem pra lugar nenhum, não chega nem ao menos na lixeira e quando raramente funciona o remetente chega como root(ISSO É FEIO), vocês podiam colocar um artigo completo usando uma classe que realmente funciona como por exemplo o phpmailer, mimeMail.inc.php e por aí vai, agora essa função aí pra mim é enche linguiça...
Por: roberto
13/8/07
muito bom mas as mensagens chegam na caixa de email como anonimas alguem sabe o porque disso ? obs: o script esta hospedado em servidor linux
Por: Benedicto
08/2/08
Excelente ... !!! salvou minha vida !! rs
Parabéns !!!
To precisando de um PHP
Por: batisteira
21/5/09
ae galera, to precisando de um php, algum de vcs tiverem ficarem mtu grato. abraço dr
Cópia Oculta
Por: tarsisacasan
07/6/10
Olá, muito bom o artigo e script. Me ocorreu que nunca vi uma explicação para enviar com cópias ocultas. Sabe do que estou falando né? Aquela opção "Cco" que tem em serviços de e-mail.

Vcê sabe como fazer? Agradeço e parabens pelo post
Erro :X
Por: staggan
29/7/10
Se a função mail existe, é porque funciona... mas ela está retornando um erro.

'Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:Arquivos de programasVertrigoServwwwadminitrativoemail.php on line'

Aguem sabe me explicar porque?
problemas com o from
Por: ti950
23/5/12
Estou com problema com o from
queria que o from recebesse o valor passado pelo form
para mostrar o nome e o email de quem enviou
ex:
from : $nome <$email>
mais não envia e não dá nenhum erro,
o from tem algum parametro obrigatorio ou tem q ser do mesmo servidor que esta hospedado o site

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato