Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite, não se se alguém pode me ajudar em uma probleminha com o envio de e-mail com um anexo utilizando o phpmailer. Estou conseguindo fazer o envio normal, só não consigo bloquear o tamanho do arquivo que a pessoa pode anexar e também bloquear para que só passa enviar imagens bloquear outros tipo de extensões. Meu código que estou utilizando é:
<?php
if(strpos($_SERVER['HTTP_REFERER'],'xxx.com.br')) {
session_start(). // resgatando os dados passados pelo form$assunto = "Supermercados - Trabalhe Conosco". $nome=$_POST["nome"]. $email=$_POST["email"]. $arquivo = $_FILES["arquivo"]. $ip = $_SERVER['REMOTE_ADDR']. //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']. //hidden $tamanho = 512000. $tipos = array('image/jpeg', 'image/pjpeg'). if(empty($nome)){require_once('mailer/class.phpmailer.php'). require_once('mailer/class.smtp.php'). // faço a chamada da classe$Email->Port = 587. $Email->Host = "xxx". $Email->Username = "xxx". $Email->Password = "xxx". <font face='Arial, Helvetica, sans-serif' size='2'>
<h2>Supermercados - Trabalhe Conosco</h2>
<br />
<b>Nome:</b> $nome<br><br>
<b>E-mail:</b> $email<br><br>
<b>Data:</b> $data <br /><br />
<b>Hora:</b> $hora <br /><br />
<b>Ip:</b> $ip<br /><br />
<b>Navegador:</b> $navegador
</font>". //verifica se todos os campos estão preenchidos, se não estiverem, não envia o email $Email->AddAttachment($arquivo['tmp_name'], $arquivo['name']). if(!$Email->Send()) { echo "<h2>A mensagem nao foi enviada. </h2><p><br>". echo "Erro: ". $Email->ErrorInfo. echo " <META HTTP-EQUIV=REFRESH CONTENT='0. URL=xxx'> ". }
}
}?>Opa beleza, obrigado.
E para arquivos .doc e .pdf como faço?
Lista de mime types, use a mesma lógica da função isImage, por exemplo isDoc( $type ) com os tipos que você quer.
Mas ali já bloqueia os outros tipos, se for esta a intenção.
Intendo, com as imagens deu certinho agora quando tendo um arquivo .doc ou docx mesmo colocando a lista de mimes do word não reconhece que é um arquivo .doc.
$tamanho = 512000;
$tipos = array('application/doc', 'appl/text', 'application/vnd.msword', 'application/vnd.ms-word', 'application/winword', 'application/word', 'application/x-msw6', 'application/x-msword','application/doc', 'application/docx');
if(empty($arquivo)){
}elseif(!is_uploaded_file($arquivo['tmp_name'])){
$msg = 'O Arquivo é Obrigatório';
}elseif($arquivo['size'] > $tamanho){
$msg = 'O limite do tamanho do arquivo é de 500KB';
}elseif(!in_array($arquivo['type'], $tipos)){
$msg = 'Os tipos de arquivos permitidos são .doc, .docx, .xlx, .xlsx';
}else{
require('class/class.phpmailer.php');Olá, desculpe entrar no meio do assunto.
Estou mexendo com um formulário parecido, porém estou com dificuldades de configurar a autenticação smtp.
aqui aparece o seguinte erro : Não foi possível enviar o e-mail. Informações do erro: SMTP connect() failed.
O que é necessário editar nos arquivos class.phpmailer.php e class.smtp.php
Wagner, essa parte uma vez eu apanhei também uma vez tb, você deve apenas mexer nas configurações que ficam no script que envia como aquele que postei no topo.
Exemplo:
$Email->IsSMTP(); // set mailer to use SMTP
$Email->SMTPAuth = true; // turn on SMTP authentication
$Email->Port = 587;
$Email->Host = "mail.gmail.com";
$Email->Username = "xxx";
$Email->Password = "xxx";Coloque no array tipos: application/msword
Também de um print na variável $arquivo['type'] para ver o mime type, se não tiver no array então adicione.
Hummm beleza, foi certinho o .doc e o .docx tive que acrescentar "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
Obrigado, abraço.
Opa Mauro?
cara a tempos estou tentando enviar anexos, o meu ficou bem próximo ao seu código mas não vai o anexo.
Você poderia postar a base do formulário principal e o formulário que envia, para comparar com meu código...consigo enviar e-mail mas com anexo não !?!
Não sei se no envio da action do form vc colocou esta tag enctype="multipart/form-data"
para envio de arquivos...
Para ver o tamanho do arquivo: filesize
Para verificar se é uma imagem:
Uso: