Foros del Web » Programando para Internet » PHP »

Funcion MAIL () funciona bien pero manda a Spam

Estas en el tema de Funcion MAIL () funciona bien pero manda a Spam en el foro de PHP en Foros del Web. Bien amigos creo que esta claro mi problema tengo un formulario que funciona perfectamente bien con la funcion mail hace validaciones y checa que no ...
  #1 (permalink)  
Antiguo 09/09/2008, 14:37
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 11 años, 10 meses
Puntos: 0
Sonrisa Funcion MAIL () funciona bien pero manda a Spam

Bien amigos creo que esta claro mi problema tengo un formulario que funciona perfectamente bien con la funcion mail hace validaciones y checa que no se utilice para enviar Spam....... pero cuando se envia el mensaje en el hotmail aparece como SPAM...

Esto es lo que aparece en el Hotmail.........

Este mensaje se ha marcado como correo no deseado y se eliminará dentro de diez días.
Este mensaje se ha bloqueado para tu seguridad. Abrir mensaje




Este es el código en php
<?php if (array_key_exists('enviar',$_POST)) {

$para = '[email protected]';
$asunto = 'contacto de visitante';

// eliminar caracteres escape de array POST
if (get_magic_quotes_gpc()) {
function stripslashes_deep($value) {
$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
return $value;
}
$_POST = array_map('stripslashes_deep', $_POST);
}

//Lista de archivos que se esperan
$esperado = array('nombre', 'ciudad', 'correo', 'tipo_contacto', 'texto');
//Configurar archivos obligatorios
$obligatorio = array('nombre', 'ciudad', 'correo', 'tipo_contacto', 'texto');
//Crear un array vacÃ*o para cualquier archivo perdido
$perdido = array();

//asume que no hay nada sospechoso
$sospechoso = false;
//crear un patrón para localizar frases sospechosas
$patron = '/Content-Type:|BCC:|CC:/i';

// function para comprobar frases sospechosas
function esSospechoso($val, $patron, &$sospechoso) {
// si la variable es un array, loop a través de cada elemento
// y pasarlo recursivamente de vuelta a la misma función
if (is_array($val)) {
foreach ($val as $item) {
esSospechoso($item, $patron, $sospechoso);
}
}
else {
// si es encontrada una de las frases sospechosas, configurar Boolean a true
if (preg_match($patron, $val)) {
$sospechoso = true;
}
}
}

//validar la dirección email
if (!empty($email)) {
// expresión regular para identificar caracteres ilegales en dirección email
$checkEmail = '/^[^@][email protected][^\s\r\n\'";,@%]+$/';
//rechazar la dirección email si no cumple la expresión regular
if (!preg_match($checkEmail, $email)) {
$sospechoso = true;
$enviarMail = false;
unset($perdido);
}
}


//comprobar el array $_POST y todos los subarrays buscando contenido sospechoso
esSospechoso($_POST, $patron, $sospechoso);

if ($sospechoso) {
$enviarMail = false;
unset($perdido);
}
else {
//Procesar las variables $_POST
foreach ($_POST as $key => $value) {
//asignar a variable temporalmente y vacÃ*a espacio blanco si no un array
$temp = is_array($value) ? $value : trim($value);
//si vacÃ*o y obligatorio, añadir a array $perdido
if (empty($temp) && in_array($key, $obligatorio)) {
array_push($perdido, $key);
}
//En otro caso, asignar a una variable del mismo nombre que $key
elseif (in_array($key, $esperado)) {
${$key} = $temp;
}
}
}

//Seguir sólo si todos los campos requeridos están OK
if (!$sospechoso && empty($perdido)) {



// procesar las variales $_POST
$nombre = $_POST['nombre'];
$ciudad = $_POST['ciudad'];
$correo = $_POST['correo'];
$tipo_contacto = $_POST['tipo_contacto'];
$texto = $_POST['texto'];

// crear mensaje
$mensaje = "Nombre: $nombre\n\n";
$mensaje .= "Ciudad: $ciudad\n\n";
$mensaje .= "Correo: $correo\n\n";
$mensaje .= "Tipo de contacto: $tipo_contacto\n\n";
$mensaje .= "Texto: $texto\n\n";

// limitar tamaño de linea a 70 caracteres
$mensaje = wordwrap($mensaje, 70);

//crear cabeceras adicionales
$cabeceras ='From: Vissiontotal<[email protected]>';
if (!empty($correo)) {
$cabeceras .= "\r\nReply-To: $correo";
}

// enviarlo
$enviarMail = mail ($para, $asunto, $mensaje, $cabeceras);
if ($enviarMail) {
//$perdido deja de ser necesario si el email es enviado, asÃ* que lo destruimos con unset
unset($perdido);
}
}
}
?>

AQUI ESTA EL FORMULARIO
<!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>Documento sin t&iacute;tulo</title>
<link href="file:///C|/AppServ/www/vissiontotal/spi/css/general.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<p align="center" class="textos_cabecitas">SISTEMA DE CONTACTO</p>
<p align="center" class="textos_cabecitas">
<?php if ($_POST && isset($perdido) && !empty($perdido)) {
?>
</p>
<p class="textos_contacto_fallo"> Por favor, completa los campos que se indican. </p>
<?php
}
elseif ($_POST && !$enviarMail) {
?>
<p class="textos_contacto_fallo">Lo siento, ha habido un problema enviando tu mensaje.</p>
<?php
}
elseif ($_POST && $enviarMail) {
?>
<p class="textos_contacto_ok">Su mensaje ha sido enviado. Gracias por sus comentarios.</p>
<?php }?>
</p>
<table width="395" border="0" align="center">
<tr bgcolor="#990000" class="textos_standar_blanco">
<td colspan="2">Por favor deja tus datos personales</td>
</tr>
<tr class="textos_standar_negro">
<td width="179">Nombre y apellido</td>
<td width="206"><label>
<?php if (isset($perdido) && in_array('nombre', $perdido)) { ?>
<span class="textos_contacto_obligatorio">Por favor, escriba su Nombre</span>
<?php } ?>
<input type="text" name="nombre" id="nombre"
<?php if (isset($perdido)) {
echo 'value=" '.htmlentities($_POST['nombre']).' " ';
}
?>
/>
</label></td>
</tr>
<tr class="textos_standar_negro">
<td>Ciudad</td>
<td><label>
<?php if (isset($perdido) && in_array('ciudad', $perdido)) { ?>
<span class="textos_contacto_obligatorio">Por favor, escriba su ciudad</span>
<?php } ?>
<input type="text" name="ciudad" id="ciudad"
<?php if (isset($perdido)) {
echo 'value=" '.htmlentities($_POST['ciudad']).' " ';
}
?>

/>
</label></td>
</tr>
<tr class="textos_standar_negro">
<td>Correo electr&oacute;nico</td>
<td><label>
<?php if (isset($perdido) && in_array('correo', $perdido)) { ?>
<span class="textos_contacto_obligatorio">Por favor, escriba su Correo</span>
<?php } ?>
<input type="text" name="correo" id="correo"
<?php if (isset($perdido)) {
echo 'value=" '.htmlentities($_POST['nombre']).' " ';
}
?>

/>
</label></td>
</tr>
<tr class="textos_standar_negro">
<td>Tipo de contacto</td>
<td><label>
<?php if (isset($perdido) && in_array('tipo_contacto', $perdido)) { ?>
<span class="textos_contacto_obligatorio">Por favor, seleccione una opcion</span>
<?php } ?>
<select name="tipo_contacto" id="tipo_contacto">
<option>Queja</option>
<option>Felicitaci&oacute;n</option>
<option>Observacion</option>
<option>Sugerencia</option>
<option>Cr&iacute;tica</option>
<option>Falla de p&aacute;gina</option>
</select>
</label></td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr bgcolor="#990000" class="textos_standar_blanco">
<td colspan="2">Sobre qu&eacute; deseas mandarnos tu correo
<label></label></td>
</tr>
<tr>
<td colspan="2"><label>
<?php if (isset($perdido) && in_array('texto', $perdido)) { ?>
<span class="textos_contacto_obligatorio">Por favor, escriba su mensaje</span>
<?php } ?>
<textarea name="texto" id="texto" cols="45" rows="5"><?php if (isset($perdido)) {
echo htmlentities($_POST['texto']);
}?>
</textarea>
</label></td>
</tr>
<tr>
<td colspan="2"><label>
<input type="submit" name="enviar" id="enviar" value="Enviar" />
</label></td>
</tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
</form>
</body>
</html>
  #2 (permalink)  
Antiguo 09/09/2008, 15:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 10 meses
Puntos: 2135
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

Hola vissiontotal,

Eso es normal en hotmail ya que sus SPAM filters son muy altos y no hay nada que puedas hacer desde PHP para cambiarlo.

Saludos.
  #3 (permalink)  
Antiguo 09/09/2008, 16:58
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 18 años, 11 meses
Puntos: 39
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

Otra de las cosas ve que servidor de salida SMPT no este en black list de hotmail, y por ello te marque como SPAM.
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/
  #4 (permalink)  
Antiguo 10/09/2008, 10:46
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

muchas gracias amigos voy a checar lo del servidor con mi provedor....... pero. si no se puede hacer nada desde PHP cual seria la solucion............
  #5 (permalink)  
Antiguo 10/09/2008, 10:54
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 13 años
Puntos: 67
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

Claro, si hay una solución, puedes envialo mediante la clase PHPMAILER, aquí tienes un par de links que te pueden servir. Debes saber que para evitar que el mensje sea detectado como spam debes enviarlo mediante SMTP a través de una cuenta existente de algún proveedor, creo que normalmente los hosting no dan ese servicio, en fin, de todos modos sé que te será últil:

http://blog.unijimpe.net/introduccion-a-phpmailer/

http://www.buayacorp.com/archivos/phpmailer-con-gmail/
  #6 (permalink)  
Antiguo 10/09/2008, 21:15
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

Gracias ElJavista voy a darle una revizada a los links que pusiste por aki pondre los resultados................
  #7 (permalink)  
Antiguo 11/09/2008, 01:38
 
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

Cita:
Iniciado por Potro Ver Mensaje
Otra de las cosas ve que servidor de salida SMPT no este en black list de hotmail, y por ello te marque como SPAM.
Y creo que también hay blacklist en base al dominio utilizado en el email. Puede que me equivoque... pero creo que así es.
Otras cosas que estos tipos revisan para detectar si es o no spam es la cantidad de mensajes que han llegado a sus servidores desde la misma IP, direccion de correo, y probablemente subject y quizás cuantos otros identificadores, en los ultimos X minutos. (lo siento, ni idea cuantos serán). Pero si desde tu sitio se manda mucho correo a cuentas hotmail y tal vez demasiado seguido (o se hizo así en algún momento), es probable que ellos mismo te hayan pasado (por tu "conducta") a su blacklist.

Cita:
Iniciado por ElJavista Ver Mensaje
Claro, si hay una solución, puedes envialo mediante la clase PHPMAILER, aquí tienes un par de links que te pueden servir. Debes saber que para evitar que el mensje sea detectado como spam debes enviarlo mediante SMTP a través de una cuenta existente de algún proveedor, creo que normalmente los hosting no dan ese servicio, en fin, de todos modos sé que te será últil:

http://blog.unijimpe.net/introduccion-a-phpmailer/

http://www.buayacorp.com/archivos/phpmailer-con-gmail/
Ya guardé estas direcciones para echarles un vistazo... ¿se puede adelantar qué permite en términos generales esta clase? (más que nada para informar a navegantes que pasen por aqui).

Saludos,
  #8 (permalink)  
Antiguo 11/09/2008, 09:06
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 13 años
Puntos: 67
Respuesta: Funcion MAIL () funciona bien pero manda a Spam

Ah claro, voy a adelantar qué hace esta clase. En realidad son dos clases, pero vienen juntas y una complementa a la otra. Lo que hace es proveer de una manera simple de enviar un mensaje de correo electrónico, con archivos adjuntos y todas esas cosas. O sea, hace la vida más sencilla a los que quieren enviar E-mails mediante PHP. También, mediante la otra clases: SMTP, permite enviarlos a través de un proveedor de correo electrónico. En el segundo links se muestra como hacerlo mediante gmail, no es que simule enviarse mediante gmail sino que realmente lo hace. No sé exactamente como detecta el hotmail los spams (corriganme si me equivoco pero creo que es el mejor detectando spams), pero si sé que si se envía mediante un proveedor como el gmail no será detectado como spam (a menos que lo marques como tal). Bueno, espero que les sirvan.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:52.