La solución fue enviarlo por el localhost de esta manera
Código PHP:
Ver original<?php
include ('conexion.php');
//Recibimos las variables
$codigo = $_POST['codigo'];
$email = $_POST['email'];
$libro = $_POST['libro'];
//Desechamos el código
$update = "UPDATE primer_ttiraje SET activo = '1' WHERE codigo ='$codigo'";
$update2 = "UPDATE primer_ttiraje SET libro = '$libro' WHERE codigo ='$codigo' ";
//Enviamos el libro por correo:
if ($libro =='1') {
// primero hay que incluir la clase phpmailer para poder instanciar
//un objeto de la misma
require "PHPMailer/class.phpmailer.php";
//Crear una instancia de PHPMailer
$mail = new PHPMailer();
//Definir que vamos a usar SMTP
//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->FromName = "The Matrix Thinking";
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
$mail->Subject = "Libro Piensa en lo Nuevo";
$mail->Body = "<b>Acabas de recibir el libro Piensa en lo Nuevo en formato pdf, descargalo y disfruta tu lectura.</b>";
//Definimos AltBody por si el destinatario del correo no admite
//email con formato html
$mail->AltBody ="Mensaje de prueba mandado con phpmailer en formato texto";
//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
$mail->AddAttachment('http://www.ricardolopezvega.com/matrix/beta2/zte45m8Ih/Piensa_en_Lo_Nuevo/libro.pdf');
//Indicamos cuales son las direcciones de destino del correo y enviamos
//los mensajes
//reset($direcciones);
//while (list($clave, $valor)=each($direcciones)) {
$mail->AddAddress($email);
//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")){
//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 ".$valor;
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.=$valor." ";
if ($archivo !="none") {
$mensaje.="Con un fichero adjunto llamado ".$archivo_name;
}
$mensaje.="</p>";
echo $mensaje;
}
// Borro las direcciones de destino establecidas anteriormente
$mail->ClearAddresses();
echo "<a href='$PHP_SELF'> VOLVER AL FORMULARIO</a>";
}
?>