Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, tenho um formulario (funcionando) que envia dados e anexo que a pessoa adiciona, porém eu não quero que ela adicione o arquivo, ao invés disso, quero q o formulario puxe um arquivo hospedado pdf no meu sate e envie, não estou conseguindo alterar para fazer isso.

 

se alguem tiver uma outra sugestão para anexar, posso adaptar também, sõ não estou conseguindo fazer o php anexar direto, sem a pessoa ter que subir o arquivo

obrigada!

 

arquivo html:

<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Formulário PHP com anexo</title>
 
 <!-- Layout -->
 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
 
 <!-- JavaScript -->
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
  </head>
 
  <body>
 <div class="container">
 <br>
   
 <form class="form-horizontal" method="POST" action="enviar.php" enctype="multipart/form-data">
   <fieldset>
 
 <!-- Título do formulário -->
 <legend>Formulário PHP com envio de anexo</legend>
 
 <!-- Campo: Nome -->
 <div class="form-group">
   <label class="col-md-4 control-label" for="nome">Nome</label>  
 <div class="col-md-4">
   <input id="nome" name="nome" placeholder="Informe seu nome" class="form-control input-md" required="" type="text">
 </div>
 </div>
 
 <!-- Campo: Email -->
 <div class="form-group">
   <label class="col-md-4 control-label" for="nome">Email</label>  
 <div class="col-md-4">
   <input id="replyto" name="replyto" placeholder="Informe seu email" class="form-control input-md" required="" type="text">
 </div>
 </div>
 
 <!-- Campo: Assunto -->
 <div class="form-group">
   <label class="col-md-4 control-label" for="nome">Assunto</label>  
 <div class="col-md-4">
   <input id="assunto" name="assunto" placeholder="Informe o assunto da mensagem" class="form-control input-md" required="" type="text">
 </div>
 </div>
 
 <!-- Campo: anexo --> 
 <div class="form-group">
   <label class="col-md-4 control-label" for="arquivo">Anexo</label>
 <div class="col-md-4">
   <input id="arquivo" name="arquivo" class="input-file" type="file">
     <span class="help-block">2MB por mensagem</span>
 </div>
 </div> 
 
 <!-- Campo: Mensagem -->
 <div class="form-group">
   <label class="col-md-4 control-label" for="mensagem">Mensagem</label>
 <div class="col-md-4">                     
   <textarea class="form-control" id="mensagem" name="mensagem"></textarea>
 </div>
 </div>
 
 <!-- Botão Enviar -->
 <center>
 <div class="form-group">
   <label class="col-md-4 control-label" for="submit"></label>
 <div class="col-md-4">
   <button type="submit" class="btn btn-inverse">Enviar</button>
 </div>
 </div>
 
   </fieldset>
 </form>
 
 </div>
  </body>
</html>

arquivo php:

 

<!-- Layout -->
 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
 
<?php
 
/* Valores recebidos do formulário  */
$arquivo = $_FILES['arquivo'];
$nome = $_POST['nome'];
$replyto = $_POST['replyto']; // Email que será respondido
$mensagem_form = $_POST['mensagem'];
$assunto = $_POST['assunto'];
 
/* Destinatário e remetente - EDITAR SOMENTE ESTE BLOCO DO CÓDIGO */
$to = "meuemail@meudominio.com.br";
$remetente = "meuemail@meudominio.com.br"; // Deve ser um email válido do domínio
 
/* Cabeçalho da mensagem  */
$boundary = "XYZ-" . date("dmYis") . "-ZYX";
$headers = "MIME-Version: 1.0\n";
$headers.= "From: $remetente\n";
$headers.= "Reply-To: $replyto\n";
$headers.= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";  
$headers.= "$boundary\n"; 
 
/* Layout da mensagem  */
$corpo_mensagem = " 
<br>Formulário via site
<br>--------------------------------------------<br>
<br><strong>Nome:</strong> $nome
<br><strong>Email:</strong> $replyto
<br><strong>Assunto:</strong> $assunto
<br><strong>Mensagem:</strong> $mensagem_form
<br><br>--------------------------------------------
";
 
/* Função que codifica o anexo para poder ser enviado na mensagem  */
if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){
 
    $fp = fopen($_FILES["arquivo"]["tmp_name"],"rb"); // Abri o arquivo enviado.
 $anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"])); // Le o arquivo aberto na linha anterior
 $anexo = base64_encode($anexo); // Codifica os dados com MIME para o e-mail 
 fclose($fp); // Fecha o arquivo aberto anteriormente
    $anexo = chunk_split($anexo); // Divide a variável do arquivo em pequenos pedaços para poder enviar
    $mensagem = "--$boundary\n"; // Nas linhas abaixo possuem os parâmetros de formatação e codificação, juntamente com a inclusão do arquivo anexado no corpo da mensagem
    $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
    $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";
    $mensagem.= "$corpo_mensagem\n"; 
    $mensagem.= "--$boundary\n"; 
    $mensagem.= "Content-Type: ".$arquivo["type"]."\n";  
    $mensagem.= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";  
    $mensagem.= "Content-Transfer-Encoding: base64\n\n";  
    $mensagem.= "$anexo\n";  
    $mensagem.= "--$boundary--\r\n"; 
}
 else // Caso não tenha anexo
 {
 $mensagem = "--$boundary\n"; 
 $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
 $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";
 $mensagem.= "$corpo_mensagem\n";
}
 
/* Função que envia a mensagem  */
if(mail($to, $assunto, $mensagem, $headers))
{
 echo "<br><br><center><b><font color='green'>Mensagem enviada com sucesso!";
} 
 else
 {
 echo "<br><br><center><b><font color='red'>Ocorreu um erro ao enviar a mensagem!";
}
?>

 

Postado

@Bruna Siqueira Se você quer só anexar um único arquivo pdf, você pode modifica um pouco o php para colocar o arquivo.

 

Eu fiz essa modificação, deve funcionar para um único arquivo pdf:

<?php

/* Valores recebidos do formulário  */
$arquivo = "Local e o nome do arquivo"; // Local do arquivo que vai ser anexado
$nome = $_POST['nome'];
$replyto = $_POST['replyto']; // Email que será respondido
$mensagem_form = $_POST['mensagem'];
$assunto = $_POST['assunto'];
 
/* Destinatário e remetente - EDITAR SOMENTE ESTE BLOCO DO CÓDIGO */
$to = "meuemail@meudominio.com.br";
$remetente = "meuemail@meudominio.com.br"; // Deve ser um email válido do domínio
 
/* Cabeçalho da mensagem  */
$boundary = "XYZ-" . date("dmYis") . "-ZYX";
$headers = "MIME-Version: 1.0\n";
$headers.= "From: $remetente\n";
$headers.= "Reply-To: $replyto\n";
$headers.= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";  
$headers.= "$boundary\n"; 
 
/* Layout da mensagem  */
$corpo_mensagem = " 
<br>Formulário via site
<br>--------------------------------------------<br>
<br><strong>Nome:</strong> $nome
<br><strong>Email:</strong> $replyto
<br><strong>Assunto:</strong> $assunto
<br><strong>Mensagem:</strong> $mensagem_form
<br><br>--------------------------------------------
";
 
/* Função que codifica o anexo para poder ser enviado na mensagem  */
if(file_exists($arquivo) and !empty($arquivo))
{
    $fp = fopen($arquivo, "rb"); // Abri o arquivo enviado.
    $anexo = fread($fp,filesize($arquivo)); // Le o arquivo aberto na linha anterior
    $anexo = base64_encode($anexo); // Codifica os dados com MIME para o e-mail 
    fclose($fp); // Fecha o arquivo aberto anteriormente
    $anexo = chunk_split($anexo); // Divide a variável do arquivo em pequenos pedaços para poder enviar
    $mensagem = "--$boundary\n"; // Nas linhas abaixo possuem os parâmetros de formatação e codificação, juntamente com a inclusão do arquivo anexado no corpo da mensagem
    $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
    $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";
    $mensagem.= "$corpo_mensagem\n"; 
    $mensagem.= "--$boundary\n"; 
    $mensagem.= "Content-Type: application/pdf\n";  
    $mensagem.= "Content-Disposition: attachment; filename=\"".basename($path,".pdf")."\"\n";  
    $mensagem.= "Content-Transfer-Encoding: base64\n\n";  
    $mensagem.= "$anexo\n";  
    $mensagem.= "--$boundary--\r\n"; 
}
else // Caso não tenha anexo
{
    $mensagem = "--$boundary\n"; 
    $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
    $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";
    $mensagem.= "$corpo_mensagem\n";
}
 
/* Função que envia a mensagem  */
if(mail($to, $assunto, $mensagem, $headers))
{
    echo "<br><br><center><b><font color='green'>Mensagem enviada com sucesso!";
} 
else
{
    echo "<br><br><center><b><font color='red'>Ocorreu um erro ao enviar a mensagem!";
}

 

Postado

@GabrielSennaMs Oi!

Talvez eu esteja colocando o nome do arquvio em lugar errado, porque ja tentei fazer funcionar de varias formas e não foi

 

Linha4

$arquivo = "COLOQUEI NOME E ENDEREÇO DO ARQUIVO AQUI"; // Local do arquivo que vai ser anexado

 

Linha36

 $fp = fopen($arquivo, "COLOQUEI NOME E ENDEREÇO DO ARQUIVO AQUI"); // Abri o arquivo enviado.

 

Linha47

$mensagem.= "Content-Disposition: attachment; filename=\"".basename($path,"COLOQUEI NOME DO ARQUIVO AQUI")."\"\n";  

 

  • Moderador
Postado

@Bruna Siqueira Seria o arquivo salvo no servidor.

 

Basta mandar o arquivo que você quer para dentro do servidor com algum programa FTP. Daí, você não precisa que o usuário faça o upload pelo formulário, pois o arquivo já vai estar no disco do servidor. :thumbsup:

Postado

@Bruna Siqueira 

 

A URL é o endereço de um recurso disponível em uma rede, seja a rede internet ou intranet. Quando eu falo arquivo em disco eu estou falando do endereço em disco do arquivo e não o endereço de rede dele. o php só pode trabalhar com o arquivo se ele estiver o seu endereço em disco. 

 

 

Postado

@DiF Ah ok, ele está no servidor, já tentei usar ao invés de enviar o arquivo junto, mandar link para baixar, mas eles reclamam que pelo cel não conseguem baixar o arquivo, tem alguma forma que force o inicio do download quando clicado no botão?

  • Moderador
Postado

@Bruna Siqueira Sim,  usa estes headers no seu php( arquivo onde está o envio do e-mail

 

header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="filename"');

Desta forma, você força o navegador a fazer o download. seja em qualquer dispositivo.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!