Comunidad de diseño web y desarrollo en internet online

enviar archivo adjunto en correo con php

Citar            
MensajeEscrito el 16 Nov 2011 03:20 pm
Hola en la web he encontrado una gran cantidad de articulos sobre el tema, el problema es que no entiendo mucho de php, y los codigos que copiaba no funcionaban, ahora mi problema es este. encontre por fin un codigo que si funciona, pero envia multiples archivos adjuntos, me podrian ayudar a modificar el codigo para que solo se pueda enviar 1 archivo adjunto.

Notas: Este escript que encontre trabaja con jquery.MultiFile.pack.js, ya modifique las variables para envio del archivo pero no parece funcionar. el codigo es este, a si quieren los archivos con gusto se los paso.
[code]
<?php
/*
Contactenos V4 - 26/06/2011
este formulario utiliza la clase PHPMailer para el envio y proceso.
Es solo un ejemplo de una posible implementacion de PHPMailer
La clase se puede descargar desde http://phpmailer.sourceforge.net/
Junto con mas ejemplos y documentacion.

Para preguntas y soporte sobre este formulario se pueden utilizar los comentarios.
También se pueden hacer consultas via Twitter: @alfonsocatron
*/

/*
NOTA:
este archivo debe estar acompañado de una carpeta
con el nombre "archivos" en donde se copiaran los
archivos. Esta carpeta debe tener chmod 777.
*/
//CONFIGURACION

$direccion_envio= '[email protected]';
//la direccion a la que se enviara el email.

$url= 'http://www.ocarestaurante.com/progreso';
//la URL donde esta publicado el formulario. SIN la barra al final

$cantidad_archivos= 1;
$flag="";
//la cantidad máxima de archivos que se permitirá enviar.
?>

<?PHP
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])){
// vamos a hacer uso de la clase phpmailer,
require("inc/class.phpmailer.php");

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer
$mail->From = $_POST['email'];
$mail->FromName = $_POST['nombre'];
$mail->AddAddress($direccion_envio);
$mail->Subject = "Contacto desde el Formulario";
$mail->AddReplyTo($_POST['email'],$_POST['nombre']);
$mail->IsHTML(true);
$comentario=$_POST['comentario'];


//comprobamos si se adjuntaron archivos, los cargamos en el servidor y los pasamos como adjuntos del email
if (isset($_FILES['archivo']['tmp_name'])) {
$achivos_adjuntos='';
$i=0;
do {
if($_FILES['archivo']['tmp_name'][$i] !="")
{
$aleatorio = rand();
$nuevonombre = $aleatorio.'-'.$_FILES['archivo']['name'][$i];
copy($_FILES['archivo']['tmp_name'][$i],'archivos/'.$nuevonombre);
$achivos_adjuntos .= '<br /><a href="'.$url.'/archivos/'.$nuevonombre.'">'.$nuevonombre.'</a></strong>';
$mail->AddAttachment($_FILES['archivo']['tmp_name'][$i], $nuevonombre);
}
$i++;
} while ($i < $cantidad_archivos);

}

//comprobamos si todos los campos fueron completados
if ($_POST['email']=='correo' || $_POST['nombre']=='nombre' || $_POST['comentario']=='mensaje') {
$flag="llenar";
} else{
if((strpos($_POST['email'],"@")!="")&&(strpos($_POST['email'],".com")!="")){//correo correcto
$email=$_POST['email'];
$nombre=$_POST['nombre'];
$comentario=$_POST['comentario'];

//armamos el html
$contenido = '<html><body>';
$contenido .= '<h2>Solicitud de empleo OCA</h2>';
$contenido .= '<hr />';
$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong></p>';
$contenido .= '<p>Email: <strong>'.$email.'</strong></p>';
$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong></p>';
$contenido .= '<hr />';
$contenido .= '<p>Archivos Adjuntos: '.$achivos_adjuntos.'</p>';
$contenido .= '<hr />';
$contenido .= '</body></html>';

$mail->Body = $contenido;
if($mail->Send()){
$flag='enviado';//colocar div con respuesta.
}else{
$flag='error';//colocar div con respuesta.
}
}else{
$flag='nocorreo';
}
}

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Contacto</title>
<link href="css/contactenos.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script src="js/jquery.form.js" type="text/javascript" language="javascript"></script>
<script src="js/jquery.MultiFile.pack.js" type="text/javascript" language="javascript"></script>
<script type="text/javascript" language="javascript">
function cambia(elemento){
$('input:eq('+(elemento)+')').css('background-color','#fff');
if( $('input:eq('+elemento+')').attr('value')=="nombre" || $('input:eq('+elemento+')').attr('value')=="correo"){
$('input:eq('+elemento+')').attr('value','');
}
if(elemento>10){
$('textarea:eq('+(elemento-11)+')').css('background-color','#fff');
if($('textarea:eq('+(elemento-11)+')').attr('value')=='mensaje'){
$('textarea:eq('+(elemento-11)+')').attr('value','')
}
}
}
function regresa(elemento){
$('input:eq('+(elemento)+')').css('background-color','transparent');
if($('input:eq('+elemento+')').attr('value')==""){
if(elemento==0){$('input:eq('+elemento+')').attr('value','nombre');}
if(elemento==1){$('input:eq('+elemento+')').attr('value','correo');}
}
if(elemento>10){
$('textarea:eq('+(elemento-11)+')').css('background-color','transparent');
if($('textarea:eq('+(elemento-11)+')').attr('value')==""){
$('textarea:eq('+(elemento-11)+')').attr('value','mensaje')
}
}
}
function aparece(){
$('.respuesta').css('display','block');
setTimeout("$('.respuesta').css('display','none')",2500);
}
$(document).ready(function(){
$(".boton").mouseenter(function(){
$(".bot_form").fadeTo(300,0);
$(".bot_form").clearQueue();
});
$(".boton").mouseout(function(){
$(".bot_form").fadeTo(300,1);
$(".bot_form").clearQueue();
});
});
</script>
</head>
<body>


<form action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data" id="elform">
<div class="caja"></div>
<input type="text" name="nombre" onfocus="cambia(0)" onblur="regresa(0)" value="nombre" />
<div class="caja"></div>
<input type="text" name="email" onfocus="cambia(1)" onblur="regresa(1)" value="correo" /></p>
<div class="caja2">
<textarea name="comentario" onfocus="cambia(11)" onblur="regresa(11)">mensaje</textarea></p>
</div>
<div class="cv">
mándanos tu CV actualizado<br />
en .doc / .pdf
</div><!-- cv -->
<input type="file" class="multi max-<?=$cantidad_archivos?>" name="archivo[]" value="<?=$_FILES['archivos']?>" id="archi">

<input class="boton" type="submit" name="enviar" value="enviar" />
<!--<input class="boton" type=image src="http://www.ocarestaurante.com/progreso/wp-content/themes/oca/images/enviar.png" name="enviar" value="enviar" />-->
<div class="bot_form2"></div>
<div class="bot_form"></div>
</form>
<?php if($flag==""){?>
<div class="respuesta" style="background-image:none;"></div>
<?php }elseif($flag=="llenar"){?>
<div class="respuesta" style="background-image:url('http://www.ocarestaurante.com/progreso/wp-content/themes/oca/images/llenar.png')"></div>
<?php }elseif($flag=="enviado"){?>
<div class="respuesta" style="background-image:url('http://www.ocarestaurante.com/progreso/wp-content/themes/oca/images/enviado.png')"></div>
<?php }elseif($flag=="error"){?>
<div class="respuesta" style="background-image:url('http://www.ocarestaurante.com/progreso/wp-content/themes/oca/images/error.png')"></div>
<?php }elseif($flag=="nocorreo"){?>
<div class="respuesta" style="background-image:url('http://www.ocarestaurante.com/progreso/wp-content/themes/oca/images/invalido.png')"></div>
<?php }?>
<script type="text/javascript">
aparece();
</script>
</body>
</html>
[code]

Como modificarlo para enviar solo un archivo??

Por rod00x3

Claber

595 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 16 Nov 2011 09:52 pm
De partida, en el html debes recibir solo un input file ( que el name no corresponda a un arreglo),
por ende esta linea if($_FILES['archivo']['tmp_name'][$i] !=""), será distinta ya que no necesitas un $i, y al final adjuntaras un solo archivo
saludos

Por sebifrost

61 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Nov 2011 11:37 pm
ok, gracias por tu respuesta. de echo solo le quite y quite codigo a lo loco y me funciono, quite el copy, el class en el input type file, y listooo, pero gracias por el consejo, ahora se que nesecito estudar mas php

Por rod00x3

Claber

595 de clabLevel



Genero:Masculino  

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.