webmaster

Envio Ficheiros Por Formulário Para Email

Olá, Somos criadores de conteúdo apaixonados por web design, programação, criação de websites e tecnologias digitais. O nosso website está online! Explore a nova versão beta, onde terá acesso a novos recursos e melhorias. A sua experiência e feedback são muito importantes para nós! Novos artigos, todas as semanas! Fique atento.
Artigos SEO

Artigos SEO

Search Engine Optimization

Artigos WordPress

Criação de websites.

Tutoriais

Ensino numa série de passos simples

Envio Ficheiros Por Formulário Para Email

Hoje gostaria de implementar no nosso Blog um assunto simples, porém, de grande importância: Envio de Ficheiros por Formulário Para Email.

Quem utiliza o PHP de forma profissional, certamente já encontrou algum cliente com necessidade de enviar ficheiro por formulário (especialmente gráficas que precisam receber ficheiro em formato do Corel ou Photoshop e muitas vezes, esses ficheiros não chegam por email, por causa de seu tamanho).

Através desta solução, você poderá implementar o script em seu site e resolver este problema!

Como fazemos em todas as nossas matérias, em anexo temos disponível os ficheiros para que tu possa estudar e testar a matéria que estamos lhe explicando.

Formulário Em HTML

Antes de partirmos para a programação, é importante analisar o formulário que vamos preencher para enviar o ficheiro. Por isso, abra o ficheiro index.php (disponível no arquivo em anexo – conforme o código e imagem a seguir).




.:: WebMaster.PT :: Enviando Ficheiros ::.

Nome:
E-mail:
Assunto:
Mensagem:
Ficheiro:



FORMULÁRIO DE ENVIO

Copie e cole os ficheiros disponíveis em anexo em seu Servidor.

Preencha os dados disponíveis no formulário e selecione o ficheiro a ser enviado (conforme a imagem a seguir).

PREENCHIMENTO DO FORMULÁRIO

Após preencher todos os dados, clique no botão Enviar para efetuar o envio da mensagem.

Feito isso, a mensagem será enviada com sucesso.

OBS.: Não esqueça de alterar o email de recebimento nas linhas 22 e 28 do ficheiro “envia_email.php”.

Veja na imagem a seguir o exemplo de recebimento:

EMAIL RECEBIDO

Script De Envio Em PHP

Vamos analisar um pouco mais sobre o ficheiro “envia_email.php”.


----- Linha 3 a linha 6 -----
$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$msg = $_POST['msg'];

No trecho acima, recebemos as variáveis do ficheiro “index.php”.

OBS.: Não trouxemos o ficheiro, pois pretendemos fazer abaixo.


----- Linha 8 -----

$corpo = "Nome: $nome
E-mail: $email
Mensagem: $msg";

Através da linha acima, traremos os campos necessários para a apresentação do conteúdo em tela.

OBS.: Trata-se de uma apresentação simples e objetiva. Caso queira melhorar esta apresentação, apenas comente a linha 8 e insira o script abaixo logo na linha a seguir:


$corpo = "

Prezado Administrador,

Recebemos através do site SEUSITE.COM.PT a mensagem abaixo:

Nome: $nome
EMail: $email
Mensagem:
$msg

Atenciosamente,

Central de Relacionamentos
Sua Empresa ©


:: Politica de Privacidade::

O envio e recebimento de nossas mensagens procura estar alinhado com o Código de Ética Anti-SPAM que objetiva reger e orientar a comunicação institucional, comercial e publicitária enviada sob a forma de mensagens eletrônicas.



Temos a forte convicção de que o relação entre cliente e empresa deve ser marcada pelo conceito de parceria, fortalecendo o vínculo estabelecido em bases de confiança e apoio mútuo.

";

OBS.: Altere informações como “Sua Empresa”, “Imagem” para personalizar este trecho do código.


----- Linha 10 a linha 16 -----

if (($fp = fopen($_FILES['arquivo']['tmp_name'],"rb")))
{
$anexo = fread($fp,filesize($_FILES['arquivo']['tmp_name']));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}

O trecho acima trata o recebimento do ficheiro que está sendo enviado.


----- Linha 17 a linha 25 -----

if ($anexo)
{
$mensagem = "--$bound\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n$corpo\n\n"
. "--$bound\nContent-type: $_FILES[arquivo][type]\nContent-Disposition: attachment; filename=" . $_FILES['arquivo']['name']

. "\nContent-Transfer-Encoding: base64\n\n$anexo\n"
. "--$bound\r\n";
mail("seuemail@webmaster.pt",$assunto,$mensagem,"From: $email\nMIME-Version: 1.0\nContent-type: multipart/mixed;

boundary=\"$bound\"");
print("Mensagem Enviada com Sucesso!");
//print($fp);
}

Se houver ficheiro a ser enviado, o sistema efetuará o envio para a conta de email acima descrita, (para o correto funcionamento, onde está escrito “seuemail@webmaster.pt”, altere para a sua conta de email).


----- Linha 26 a linha 30 -----

else
{
mail("seuemail@webmaster.pt",$assunto,$corpo,"From: $email\nContent-type: text/html");
print("Mensagem Enviada com Sucesso - Sem Anexo");
}

Se não houver ficheiro em anexo, o sistema efetuará o envio para a caixa de mensagens acima descrita sem o ficheiro, (para o correto funcionamento, onde está escrito “seuemail@webmaster.pt”, altere para a sua conta de email).

Trata-se de um script simples e poderá ser modificado de acordo com suas necessidades.

Ficamos por aqui em mais uma matéria! Esperamos tê-lo ajudado em algo…

Envie-nos suas dúvidas e dê sugestões para as próximas matérias! Nosso compromisso é lhe ajudar!

Download do código fonte utilizado neste tutorial: Envio Ficheiros Por Formulário Para Email

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

Deixe o seu comentário, participe!

17 Responses

  1. Como não percebo nada de php
    é possível explicar melhor o ficheiro envia_email.php tipo o código completo?
    Obrigado

  2. da linha 3 à 6 não se vê nada na primeira imagem, porque nao colocaram o código todo seguido, agora dá-me erro… n sei pk

    há partes nas imagens de baixo que nao sei onde se completam na de cima… como faço para meter o meu mail?

  3. Olá, eu gostaria de te perguntar aonde encontro um formulario do tipo: ENVIE SUA RECEITA AQUI. aí a pessoa escreve a receita e se tiver alguma foto da mesma vai no icone procurar e adiciona a imagem da receita. Apos isso ela envia e eu recebo no email, analiso e posto. Voce poderia me ajudar.

    Obrigado. Um abraço ….Marcos

  4. ola, eu fiz o download desse formulario, personalizei conforme a minha necessidade, porem, toda vez que tento enviar o formulario sem arquivo anexo da o seguinte erro: 

    " Warning: fopen() [function.fopen]: Filename cannot be empty in /home/netwanin/web/netwan/envia_trabalhe.php on line 107
    Mensagem Enviada com Sucesso – Sem AnexoMensagem Enviada com Sucesso – Sem Anexo "

    Você pode me ajudar a solucionar esse erro? 
    Ja sentei com o meu chefe, tentamos de varias maneiras que pareciam logicas mas nao conseguimos resolver.

    Obrigado, Wesley

    1. A mim também dá este erro, como dá para resolver? e quando tem o ficheiro, dá mensagem que $anexo é desconhecido!
      Será que dá para ajudar?

  5. Olá, só passo aqui para agradecer e parabenizar, ótimo post e de fácil compreensão para pessoas como eu que conhece muito pouco de web, procurei muito na internet sobre o assunto mas não conseguir encontrar nada tão bem explicado e de fácil aplicação. Você não tem ideia de como isso vai me ajudar.

    Abraço e parabéns novamente.

  6. Olá!
    Primeiramente, Muito Obrigado pelo arquivo disponibilizado.
    Me serviu muito bem cara. foi 10! não foi 1000 kkkk.
    Eu só gostaria de saber como faço pra que nesse código um cliente possa me mandar ao invés de uma, varias fotos.
    Pode me ajudar?
    Grato!

  7. Boa tarde, ocorreu o seguinte erro:

    Warning: fopen() [function.fopen]: Filename cannot be empty in /"o_meu_endereço"/formulario.php on line 20
    Mensagem Enviada com Sucesso – Sem Anexo " 

    Será que me podem ajudar a solucionar este erro?

    Obrigado

    Continuação de excelente trabalho.

  8. Excelente. Depois de procurar bastante na internet esse foi o que funcionou melhor!

    Very good job! Work very well. Thank you very much.

  9. Boa noite pessoal pra arrumar esse ero apenas adiciona  na primeira linha   " <? "     "<?php"   é um erro do IE

    abraços !

  10. Quemuel obrigado! Ajudou muito e foi muito claro também.  Se eu quiser deixar o assunto fixo, para que o e-mail chegue sempre com o mesmo assunto onde devo alterar? Um abraço  e parabéns

  11. Alguém sabe como arrumar?
    Warning: fopen() [function.fopen]: Filename cannot be empty in D:weblocaluserxxxwwwenvia_email.php on line 10

    não consegui com a dica do victor!

  12. Como faria para restringir o tipo de arquivo que pudesse ser enviado? Se, por exemplo, eu quiser que só me enviem arquivos .doc ?

    Obrigado

  13. Eu baixei em código mas não funcionou apresenta o seguinte erro, poderia me ajudar por favor?
    Ficarei muito grata!.

    E-mail: $email
    Mensagem: $msg"; $bound = "XYZ-" . date("dmYis") . "-ZYX"; if (($fp = fopen($_FILES['arquivo']['tmp_name'],"rb"))) { $anexo = fread($fp,filesize($_FILES['arquivo']['tmp_name'])); $anexo = base64_encode($anexo); fclose($fp); $anexo = chunk_split($anexo); } if ($anexo) { $mensagem = "–$boundnContent-type: text/htmlnContent-Transfer-Encoding: 7bitnn$corponn" . "–$boundnContent-type: $_FILES[arquivo][type]nContent-Disposition: attachment; filename=" . $_FILES['arquivo']['name'] . "nContent-Transfer-Encoding: base64nn$anexon" . "–$boundrn"; mail("cenartec.unn@gmail.com",$assunto,$mensagem,"From: $emailnMIME-Version: 1.0nContent-type: multipart/mixed; boundary="$bound""); print("Mensagem Enviada com Sucesso!"); //print($fp); } else { mail("cenartec.unn@gmail.com",$assunto,$corpo,"From: $emailnContent-type: text/html"); print("Mensagem Enviada com Sucesso – Sem Anexo"); } ?> 

    Obrigada

Leave a Reply

Your email address will not be published. Required fields are marked *


Versão Beta

Estamos a mudar

Olá, Somos criadores de conteúdo apaixonados por web design, programação, criação de websites e tecnologias digitais. Ajudamos os nossos clientes a levar o conteúdo certo às pessoas certas, criando artigos e recursos que facilitam a criação e otimização de websites.

Artigos Populares

Guia Prático Sobre Segurança Do Joomla

Dicas para diminuir substancialmente o número de vetores de ataque ao Joomla! Proteja o seu trabalho!

Os Segredos Do Sucesso Na Internet

A responsabilidade. O querer. O erro e a experimentação. O social. A memória da internet. Ser quem você é.

38 Ideias Espetaculares Para Sites De Empresas

Encontre inspiração nestes 45 exemplos de sites de empresas para criar o site da sua empresa.