Tengo un problemilla a la hora de adjuntar un archivo en un formulario y enviar todos los datos y el archivo adjunto por email.
Los datos me llegan perfectamente excepto el archivo adjunto.
Os adjunto mi código para que le echéis un ojo, y si alguien me puede ayudar con el tema del archivo adjunto. Os lo documento :
Código PHP:
//Es necesario que al menos halla una dirección de destino
$error="";
//aquí tendré que hacer la consulta para sacar el email del usuario para enviarle el fichero aceites vegetales.xsl
$usuario="[email protected]";
//En vez de dos direcciones pongo directamente la que me interesa
$direcciones="$usuario ";//$usuario
//pasamos a enviar el correo
// primero hay que incluir la clase phpmailer para poder instanciar
//un objeto de la misma
require "includes/class.phpmailer.php";
//instanciamos un objeto de la clase phpmailer al que llamamos
//por ejemplo mail
$mail = new phpmailer();
//Definimos las propiedades y llamamos a los métodos
//correspondientes del objeto mail
//Con PluginDir le indicamos a la clase phpmailer donde se
//encuentra la clase smtp que como he comentado al principio de
//este ejemplo va a estar en el subdirectorio includes
$mail->PluginDir = "includes/";
//Con la propiedad Mailer le indicamos que vamos a usar un
//servidor smtp
$mail->Mailer = "smtp";
//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "mail.aclass.es";
//Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "[email protected]"; //username= [email protected]
$mail->Password = "123456"; //contraseña de mi correo outlook
//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "[email protected]"; //[email protected]
$mail->FromName = "Svenson";
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
$mail->Subject = "Solicitud de Empleo";
$mail->Body = "<b>Estimado señores;</b><br><br> Deseo formar parte Svenson. Les adjunto mis datos personales y mi curriculum. Gustosamente espero vuestras noticias al respecto. Muchas gracias.
Nombre: <b>".$_POST["nombre"]."</b><br>
Apellidos: <b>".$_POST["apellidos"]."</b><br>
Telefono: <b>".$_POST["telf"]."</b><br>
E-mail: <b>".$_POST["email"]."</b><br>
Dirección: <b>".$_POST["direccion"]."</b><br>
Poblacion: <b>".$_POST["poblacion"]."</b><br>
Codigo Postal: <b>".$_POST["cp"]."</b><br>
Provincia: <b>".$_POST["prov"]."</b><br>
Comentarios: <b>".$_POST["comen"]."</b><br>";
//Definimos AltBody por si el destinatario del correo no admite
//email con formato html
$mail->AltBody ="<b>Estimado señores;</b><br><br> Deseo formar parte Svenson. Les adjunto mis datos personales y mi curriculum. Gustosamente espero vuestras noticias al respecto. Muchas gracias.
Nombre: <b>".$_POST["nombre"]."</b><br>
Apellidos: <b>".$_POST["apellidos"]."</b><br>
Telefono: <b>".$_POST["telf"]."</b><br>
E-mail: <b>".$_POST["email"]."</b><br>
Dirección: <b>".$_POST["direccion"]."</b><br>
Poblacion: <b>".$_POST["poblacion"]."</b><br>
Codigo Postal: <b>".$_POST["cp"]."</b><br>
Provincia: <b>".$_POST["provincia"]."</b><br>
Comentarios: <b>".$_POST["comen"]."</b><br>";
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
//una cuenta gratuita y voy a usar attachments, por tanto lo pongo a 120
$mail->Timeout=120;
//Indicamos el fichero a adjuntar si el usuario seleccionó uno en el formulario
$archivo ="".$_POST["curricu"]."";
$archivo_name = "curriculum-".$_POST["nombre"]."";
// if ($achivo !="none") {
$mail-> AddAttachment($archivo,$archivo_name); //ruta absoluta en vez de $archivo=biocarburantescml.es/pruebas/informacion/cuadro.xls ES RECOMENDABLE PONER SIEMPER RUTA RELATIVA
// }
//Indicamos cuales son las direcciones de destino del correo y enviamos
//los mensajes
//reset($direcciones);
//while (list($clave, $valor)=each($direcciones)) {
$mail->AddAddress($direcciones);
//se envia el mensaje, si no ha habido problemas la variable $success
//tendra el valor true
$exito = $mail->Send();
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
//como mucho para intentar enviar el mensaje, cada intento se hara 5 s
//segundos despues del anterior, para ello se usa la funcion sleep
$intentos=1;
while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;
}
//La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
//attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
//valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
$exito=true;
}
if(!$exito)
{
echo "Problemas enviando correo electrónico a ".$direcciones;
echo "<br>".$mail->ErrorInfo;
}
else
{
//Mostramos un mensaje indicando las direccion de
//destino y fichero adjunto enviado en el mensaje
/* $mensaje="<p>Has enviado un mensaje a:<br>";
$mensaje.=$direcciones." ";
if ($archivo !="none") {
$mensaje.="Con un fichero adjunto llamado ".$archivo_name;
}
$mensaje.="</p>";
echo $mensaje;*/
header("Location:form_enviado.php?&id_usuario=$id_usuario&tipo=$tipo");
// Borro las direcciones de destino establecidas anteriormente
$mail->ClearAddresses();
}
Alguna ayudita por ahí porfiss???????????
saludoss!!!