Ir para conteúdo
Fórum Script Brasil
  • 0

Envio de email com mais de um anexo


Halan Batista

Pergunta

Olá...

Eu estou com um problema no envio de e-mail com mais de um anexo...

Seguinte, eu to desenvolvendo um sistema que envia anexo junto com o formulario, só que o cliente pode anexar mais que um arquivo, ele pode anexar ate tres arquivos... Só que está dando erro...

Segue o código que estou utilizando... Espero que possam me dar uma luz... Ou me passar algum tutorial ou tópico que fale sobre isso...

Codigo:

index.php

-------------

<html>

<head>

<script language="javascript" type="text/javascript">

function checa_formulario(email){

if (email.nome.value == ""){

alert("Por Favor não deixe o seu nome em branco!!!");

email.nome.focus();

return (false);

}

if (email.email_from.value == ""){

alert("Por Favor não deixe o seu email em branco!!!");

email.email_from.focus();

return (false);

}

if (email.email.value == ""){

alert("não deixe o email destinatario em branco!!!");

email.email.focus();

return (false);

}

if (email.assunto.value == ""){

alert("não deixe o assunto em branco!!!");

email.assunto.focus();

return (false);

}

}

</script>

<title>Enviando texto</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css">

<!--

.email {

text-transform: lowercase;

}

.texto {

color: #0000FF

}

.style1 {color: #FF0000}

-->

</style>

</head>

<body onLoad="document.email.nome.focus();">

<form onsubmit="return checa_formulario(this)" action="envia.php" method="post" enctype="multipart/form-data" name="email">

<h1 align="center" class="style1">Formulario de email com anexo </h1>

<table width="32%" border="0" align="center">

<!--DWLayoutTable-->

<tr>

<td width="66"><div align="right"><span class="texto">Nome</span></div></td>

<td width="335"><input name="nome" type="text" id="nome"></td>

</tr>

<tr>

<td><div align="right" class="texto">De:</div></td>

<td><input name="email_from" type="text" class="email"></td>

</tr>

<tr>

<td><div align="right" class="texto">Para</div></td>

<td><input name="email" type="text" class="email">

</tr>

<tr>

<td><div align="right" class="texto">Assunto</div></td>

<td><input name="assunto" type="text" id="assunto"></td>

</tr>

<tr>

<td><div align="right" class="texto">Mensagem</div></td>

<td><textarea name="mensagem" cols="50" rows="10" id="mensagem"></textarea></td>

</tr>

<tr>

<td><div align="right" class="texto">Anexo 1</div></td> // ANEXO 1

<td><input name="arquivo[]" type=file" id="arquivo"></td>

</tr>

<tr>

<td><div align="right" class="texto">Anexo 2</div></td> // ANEXO 2

<td><input name="arquivo[]" type="file" id="arquivo"></td>

</tr>

<tr>

<td><div align="right" class="texto">Anexo 3</div></td> // ANEXO 3

<td><input name="arquivo[]" type="file" id="arquivo"></td>

</tr>

<tr>

<td height="26"> </td>

<td valign="top"><!--DWLayoutEmptyCell-->&nbsp; </td>

</tr>

<tr>

<td height="26"></td>

<td>&nbsp;</td>

</tr>

<tr>

<td height="26"></td>

<td valign="top"><input type="submit" name="Submit" value="Enviar">

</td>

</tr>

<tr>

<td height="0"></td>

<td></td>

</tr>

</table>

</form>

</body>

</html>

---------------------------

envia.php

---------------------------

<?php

//pego os dados enviados pelo formulario

$nome = $_POST["nome];

$email = $_POST["email"];

$mensagem = $_POST["mensagem"];

$assunto = $_POST["assunto"];

$email_from = $_POST["email_from"];

//formato o campo da mensagem

$mensagem = wordwrap( $mensagem, 50, "<br>", 1);

//valido os emails

if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email)){

echo"<center>Digite um email valido</center>";

echo "<center><a href=\"java script:history.go(-1)\">Voltar</center></a>";

exit;

}

if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email_from)){

echo "<center>Digite um email valido</center>";

echo "<center><a href=\"java script:history.go(-1)\"><center>Voltar</center></a>";

exit;

}

$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;

if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){

$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);

$boundary = "XYZ-" . date("dmYis") . "-ZYX";

$mens = "--$boundary\n";

$mens .= "Content-Transfer-Encoding: 8bits\n";

$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain

$mens .= "$mensagem\n";

$mens .= "--$boundary\n";

$mens .= "Content-Type: ".$arquivo["type"]."\n";

$mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";

$mens .= "Content-Transfer-Encoding: base64\n\n";

$mens .= "$anexo\n";

$mens .= "--$boundary--\r\n";

include_once('/home/fotovieira/ultramail/ultramail.php');

$headers = "MIME-Version: 1.0\n";

$headers .= "From: \"$nome\" <$email_from>\r\n";

$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";

$headers .= "$boundary\n";

//envio o email com o anexo

UltraMail($email,$assunto,$mens,$headers);

echo"Email enviado com Sucesso!";

}

//se não tiver anexo

else{

include_once('/home/fotovieira/ultramail/ultramail.php');

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: \"$nome\" <$email_from>\r\n";

//envia o email sem anexo

Ultramail($email,$assunto,$mensagem, $headers);

echo"Email enviado com Sucesso!";

}

?>

---------------------

Ai está o codigo... Porque não é enviado os tres arquivos?

Grato.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Oi serra...

Como eu acho esse manual?

Também não consegui fazer uma função para enviar mais de um arquivo...

Mesmo lendo o código, não entendi como o PHP identifica mais de um anexo, sendo que, ele só lê uma variavél do tipo FILE em $_FILES["arquivo"]

Pode nos ajudar?

Agradeço muito pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Exemplos -> http://phpmailer.codeworxtech.com/index.php?pg=examples

Métodos -> http://phpmailer.codeworxtech.com/index.php?pg=methods

Levando em conta que o array funciona:

$_FILES["NOME DO CAMPO"]

Basta colocar dois campos com nomes diferentes no files e pronto... aqui tem um tutorial sobre isso.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...