Como enviar um e-mail utilização a função mail() do PHP.
Para que a função nativa mail() funcione o PHP tem que estar devidamente configurado com um servidor SMTP.
Na maioria das hospedagens essa configuração já foi feita.
Entendendo a função mail().
bool mail ( string $destinatario, string $assunto, string $mensagem[, string $cabecalho_adicional[, string $parametros_adicional]] )
Ela retorna “true” quando o envio do e-mail foi realizado com sucesso ou “false” no caso de ocorrer algum erro, recebendo 5 parâmetros, sendo os dois últimos opcionais.
1° – (string) $destinatario “to”.
E-mail de quem deverá receber a mensagem.
2° – (string) $assunto “subject”.
Assunto “titulo” do e-mail.
3° – (string) $mensagem “message”.
Mensagem “corpo” do e-mail, podendo ser texto simples ou HTML.
4° – (string) (opcional) $cabecalho_adicional “additional_headers”.
Cabeçalho adicional do e-mail
5° – (string) (opcional) $parametros_adicional “additional_parameters”.
Parâmetros adicionais
Enviando e-mail com mensagem em HTML
Estando configurado a utilização da função mail() se torna muito simples.
$html = $_POST['html']; $email = $_POST['email']; $title = $_POST['title']; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; mail($email ,$title, $html,$headers);
Repare que no exemplo acima eu utilizo o parâmetro adicional “headers” para definir o tipo do corpo da mensagem como “HTML”.
Configurando o “From, CC, Bcc”
Definindo o “from”:
$headers .= 'From: Nome <[email protected]>'. "\r\n";
Mandando o e-mail com múltiplas cópias:
$headers .= 'Cc: [email protected], [email protected]' . "\r\n";
Mandando como cópia oculta:
$headers .= 'Bcc: [email protected], [email protected]' . "\r\n";
Enviando o e-mail com um arquivo em anexo
Os comentários sobre os pontos mais importantes estão no próprio código.
Definindo os parâmetros iniciais:
/* Altere para seus dados */ $destinatario = "[email protected]"; $email_remetente = "[email protected]"; $nome_remetente = "Teste"; $assunto = "Assunto Teste - Envio com Anexo"; $mensagem = "Email de teste com anexo"; /* Caminho e nome do arquivo que será enviado */ $caminho_do_arquivo = "uploads/anexos/"; $nome_do_arquivo = "teste.doc";
Preparando o arquivo:
$arquivo = $caminho_do_arquivo . $nome_do_arquivo; $conteudo = file_get_contents( $arquivo); /* convertemos na base64 para poder anexar no e-mail */ $conteudo_base64 = chunk_split(base64_encode($conteudo)); $uid = md5(uniqid(time())); /* Pegamos o nome do arquivo para utilizar no header */ $name = basename($arquivo);
Configurando cabeçalho:
/* Configuramos o cabeçalho do e-mail*/ $header = "From: ".$nome_remetente." <".$email_remetente.">\r\n"; $header .= "Reply-To: ".$replyto."\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
Adicionando o anexo ao corpo do e-mail:
/* Temos que fazer algumas configurações adicionais no corpo do e-mail para poder anexar o arquivo */ $corpo_email = "--".$uid."\r\n"; $corpo_email .= "Content-type:text/plain; charset=iso-8859-1\r\n"; $corpo_email .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $corpo_email .= $mensagem."\r\n\r\n"; $corpo_email .= "--".$uid."\r\n"; $corpo_email .= "Content-Type: application/octet-stream; name=\"".$nome_do_arquivo."\"\r\n"; $corpo_email .= "Content-Transfer-Encoding: base64\r\n"; $corpo_email .= "Content-Disposition: attachment; filename=\"".$nome_do_arquivo."\"\r\n\r\n"; $corpo_email .= $conteudo_base64."\r\n\r\n"; $corpo_email .= "--".$uid."--";
Enviando a mensagem:
if (mail($destinatario, $assunto, $corpo_email, $header)) { return true; } else { return false; }

