03 jun

Enviar formulário de contato com anexo em PHP

Recentemente precisei montar um formulário de contato em PHP com a possibilidade de enviar um arquivo anexado, e percebi que o PHP não suporta isso nativamente pela função mail(). Como eu não quis usar nenhuma biblioteca de terceiros pronta, vi que seria necessário alterar o header do e-mail e acrescentar nele o anexo.

Para alcançar esse resultado, primeiramente precisei alterar o meu formulário. Este abaixo serve como exemplo, note o atributo enctype="multipart/form-data", sem ele não vai funcionar.

No script que vai receber os dados para envio, verifico a existência do anexo, já que ele é opcional, e codifico ele no header do e-mail. Aproveito e também dou uma limpada nos textos enviados, para evitar o chamado Email injection, já que não devemos confiar em textos enviados pelo usuário.

Pronto, com isso agora o formulário é capaz de enviar os anexos corretamente.

Fontes