anerao 2 Denunciar post Postado Novembro 19, 2014 Olá :) Eu tenho um formulário para enviar emails com anexados com PHP e funciona perfeitamente, porém, eu gostaria de remover o campo input file para que pegasse automaticamente um arquivo .doc que fica em uma pasta da minha hospedagem e enviasse esse arquivo como anexo. Isso é possível? Procurei bastante mas não encontrei nada que me ajudasse. Obrigado :) Compartilhar este post Link para o post Compartilhar em outros sites
Diogo Libana 10 Denunciar post Postado Novembro 19, 2014 Olá Anerao. Como você não postou seu código fica meio complicado ajudar, mas seguem algumas considerações: Você deve estar utilizando algo assim para receber o arquivo: if (isset($_FILES['arquivo']) && $_FILES['arquivo']['error'] == UPLOAD_ERR_OK){ $ANEXO_NOME = $_FILES['arquivo']['tmp_name']; $ANEXO_PATH = $_FILES['arquivo']['name']; } E enviando asssim: sendMail($_POST['email'], $_POST['nome'], $ANEXO_NOME, $ANEXO_PATH); Ou algo próximo à isso... Bem, se você está usando isso fica fácil, pode remover o input file e atribuir diretamente seu arquivo, dessa maneira: $ANEXO_NOME = "nome_do_arquivo.xls"; $ANEXO_PATH = $_SERVER['DOCUMENT_ROOT'] . "/seu_sub_diretorio/nome_do_arquivo.xls"; //e enviar: sendMail("seuemail@seudominio.com.br", "Mensagem Automatica", $ANEXO_PATH, $ANEXO_NOME); Veja bem, você pode precisar alterar o "$ANEXO_PATH" o diretório, pode ser que $_SERVER['DOCUMENT_ROOT'] não se aplique no seu caso. De qualquer modo, eu uso assim para anexar o arquivo que eu quiser automaticamente. ;) Compartilhar este post Link para o post Compartilhar em outros sites
anerao 2 Denunciar post Postado Novembro 19, 2014 Oi Diogo Libana :) As informações que você me passou foram suficientes para me ajudar e resolveu o meu problema. Muito obrigado :D Vou deixar aqui o código, mas antes é necessário um pouco de atenção as seguintes notas: 1 - O arquivo enviado tem o nome salvo no banco de dados e foi enviado anteriormente, em outra página. 2 - Nessa página de enviar arquivos não há filtro para o arquivo anexado, pois o mesmo foi filtrado nos formatos permitidos e tamanho ao ser enviado para o meu servidor (e o nome passado para o campo desejado no meu banco) 3 - O código que vou deixar é de fácil customização. No momento ele conecta no banco de dados, faz um select para pegar o nome do arquivo no banco de dados e envia o e-mail com o anexo ao clicar no botão enviar. <?php session_start(); //Faz conexão com o banco de dados include("conexao.php"); //Faz o select para pegar o nome do arquivo $pega_dados = mysql_query("select * from nome_tabela where campo_id = '". mysql_real_escape_string($_SESSION['campo_id']) ."'"); $linha_dados = mysql_fetch_array($pega_dados); $ANEXO_NOME = $linha_dados['nome_arquivo']; $ANEXO_PATH = $_SERVER['DOCUMENT_ROOT'] . "/pasta_arquivos/". $linha_dados['nome_arquivo']; //Caso clicar no botão enviar, executa... if(isset($_POST['enviar_email'])) { //Algumas informações do e-mail $Nome = "Meu Nome"; $Email = "email@email.com"; //Dados do Email a ser enviado $Para = "mail@mail.com"; $Assunto = "Assunto"; //Recebe o anexo $Arquivo = isset($ANEXO_PATH) ? $ANEXO_PATH : FALSE; //Armazena o arquivo anexo para envio $fp = fopen($ANEXO_PATH,"rb"); $Anexo = fread($fp,filesize($ANEXO_PATH)); $Anexo = base64_encode($Anexo); fclose($fp); $Anexo = chunk_split($Anexo); //Monta e-mail para envio com anexo $boundary = "XYZ-" . date("dmYis") . "-ZYX"; $Corpo = "--$boundary\n"; $Corpo .= "Content-Transfer-Encoding: 8bits\n"; $Corpo .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain $Corpo .= "$mensagem\n"; $Corpo .= "--$boundary\n"; $Corpo .= "Content-Disposition: attachment; filename=\"".$ANEXO_NOME."\"\n"; $Corpo .= "Content-Transfer-Encoding: base64\n\n"; $Corpo .= "$Anexo\n"; $Corpo .= "--$boundary--\r\n"; //Cabeçalho $Headers = "MIME-Version: 1.0\n"; $Headers .= "From: \"$Nome\" <$Email>\r\n"; $Headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n"; $Headers .= "$boundary\n"; //envio o email com o anexo mail($Para,$Assunto,$Corpo,$Headers); } ?> <html><head><title></title> </head> <body> <form method="post" action="teste.php" enctype="multipart/form-data"> <input type="submit" name="enviar_email" value="Enviar" /> </form> Espero que isso possa ajudar alguém um dia :) Compartilhar este post Link para o post Compartilhar em outros sites
Diogo Libana 10 Denunciar post Postado Novembro 19, 2014 Bacana que foi resolvido Anerao! :) Bom que você postou seu código, isso deixa a resposta mais completa para o caso de alguém precisar. Compartilhar este post Link para o post Compartilhar em outros sites