Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DinhoPHP

Enviar vários anexos PHP (com o <input type="file"

Recommended Posts

Tenho um formulário que utiliza este campo: <input name="arquivo" type="file" accept="image/*" multiple> que seleciona vários arquivos e envia sem a necessidade de haver mais caampos. Gostaria que através dele eu pudesse enviar mais.

 

 

<?php

// recebe as Variaveis
$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
include("class.phpmailer.php");
require("class.smtp.php");

// Inicia a classe PHPMailer
$mail = new PHPMailer();

// Define os dados do servidor e tipo de conexão
$mail->IsSMTP();
$mail->Host = "br152.hostgator.com.br"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->Username = 'edsoncarlos@equipenovainfo.com.br'; // Usuário do servidor SMTP
$mail->Password = '****'; // Senha do servidor SMTP

// Define o remetente.
$mail->From = "edsoncarlos@equipenovainfo.com.br"; // Seu e-mail
$mail->FromName = "Administrador"; // Seu nome

// Define os destinatário(s)
$mail->AddAddress($email, $nome);
$mail->AddCC('edsoncarlos@equipenovainfo.com.br', 'Eu'); // Copia
//$mail->AddBCC('fulano@dominio.com.br', 'Fulano da Silva'); // Cópia Oculta

// Define os dados técnicos da Mensagem
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML

// Define a mensagem (Texto e Assunto)
$mail->Subject = "Mensagem do site"; // Assunto da mensagem
$mail->Body = $mensagem;

// Envia o e-mail
$enviado = $mail->Send();

// Exibe uma mensagem de resultado
if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail !";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só chamar o método AddAttachment() para cada arquivo enviado

 

Este links devem lhe ser úteis:

 

http://forum.imasters.com.br/topic/266539-upload-multiplo/

http://rberaldo.com.br/enviando-e-mails-com-a-classe-phpmailer/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Beraldo! Li os artigos e vi o funcionamento acredito que seja necessário fazer um loop, para não adicionar mais botões do tipo file. Mas já fico feliz pelo post.

 

 

// Anexando

$mail->AddAttachment($arquivo['tmp_name'], $arquivo['name']);

 

Não deu certo. :(

 

 

Não tive sucesso com isso: (

 

// Para facilitar, atribuimos a $arquivo o valor $_FILES['arquivo']

// sobre o operador ternário: http://www.php.net/manual/pt_BR/language.operators.comparison.php

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

 

// no count(), tanto faz colocar $arquivo['name'], $arquivo['size']

// ou outro índice gerado, pois todos têm o mesmo número de chaves.

 

for ($i = 0; $i > count($arquivo['name']); $i++)

{

if (move_uploaded_file($arquivo['tmp_name'][$i], $dir . $arquivo['name'][$i]))

{

echo "<p><strong>Enviado: </strong> " . $arquivo['name'][$i] . " | " . round($arquivo['size'][$i] / 1024, 2) . " kB | " . $arquivo['type'][$i] . "</p>";

}

else

{

echo "<p><strong>Não enviado: </strong> " . $arquivo['name'][$i] . " | " . round($arquivo['size'][$i] / 1024, 2) . " kB | " . $arquivo['type'][$i] . "</p>";

}

}

 

$mail->AddAttachment($arquivo['tmp_name'], $arquivo['name']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

// recebe as Variaveis
$nome = "Edson Carlos";
$email = "edsoncarlos@equipenovainfo.com.br";
$mensagem = "mensagem";

//INFO IMAGEM
$arquivo = $_FILES['arquivo'];
$anexos = count($arquivo);
$arquivo_nome = $arquivo['name'];
$arquivo_caminho = $arquivo['tmp_name'];

//$arquivos = count($arquivo['name']);

//PASTA
$folder = 'uploads/';
for ($i = 0; $i < $anexos; $i++) {
move_uploaded_file($anexos[$i], $folder . $anexos['name'][$i]);
}

// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
include("class.phpmailer.php");
require("class.smtp.php");

// Inicia a classe PHPMailer
$mail = new PHPMailer();

// Define os dados do servidor e tipo de conexão
$mail->IsSMTP();
$mail->Host = "br152.hostgator.com.br"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->Username = 'contato@equipenovainfo.com.br'; // Usuário do servidor SMTP
$mail->Password = '*****'; // Senha do servidor SMTP
$mail->Port = '25';

// Define o remetente.
$mail->From = "edsoncarlos@equipenovainfo.com.br"; // Seu e-mail
$mail->FromName = "Administrador"; // Seu nome

// Define os destinatário(s)
$mail->AddAddress($email, $nome);
$mail->AddCC('edsoncarlos@equipenovainfo.com.br', 'Eu'); // Copia
//$mail->AddBCC('fulano@dominio.com.br', 'Fulano da Silva'); // Cópia Oculta

// Define os dados técnicos da Mensagem
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML

// Define a mensagem (Texto e Assunto)
$mail->Subject = "Mensagem do site"; // Assunto da mensagem
$mail->Body = $mensagem;

// Anexando
for($i = 0; $i < $anexos; $i++) {
$mail->AddAttachment($arquivo_caminho[$i], $folder . $arquivo_nome[$i]);
}
// Envia o e-mail
$enviado = $mail->Send();

// Exibe uma mensagem de resultado
if ($enviado) {
echo "E-mail enviado com sucesso!";

} else {
echo "Não foi possível enviar o e-mail !";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui enviar mais de um anexo com esse código, mas ele está dando um erro de Undefined offset

Diz que o erro é nesse for.

for($i = 0; $i < $anexos; $i++) {
$Email->AddAttachment($arquivo_caminho[$i], $folder . $arquivo_nome[$i]);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

laerciolsl, conforme as Regras e Orientações do fórum de PHP, crie seu próprio tópico para o caso.

Entretanto, nas mesmas regras e orientações, existe a lista dos erros mais comuns em PHP. Seu erro está listado nela (é o mesmo que Undefined Index).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.