Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Galera!
Seguinte, tenho um código em PHP de envio de de formulário para sites em HTML e PHP, o sistema é muito simples, envia nome, e-mail, assunto, cidade, estado, etc...
Só que desta vez preciso que envie com um anexo junto, por exemplo um arquivo .doc .jpg .pptx .png enfim, com vários formatos.
Lembrando que o destinatário recebe tudo isso por e-mail, ou seja, o envio do anexo precisa ir junto para o e-mail e não salvo em alguma pasta do servidor.
Se alguém puder me ajudar ficaria muito grato, abaixo disponibilizo um link para download dos arquivos .php
Não seria possível desta forma, pois não teria disponibilidade de sempre upar o arquivo no servidor.
Entendo as questões de segurança, então segue código:
<?php
$nome = utf8_decode($_POST['nome']);
$nascimento = utf8_decode($_POST['nascimento']);
$cpf = $_POST['cpf'];
$email = utf8_decode($_POST['email']);
$telefone = $_POST['telefone'];
$endereco = utf8_decode($_POST['endereco']);
$cep = $_POST['cep'];
$pais = utf8_decode($_POST['pais']);
$estado = utf8_decode($_POST['estado']);
$cidade = utf8_decode($_POST['cidade']);
$local = utf8_decode('Endereço');
$creditos = utf8_decode('Anexo online, Sistema desenvolvido por ...');
$ip = utf8_decode('IP do Usuário');
if( $nome == true )
{
$enviar = "seuemail@dominio.com.br";
$cliente_ip = $_SERVER['REMOTE_ADDR'];
$conteudo =
"Nome: $nome\r\n" .
"Nascimento: $nascimento\r\n" .
"CPF: $cpf\r\n" .
"E-mail: $email\r\n" .
"Telefone: $telefone\r\n" .
"$local: $endereco\r\n" .
"CEP: $cep\r\n" .
"Estado: $estado\r\n" .
"Cidade: $cidade\n\n" .
"$ip: $cliente_ip" .
"\n$creditos" .
"\n\nVR PHP: PHP/" . phpversion();
if( mail( $enviar, "Anexo online - $nome", $conteudo ) )
{
echo "Seu anexo foi enviado com sucesso!";
}
else
{
echo "success=no";
}
}
?>Olá! Abaixo vou citar alguns links que podem lhe ajudar:
http://www.thiagopaz.com.br/blog/enviar-email-com-anexo-php/
http://wiki.locaweb.com.br/pt-br/Enviando_e-mails_com_anexo_em_PHP
Espero ter Ajudado ;)
Já Havia usado esses Scripts anteriormente, só que nenhum deles é preciso suficiente.
Se alguém tiver outra forma dentro dos scripts que tenho ficaria grato.
Use a classe phpmailer como já citado
Como essa simples função ele já envia o anexo.
if (isset($_FILES["arquivo"]) &&
$_FILES["arquivo"]['error'] == UPLOAD_ERR_OK) {
$mail->AddAttachment($_FILES['$_FILES["arquivo']['tmp_name'],
$_FILES['$_FILES["arquivo']['name']);
}Consegui! Deu certo agora, está enviando com anexo, apenas está dando erros ao enviar os outros campos, como nome, e-mail, assunto, etc, mas nisso eu me viro, agradeço todos por terem me ajudado.
volto a dizer.... a melhor opção seria você usar o phpmailer, é super simples de usar, com poucas linhas de códigos, você envia o email com anexo.
Mais caso não queira usar o phpmailer, segue código para envio com anexo:
OBS: esse exemplo é da wiki da locaweb, mais eu já testei e tá funcionando normal..., ai é só você ajustar de acordo com a sua necessidade.
Index.html
<html>
<head>
<script language="javascript">
function checa_formulario(email){
if (email.nome_para.value == ""){
alert("Por Favor nao deixe o nome em branco!!!");
email.nome.focus();
return (false);
}
if (email.email.value == ""){
alert("Nao deixe o email destinatario em branco!!!");
email.email.focus();
return (false);
}
if (email.assunto.value == ""){
alert("Nao 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">Formulário de email com anexo </h1>
<table width="50%" border="0" align="center">
<tr>
<td><div align="right"><span class="texto">Nome do destinatario:</span></div></td>
<td><input name="nome_para" type="text" id="nome_para"></td>
</tr>
<tr>
<td><div align="right" class="texto">Email de destino</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</div></td>
<td><input name="arquivo" type="file"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html><?php
//Pega os dados postados pelo formulário HTML e os coloca em variaveis
if (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com, $_SERVER[HTTP_HOST])) {
//substitua na linha acima a aprte locaweb.com.br por seu domínio.
$email_from='email@seudominio'; // Substitua essa linha pelo seu e-mail@seudominio
}else {
$email_from = "email@" . $_SERVER[HTTP_HOST];
// Na linha acima estamos forçando que o remetente seja 'webmaster@',
// você pode alterar para que o remetente seja, por exemplo, 'contato@'.
}
if( PATH_SEPARATOR ==';'){ $quebra_linha="\r\n";
} elseif (PATH_SEPARATOR==':'){ $quebra_linha="\n";
} elseif ( PATH_SEPARATOR!=';' and PATH_SEPARATOR!=':' ) {echo ('Esse script não funcionará corretamente neste servidor, a função PATH_SEPARATOR não retornou o parâmetro esperado.');
}
//pego os dados enviados pelo formulário
$nome_para = $_POST["nome_para"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];
$assunto = $_POST["assunto"];//valido os emails
if (!ereg("^([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=\"javascript:history.go(-1)\">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" . $quebra_linha . "";
$mens .= "Content-Transfer-Encoding: 8bits" . $quebra_linha . "";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"" . $quebra_linha . "" . $quebra_linha . ""; //plain
$mens .= "$mensagem" . $quebra_linha . "";
$mens .= "--$boundary" . $quebra_linha . "";
$mens .= "Content-Type: ".$arquivo["type"]."" . $quebra_linha . "";
$mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"" . $quebra_linha . "";
$mens .= "Content-Transfer-Encoding: base64" . $quebra_linha . "" . $quebra_linha . "";
$mens .= "$anexo" . $quebra_linha . "";
$mens .= "--$boundary--" . $quebra_linha . "";
$headers = "MIME-Version: 1.0" . $quebra_linha . "";
$headers .= "From: $email_from " . $quebra_linha . "";
$headers .= "Return-Path: $email_from " . $quebra_linha . "";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"" . $quebra_linha . "";
$headers .= "$boundary" . $quebra_linha . "";
//envio o email com o anexo
mail($email,$assunto,$mens,$headers, "-r".$email_from);
echo"Email enviado com Sucesso!";
}
//se nao tiver anexo
else{
$headers = "MIME-Version: 1.0" . $quebra_linha . "";
$headers .= "Content-type: text/html; charset=iso-8859-1" . $quebra_linha . "";
$headers .= "From: $email_from " . $quebra_linha . "";
$headers .= "Return-Path: $email_from " . $quebra_linha . "";
//envia o email sem anexo
mail($email,$assunto,$mensagem, $headers, "-r".$email_from);
echo"Email enviado com Sucesso!";
}
?>
Cara... não vou baixar teus arquivos por questões de segurança. Melhor postar o código aqui.
Mas assim, a dica que eu dou, caso vc use PHPMailer é:
Ao menos eu faço isso.