Um tópico que sempre traz muitas dúvidas é o envio de emails em PHP. A linguagem traz a função mail(), que serve justamente para isto. E de fato, para o envio de emails simples, ela resolve o problema de forma espetacular. A função tem a seguinte forma:
<?php mail($para, $assunto, $mensagem, $cabecalhos, $parametros); ?>
Sendo que os cabeçalhos e os parâmetros são opcionais. A função é bem auto-explicativa, e não tem muito o que falar.
O problema surge justamente quando queremos algo a mais, como por exemplo:
Uma classe que já venho usando a muito tempo, e que cumpre de forma excelente todos os “buracos” deixados pela função mail() é a PHP Mailer. Coloquei “buracos” entre aspas, pois é possível fazer tudo isso usando apenas a função mail(), só que dá um bocado de trabalho extra, pois todo o trabalho de criação dos cabeçalhos, de codificação da mensagem e anexação de arquivos terá que ser feita manualmente.
A classe para o PHP 5/6 pode ser baixada diretamente do SourceForge, e a instalação é bem simples, pois a classe principal está em apenas um arquivo, chamado class.phpmailer.php. Existem 2 arquivos extras, com classes para uso em SMTP e POP3, mas que não são necessárias caso não se utilize servidores SMTP ou POP3 externos.
Uma vez copiada, basta darmos um include ou um require, e teremos a classe disponível para ser instanciada. Um exemplo bem simples:
<?php $mail = new PHPMailer(); $mail->IsMail(); // Usando como backend a função mail() $mail->From = "bruno@lustosa.net"; // Email de quem envia a mensagem $mail->Sender = $mail->From; $mail->FromName = "Bruno Lustosa"; // Nome de quem envia a mensagem $mail->AddAddress("nobody@example.com"); // Quem irá receber. Posso chamar mais vezes $mail->Subject = "Assunto da mensagem"; $mail->IsHTML(true); // Estou enviando um email em HTML $mail->Body = "<b>email em html</b>"; // Este é o email, em HTML $mail->AltBody = "email em texto"; // Email alternativo, em texto puro $mail->CharSet = "utf-8"; // A codificação usada no email if ($mail->Send()) { print "Email enviado com sucesso."; } ?>
Pronto. De forma bem simples, consegui enviar um email que me daria um trabalhão se eu fosse montar manualmente. O PHPMailer, neste caso, age como um “formatador” do email, gerando todos os cabeçalhos e fazendo toda a codificação necessária, e no fim, chamando a função mail() para fazer o envio (pois chamei o método IsMail()). Ao invés de passar para a função mail(), poderia usar um servidor SMTP externo chamando o método IsSMTP() e indicando o servidor em $mail->Host.
Algumas explicações:
A classe possui inúmeras propriedades e métodos além dos listados neste exemplo, que podem ser usados para fazer (quase?) tudo que um cliente de email faz. Além disso, junto com a classe, existe uma pasta chamada “examples” com alguns exemplos de como fazer outras coisas, como utilizar o SMTP do Gmail, anexar imagens, referenciar as imagens anexadas de dentro do email em HTML, etc.
Feed RSS para os comentários deste artigo.
Nenhum comentário.