Mail()

Hola. Quisiera preguntarte sobre la función mail(). Resulta que me funcionaba muy bien, hasta que tuve que instarle cosas al PC (hardware). Tengo el smtpserver.exe, pero al llamar la función mail me dice que mail(): SMTP server response: 501 Syntax Error in parameters or arguments ... Y el smtpserver cierra su conexión al localhost... No sé que pasó porque antes me funcionaba muy bien... Probé instalando de nuevo el smtpserver, pero no... Ojala me puedas ayudar, es importante... Gracias..

2 respuestas

Respuesta
1
En la versión PHP 4.3 hay algunos problemas de sintaxis respecto a versiones anteriores, por lo que si actualizas de otras versiones a esa es probable que obtengas el error que cometnas. Por instalar hardware es muy extraño que te deje de funcionar. Aunque con el hardware seguro que has instalado algún software que puede ser lo que produce el problema.
Prueba a enviar un mail lo más sencillo posible, pero con direcciones de correo válidas para saber si funciona. En el campo 'From' tienes que poner solo una dirección de correo, no pongas nombres, es decir, usa 'Form: [email protected]' en vez de 'From: "AAA" <[email protected]>'. Una estructura sencilla podría ser:
mail('[email protected]', 'A',
'A', 'From: [email protected]');
Prueba a instalar PHP de nuevo. La versión 4.2.1 no tiene esos problemas de sintaxis. Prueba a descargarte la última versión de www.php.net para ver si te soluciona el problema. Y asegurate que la configuración está correcta. La mayoría de los programas servidores de correo requieren añadir líneas a php.ini, revísalas. Cada vez que hagas la prueba para ver si te funciona envía un mail muy sencillo, así evitas otros problemas, y cuando veas que te funciona pruebas con mails más complicados que tengan cabeceras y todo lo que necesites.
Resumiendo: creo que reinstalando PHP ya sea la misma versión u otra te funcionará.
Respuesta
1
Estuve investigando un poco, ya que no tenia mucho conocimiento acerca de lo que necesitabas...
Encontré este pedazo de código en un foro, ojalá te sirva, porque la verdad no se cual es el problema entre el hardware y el software.
<?
/* CORREO VIA SMTP.-
Uso:
---
jcp_mail($de,$para,$asunto,$body [,$from_name=''] [,$server='mail.dominio.com'[,$domain='dominio.com'[,$port='25']]]) {
[]=opcional, si se omite asume lo indicado
Ejemplo de uso:
--------------
$body = "<html><body><h1>grande</h1><br><b>negrita</b>normal si sigue solo<br>
esto se escribe seguido la eñe?? acepta";
$body.= " Esta prueba <font color='#0000FF'>funciona</font><br></body></html>";
echo jcp_mail('[email protected]','[email protected]','Hola ojo con este texto!',$body);
(c) Temaqueja. 2,001
*/
/* Devuelve 0 si $cod inicia los 3 primeros digitos de la $cad.-
Lo contrario devuelve el código de error SMTP
*/
function vrfy__($cod) {
global $conexion;
$cad = fgets($conexion, 255);
if(substr(ltrim($cad),0,3)==substr(ltrim($cod),0,3)) {
$ret__ = 0;
} else {
$ret__ = substr(ltrim($cad),0,3);
}
return ($ret__);
}
/* Función de envío de correo SMTP,
Salvo se indique lo contrario en $headers__, la función asume que el correo será tipo text/html
Devuelve un codigo de error ó 0 (cero) si es exitoso.
$de__ email remitente
$para__ email destino
$asunto__ encab. del mensaje
$body__ cuerpo del mensaje
$From_name__ nombre del remitente a mostrar
$headers__ encabezados adicionales, por ejemplo indicar que es texto plano, o que tiene
archivos adjuntos, por omisión asume que el correo se envía en forma text/html
$server nombre del servidor (x omisión: mail. Dominio.com)
$domain nombre del dominio (x omisión dominio.com)
$port puerto de correo smtp (x omisión 25)
20/12/2001
*/
function jcp_mail($de__,$para__,$asunto__,$body__,$from_name__='',$headers__='',$server='mail.dominio.com',$domain='dominio.com',$port='25') {
global $conexion;
$resp = 0;
// me conecto
if($conexion = fsockopen($server,$port, &$errno, &$errstr)) {
// 220 saludo inicial???
$resp=vrfy__('220');
if($resp==0) {
// le doy mi dominio
fputs($conexion, "EHLO $domain
");
$resp=vrfy__('250');
if($resp==0) {
// leo 8 lineas mas con mensajes iniciales del servidor ...
// no todos los servidores son iguales, habria que hacer un bucle aqui.
fgets($conexion, 255);
fgets($conexion, 255);
fgets($conexion, 255);
fgets($conexion, 255);
fgets($conexion, 255);
fgets($conexion, 255);
fgets($conexion, 255);
fgets($conexion, 255);
// compongo el email
fputs($conexion, "MAIL FROM:<$de__>
");
$resp=vrfy__('250');
if($resp==0) {
fputs($conexion, "RCPT TO:<$para__>
");
$resp=vrfy__('250');
if($resp==0) {
//ahora el contenido...
fputs($conexion, "DATA
");
$resp=vrfy__('354');
if($resp==0) {
if($from_name__<>'') {
fputs($conexion, "From:$from_name__;
");
}
fputs($conexion, "To:$para__;
");
fputs($conexion, "Subject:$asunto__;
");
if($headers__=='') {
fputs($conexion, "Content-type: text/html;
");
} else {
fputs($conexion, $headers__."
");
}
//ahora el verdadero cuerpo y contenido del mensaje en HTML!!!!!...
fputs($conexion, $body__);
fputs($conexion, "
.
");
//TODO ESTA BIEN???????
$resp=vrfy__('250');
if($resp<>0) {
}
} else {
}
} else {
}
} else {
}
} else {
}
} else {
}
fputs($conexion, "QUIT
");
fclose($conexion);
} else {
// echo $errno. ' > '. $errstr;
$resp=$errno*10;
}
return ($resp);
}
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas