Buenos días (madrugada de jueves por aquí),
Estoy utilizando PhpMailer para el envío de correos desde una aplicación en la que vengo trabajando hace un poco de tiempo, pero tengo problemas con el link que incluyo en el correo para la descarga de un archivo. El lío se produce cuando en la ruta de descarga aparecen espacios en blanco, cuando esto ocurre la ruta se corta en la primera palabra que contiene espacio. Como no puedo cambiar la existencia de los espacios en blanco les escribo pidiendo ayuda para salir de este problema.
El envío de correo funciona (uso una cuenta de gmail), sólo que los enlaces no lo hacen.
Mi código:
Este es el formulario html:
Código HTML:
Ver original
<!--
<META content="text/html; charset=windows 1252">
-->
<META content="text/html; charset=UTF-8">
<div style ="width:330px">
<FORM method="POST" action="http://localhost/send-email_IMILA.php" name="form_enviar">
<input type="hidden" name="titulo" value=<?php echo $_GET["titulo"];?>>
<input type="hidden" name="text_msg" value=<?php echo $_GET["text_msg"];?>>
<input type="hidden" name="ruta" value=<?php echo $_GET["ruta"];?>>
<table border="0" cellpadding="6" bgcolor="#EEEEEE" cellspacing="0" width="346"> <tr> <td valign="TOP" align="center" width="308"> <table border="0" width="303" cellspacing="0" cellpadding="2"> <td colspan="2"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"> <img src="/noticias/Images/topemail.gif" width="303" height="48" border=0> </font></td>
<td colspan="2"> </td> <td><font face="Arial, Helvetica, sans-serif" size="2"><b><font color="336699">Nombre
destinatario
</font></b></font></td> <td> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="text_name_destino" size="20" maxlength="50"> <td><font face="Arial, Helvetica, sans-serif" size="2"><b><font color="336699">Email
destinatario
</font></b></font></td> <td> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="text_mail_destino" size="20" maxlength="50"> <hr width="100%" size="1"> <td><font face="Arial, Helvetica, sans-serif" size="2"><b><font color="336699">Su
nombre
</font></b></font></td> <td> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="text_name_origen" size="20" maxlength="50"> <td><font face="Arial, Helvetica, sans-serif" size="2"><b><font color="336699">Su
Email
</font></b></font></td> <td> <font face="Arial, Helvetica, sans-serif" size="2"> <input type="text" name="text_mail_origen" size="20" maxlength="50">
<td align="center" colspan="2"><font face="Arial, Helvetica, sans-serif" size="2"><b><font color="336699">Comentario
</font></b>
<td colspan="2" align="center"> <font face="Arial, Helvetica, sans-serif" size="2">
<td colspan="2" align="center"> <input type="button" name="Submit" value="Enviar" onClick="form_enviar.submit(); ">
Mi php encargado del envío de correo":
Código PHP:
Ver original<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HTML>
<HEAD>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
</HEAD>
<BODY>
<?php
// Aqui controlo que la ruta recibida esté correcta... y lo está!!
print "<pre>";
print "</pre>\n";
require "includes/class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir = "includes/";
$mail->IsSMTP();
$mail->Mailer = "smtp";
//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password
//********** fuera de la oficina ***********
$mail->Password = "xxxxxxx";
$mail->Port = 587;
$mail->SMTPSecure = "tls";
$mail->Charset = 'UTF-8';
// Para indicar que el mensaje tiene HTML
$mail->IsHTML(true);
//Para el que recibe
$mail->SetFrom($_GET['text_mail_origen'], $_GET['text_name_origen']);
$mail->AddReplyTo($_GET['text_mail_origen'], $_GET['text_name_origen']);
$mail->Timeout = 30;
//destino del correo
$mail->AddAddress($_GET['text_mail_destino']);
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
$mail->Subject = $_GET['titulo'];
$origen = $_GET['ruta'];
// Segundo control para ver que se reciba bien la ruta... Está bien!!!
print "<pre>";
print "</pre>\n";
$body = "Estimado(a) Sr(a).:<br><br><br>";
$body .= $_GET['text_name_origen'] . " le invita a descargar el archivo vinculado al enlace que le ha compartido más abajo ";
$body .= "con datos que le pueden interesar.<br><br>";
$body .= "También Usted puede acceder al banco de datos existente en ";
$body .= "<a href=http://SitioWeb.org/bdatos/imila/";
$body .= ">";
$body .= "Aqui puede encontrar más </a>";
$body .= "y revisar más información que puede ser de su interés <br><br>";
// AQUI VIENE EL LINK QUE SE VA EN EL CORREO
$body .= "<b>Archivo compartido:</b> <br>";
[B]//CUANDO LA RUTA ES ALGO COMO:[/B]
// /bdatos/imila/República Dominicana 2010/ExcelFiles/
$body .= "<a href=http:/";
$body .= $_GET['ruta'] . ">";
// [B]El link que recibe el destinatario le llega como:[/B]
// [B]http://Sitio/bdatos/imila/República[/B]
// [B]Y PIERDO TODO EL RESTO!!![/B]
$body .= $_GET['text_msg']."</a>"."<br><br><br>";
$body .= "<font color='#AB0D0D'>Comentario:</font><br><br>";
$body .= $_GET['text_comentario'];
$mail->Body = $body;
//se envia el mensaje, si no ha habido problemas
//la variable $exito tendra el valor true
$exito = $mail->Send();
$intentos=1;
while ((!$exito) && ($intentos < 5)) { sleep(5);
$exito = $mail->Send();
$intentos=$intentos+1;
}
if(!$exito) {
echo "Problemas enviando correo electrónico a ";
echo "<br/>".$mail->ErrorInfo;
}
else {
echo "Mensaje enviado correctamente","<br><br>";
echo '<script type="text/javascript">setTimeout(function(){window.close();},2000);</script>';
}
?>
</BODY>
</HTML>
Gracias por la ayuda que me puedan dar para solucionar esto... ya probé con "unlercode"; poner caracteres como "%20"; he buscado en el foro e internet (por ahí capaz que no exaustivamente), pero aquí sigo sin resolver.
Saludos