Como Enviar E-Mail com Anexos em PHP: Mail e PHPMailer

Compartilhe:

Neste exemplo será mostrado como enviar e-mail com anexos em PHP de duas formas: usando a função mail() e usando o PHPMailer.

Usando a funcão mail()

Um email é composto de um cabeçalho e um corpo, sendo que o corpo pode ser separado em várias partes. No padrão o termo usado para identificar o separador destas partes é boundary. Sendo assim vamos definir um boundary para nosso email. As regras para gerar um boundary pode ser encontrado na internet facilmente. Mas simplificando, nada mais é que uma string aleatória que deve aparecer no email apenas quando for para indicar uma parte do email.

$boundary = "XYZ-".md5(date("dmYis"))."-ZYX";

Obtenha as informações do arquivo que vai anexar

// Arquivo enviado via formulário
$path = $_FILES['attachment']['tmp_name']; 
$fileType = $_FILES['attachment']['type']; 
$fileName = $_FILES['attachment']['name']; 

// Ou arquivo local
$path = '/caminho/para/o/arquivo';
$fileType = mime_content_type( $path );
$fileName = basename( $path );

// Pegando o conteúdo do arquivo
$fp = fopen( $path, "rb" ); // abre o arquivo enviado
$anexo = fread( $fp, filesize( $path ) ); // calcula o tamanho
$anexo = chunk_split(base64_encode( $anexo )); // codifica o anexo em base 64
fclose( $fp ); // fecha o arquivo

Definindo o cabeçalho (Existe outras informação importantes de cabeçalho que você pode adicionar para evitar que o email caia na caixa de SPAM).

// cabeçalho do email
$headers = "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-Type: multipart/mixed; ";
$headers .= "boundary=" . $boundary . PHP_EOL;
$headers .= "$boundary" . PHP_EOL;

Definição da mensagem em HTML

Abre em nova aba

$mensagem="--$boundary". PHP_EOL;$mensagem.="Content-Type: text/html; charset='utf-8'". PHP_EOL;$mensagem.="Mensagem";// Adicione aqui sua mensagem$mensagem.="--$boundary". PHP_EOL;

Anexando um arquivo

$mensagem.="Content-Type: ". $fileType."; name=\"". $fileName. "\"". PHP_EOL;$mensagem.="Content-Transfer-Encoding: base64". PHP_EOL;$mensagem.="Content-Disposition: attachment; filename=\"". $fileName. "\"". PHP_EOL;$mensagem.="$anexo". PHP_EOL;$mensagem.="--$boundary". PHP_EOL;

Enviando o email

mail($para,$assunto,$mensagem,$headers);

Usando o PHPMailer

Faça download do PHPMailere extraia os arquivos na pasta de seu projeto.

Inclua o arquivo principal do PHPMailer

require_once('caminho/para/o/phpmailer/class.phpmailer.php');

Preparando o email

$email=newPHPMailer();$email->From='nome@exemplo.com';$email->FromName='Seu nome';$email->Subject='Assunto';$email->Body='Corpo do email';$email->AddAddress('destinatario@exemplo.com');

Anexando o arquivo

$file_to_attach='caminho/do/arquivo/para/anexo';$email->AddAttachment($file_to_attach,'nome_do_arquivo.pdf');

Enviando o email

$email->Send();

O PHPMailer reduz várias linhas de código para um simples comando $email->AddAttachment();,bem mais simples! Usando o PHP puro será várias linhas a mais e provavelmente encontrará várias dificuldades e bugs.

VAI GOSTAR:

Compartilhe:

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade sobre linguagens de programação, banco de dados, DevOps, Internet das Coisas, tecnologia da indústria 4.0, Cyber Segurança e Startups.

RECENTES

Claude Sonnet 4.5: Mais Avançado para Programação e Automação

A Anthropic acaba de lançar o Claude Sonnet 4.5,...

AP2 do Google: Desenvolva Pagamentos para agentes de IA

O Google lançou o Agent Payments Protocol (AP2), um...

Curso gratuito de GitHub Copilot para devs e estudantes

A Microsoft abriu as inscrições para o primeiro Bootcamp...

Santander e a Alura oferecem 60.000 bolsas em carreira de tecnologia

Quer dar um salto na sua carreira? O Santander Imersão Digital está...

Google Tradutor desafia o Duolingo com novas ferramentas de aprendizagem de idiomas

O Google está lançando um novo recurso experimental com...

A peça que faltava para agentes de IA autônomos.

Este artigo foi originalmente publicado em: https://www.linkedin.com/newsletters/ezine-dev-ramos-da-inform%25C3%25A1tica-6947960536550526976/ A inteligência...
Newsletter semanal no LinkedIn
EZine Dev Ramos da Informática
Grandes dicas em JavaScript, Node, React, Next, Banco de Dados & IA.
Assinar grátis
Abre em nova aba
spot_img