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
Ola, a Função mail do PhP tem alguma forma de saber se o emial foi recebido pelo destinatario ?
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?
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...
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
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