+5

Utilizando a Função mail()

criado por Thiago Alves Goulart em 07/04/2003 7:56pm
Para explicar os conceitos de utilização da função mail() estarei utilizando um Projeto Orientado, ou seja, ao final deste artigo você terá executado um projeto.

O projeto exemplificado a seguir trata-se de um formulário muito comum nos websites de hoje em dia, o "Contato". O primeiro passo do nosso projeto é criar um formulário com os campos Nome, E-mail e Mensagem. Veja o exemplo:

<form action="mail.php" method="post">
  <p>Nome: 
    <input name="nome" type="text">
  </p>
  <p>e-mail: 
    <input name="email" type="text">
  </p>
  <p> Mensagem: 
    <textarea name="mensagem" wrap="VIRTUAL"></textarea>
  </p>
  <p>
    <input type="submit" name="Submit" value="Enviar">
  </p>
</form>

Observe que o atributo action do formulário aponta para arquivo mail.php.

Depois de criado o formulário podemos então criar o arquivo mail.php para receber os dados do formulário e enviar o email. Porém, antes disso observe a definição da função mail() na documentção oficial do php:

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

Explicando a definição: a função mail() retorna uma variável do tipo booleana, e os argumentos dessas função são a 'string' que indica quem recebrá o e-mail, a 'string' de assunto do e-mail, a string de mensagem propriamente dita, e uma string adicional e não obrigatória de parâmetros 'headers'.

Veja abaixo como eu aconselho a ser feito o uso da função mail():

<?php
// Criando a variável que irá representar o corpo do e-mail
$msg = "De:";
$msg .= $nome;
$msg .= "\r\n";
$msg .= "Assunto:";
$msg .= $assunto;
$msg .= "\r\n";
$msg .= "Mensagem:";
$msg .= $mensagem;
$msg .= "\r\n";
$msg .= "\r\n";

// Criando a variável adicional de headers
$headers = "From: "; //Observe que eu utilizei o header 'From' que é um header padrão.
$headers .= $nome;
$headers .= " <";
$headers .= $email;
$headers .= ">";
// Agora é só utilizar a função mail()

// mail("contato@meusite.com", $assunto, $msg, $headers);
// Na linha de comentário acima eu mostro como ficaria a função.
// O bloco exibe a mensagem de acordo com resultado da utilização
// da função, ou seja, se a mensagem foi enviada ou não

if (@mail("contato@meusite.com", $assunto, $msg, $headers)) {
    echo "mensagem eviada com Sucesso!";
} else {
    echo "a mensgem não pode ser enviada";
}
?>

Fácil, né? Agora é só colocar em seu site e testar...

Comentários:

Mostrando 1 - 10 de 16 comentários
Felipe Matos disse:
Parece que tudo ta funcionando perfeito, aparece a mensagem de sucesso e tal, mas quando eu verifico meu email, pra ver se chegou, n chegou nada, o que pode ser? jah conferi o email e esta correto.

grato.
13/12/2006 6:10am (~17 anos atrás)

Galerinha eh o seguinte: consigo enviar email com a função porém .. quando verifico meus emails eles aparecem com "distorções ortográficas" (substituição de acentos por caracteres especiais). Como faço para corrigir isso ? Agradeço a colaboração de vcs..!!

Abraço !
29/05/2006 7:44pm (~18 anos atrás)

Alguem sabe se tem como pedir confirmação de recebimento usando a função mail()???
30/03/2005 12:28pm (~19 anos atrás)

Thiago Robis disse:
Como enviar uma mensagem HTML através deste script?
27/11/2003 2:27pm (~20 anos atrás)

é o seguinte.
mando o email e tal,
so q na mensagem nao aparece nada.
fica tudo em branco.
oq houve?
02/08/2003 6:42am (~21 anos atrás)

To usando o qmail e a função do php funciona só enviando para email q está dentro da maq, como faço para mandar para foram também ?
21/07/2003 4:02pm (~21 anos atrás)

No meu caso atual estou desenvolvendo a intranet da empresa e existem várias partes desta que necessitam enviar emails.
O problema aparece quando, por uma questão de segurança, o servidor de SMTP da empresa requer autenticação. Como eu conseguiria enviar um email pelo PHP com autenticação no SMTP, com o meu login e senha que seja?
05/06/2003 11:36am (~21 anos atrás)

Galera sou mais um iniciante nesta linguagem e já estou uns 3 dias procurando um jeito de mandar anexos utilizando a função mail() pois o servidor onde hopedo minhas páginas me disse que não tinha condições de instalar outra biblioteca para este fim. Alguém saberia me dizer como devo proceder ou onde encontrar documentação sobre este assunto????
até mais.
02/06/2003 6:26pm (~21 anos atrás)

Pedro Junior disse:
gostaria de saber como faço para usar a função mail() em um servidor q não tenho acesso para configurar o php.ini??????
25/05/2003 8:16pm (~21 anos atrás)

Tenho uma função mail mais quero que ela mande um mail para várias pessoa ao mesmo tempo, como um newsletter, por exemplo. como faço.
20/05/2003 8:14am (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)