Insights que transformam sua carreira!

Receba soluções práticas, dicas que economizam tempo e insights exclusivos de programação que realmente funcionam. Junte-se a mais de 5.000 assinantes!

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

Dê um salto na sua carreira de programação!

Receba soluções práticas, economize tempo com dicas eficazes e conquiste insights exclusivos para acelerar sua evolução na área de TI. Junte-se a mais de 5.000 desenvolvedores que já estão um passo à frente!

Quero me destacar agora!

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

Conta Exclusiva ChatGPT: Acesso Ilimitado

Desbloqueie o poder do ChatGPT com recursos premium. Aproveite 80,5% de desconto e garantia de 100% de satisfação. Junte-se hoje e viva a melhor experiência de chat com IA!

Cypress, do Zero à Nuvem: domine a automação de testes com confiabilidade e eficiência

Aprimore suas habilidades de automação de testes com Cypress, desde o início até a integração contínua.

Saiba Mais

💻 Torne-se um Desenvolvedor Fullstack!

Domine as tecnologias mais requisitadas do mercado e conquiste sua carreira dos sonhos como Desenvolvedor Fullstack. Inscreva-se hoje!

Inscreva-se

$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 PHPMailer e 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 = new PHPMailer();
$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:

Gostou deste conteúdo?

Assine o E-Zine Ramos da Informática e receba semanalmente conteúdos exclusivos focados em desenvolvimento frontend, backend e bancos de dados para turbinar sua carreira tech.

📘 Conteúdo Exclusivo

Dicas, insights e guias práticos para alavancar suas habilidades em desenvolvimento e bancos de dados.

🚀 Hacks de Carreira

Ferramentas, atalhos e estratégias para se destacar e crescer rapidamente no mercado de tecnologia.

🌟 Tendências Tech

As novidades mais relevantes sobre desenvolvimento web, mobile e bancos de dados para você se manter atualizado.

Já somos mais de 5.000 assinantes! Junte-se a uma comunidade de profissionais que compartilham conhecimento e crescem juntos no universo tech.

Quero Assinar Agora

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

ArcGIS Maps JavaScript: Novidades da Versão 4.32

O ArcGIS, desenvolvido pela Esri, é uma plataforma líder...

O Novo Ramos da Informática: Menos Ruído, Mais Valor

O jogo mudou. A maneira de buscar conhecimento e...

Mais de 1 milhão de vagas em cursos e oportunidades de emprego

A Ramos da Informática trouxe um compilado de diversas...

Hackathon com premiação de US$150 mil no estádio do PSG

A Chiliz, empresa de tecnologia blockchain para esportes e entretenimento,...

Destaques do Git 2.48

O projeto Git de código aberto acaba de lançar...
Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

E-Zine Ramos da Informática

Conteúdo focado em desenvolvimeto backend, frontend, banco de dados e novas tecnologias. 


📧 Não perca tempo! Assine grátis agora mesmo e leve sua carreira ao próximo nível.

Dê um salto na sua carreira de programação!

Receba soluções práticas, economize tempo com dicas eficazes e conquiste insights exclusivos para acelerar sua evolução na área de TI. Junte-se a mais de 5.000 desenvolvedores que já estão um passo à frente!