markosar200294
New Member
- Messages
- 56
- Reaction score
- 0
- Points
- 0
Hola, quiero permitir que los visitantes de mi pagina puedan enviar correos con archivos adjuntos, pero no lo consigo.
He conseguido un script que me permite enviarlos sin adjuntos y funciona perfectamente. Despues consegui otro que ademas los permitia. Pero el problema es que no funciona. Mejor dicho, si funciona lo que pasa es que x10hosting me los bloquea y me los manda a Squirrel como si fueran virus.
Aqui os dejo los script de los que os hablo a ver como me podeis ayudar.
El 1º funciona y es muy simple:
if (@!$HTTP_POST_VARS) { //no se por que carajo da error esto y POST
?>
<TABLE>
<TR>
<TD>
<form action="index.php?act=contacto" method=post>
Nombre:
</TD><TD> <input type=text name="nombre" size=16></TD>
</TR><TR>
<TD>
E-mail:
</TD><TD> <input type=text name=email size=16></TD>
</TR><TR>
<TD>
Comentarios:
</TD><TD> <textarea name=coment cols=32 rows=6></textarea></TD>
</TR><TR>
<TD colspan=2><center><input type=submit value="Enviar"></center><TD><TR>
</form>
</TABLE>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";
//mando el correo...
mail($mail_destinatario,"Formulario recibido",$cuerpo);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
Este funciona pero me lo bloquea el X10hosting
echo "<form name='formulario' id='formulario' method='post' action='aplicacion.php?act=dud'
target='_self' enctype='multipart/form-data'>
<p>Nombre <input type='text' name='Nombre' id='Nombre'></p>
<p>E-mail
<input type='text' name='email' id='email'>
</p>
<p>Asunto
<input type='text' name='asunto' id='asunto' />
</p>
<p>Mensaje
<textarea name='mensaje' cols='50' rows='10' id='mensaje'></textarea>
</p>
<p>Adjuntar archivo: <input type='file' name='archivo1' id='archivo1'></p>
<p>
<input type='submit' value='Enviar'>
</p>
</form>";
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";
if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;
foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros = 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
$sTexto = $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}
if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
// $sTexto+$sAdjuntos+\n\n----_Separador-de-mensajes_----\n
}
//cambiar aqui el email
if (form_mail("xxxxxxxxxxx@yahoo.es",
$_POST[asunto],
"Los datos introducidos en el formulario son:\n\n",
$_POST))
echo "Su formulario ha sido enviado con exito";
El mensaje de error en Squirrel es el siguiente:
A policy-violation was found in an Email message you sent.
This Email scanner intercepted it and stopped the entire message
reaching its destination.
The policy-violation was reported to be:
Disallowed content found in MIME attachment - not valid email
Please contact your IT support personnel with any queries regarding this
policy.
A ver como me podeis ayudar.
He conseguido un script que me permite enviarlos sin adjuntos y funciona perfectamente. Despues consegui otro que ademas los permitia. Pero el problema es que no funciona. Mejor dicho, si funciona lo que pasa es que x10hosting me los bloquea y me los manda a Squirrel como si fueran virus.
Aqui os dejo los script de los que os hablo a ver como me podeis ayudar.
El 1º funciona y es muy simple:
if (@!$HTTP_POST_VARS) { //no se por que carajo da error esto y POST
?>
<TABLE>
<TR>
<TD>
<form action="index.php?act=contacto" method=post>
Nombre:
</TD><TD> <input type=text name="nombre" size=16></TD>
</TR><TR>
<TD>
E-mail:
</TD><TD> <input type=text name=email size=16></TD>
</TR><TR>
<TD>
Comentarios:
</TD><TD> <textarea name=coment cols=32 rows=6></textarea></TD>
</TR><TR>
<TD colspan=2><center><input type=submit value="Enviar"></center><TD><TR>
</form>
</TABLE>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";
//mando el correo...
mail($mail_destinatario,"Formulario recibido",$cuerpo);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
Este funciona pero me lo bloquea el X10hosting
echo "<form name='formulario' id='formulario' method='post' action='aplicacion.php?act=dud'
target='_self' enctype='multipart/form-data'>
<p>Nombre <input type='text' name='Nombre' id='Nombre'></p>
<p>E-mail
<input type='text' name='email' id='email'>
</p>
<p>Asunto
<input type='text' name='asunto' id='asunto' />
</p>
<p>Mensaje
<textarea name='mensaje' cols='50' rows='10' id='mensaje'></textarea>
</p>
<p>Adjuntar archivo: <input type='file' name='archivo1' id='archivo1'></p>
<p>
<input type='submit' value='Enviar'>
</p>
</form>";
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";
if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;
foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros = 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
$sTexto = $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}
if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
// $sTexto+$sAdjuntos+\n\n----_Separador-de-mensajes_----\n
}
//cambiar aqui el email
if (form_mail("xxxxxxxxxxx@yahoo.es",
$_POST[asunto],
"Los datos introducidos en el formulario son:\n\n",
$_POST))
echo "Su formulario ha sido enviado con exito";
El mensaje de error en Squirrel es el siguiente:
A policy-violation was found in an Email message you sent.
This Email scanner intercepted it and stopped the entire message
reaching its destination.
The policy-violation was reported to be:
Disallowed content found in MIME attachment - not valid email
Please contact your IT support personnel with any queries regarding this
policy.
A ver como me podeis ayudar.
Last edited: