2011-06-28 14 views
6

He creado un formulario simple de contacto PHP que se supone que envía correo a través del script Swift-Mailer.Error de Swift-Mailer, "La dirección en el buzón dado [] no cumple con RFC"

El problema es que sigo recibiendo este error

Excepción no detectada 'Swift_RfcComplianceException' con mensaje de Dirección en el buzón dado [] no cumple con RFC 2822, 3.6.2. '

Supongo que significa que estoy usando una dirección de correo electrónico no válida. Pero dado que estoy usando [email protected] para probar el scrip el problema probablemente sea otro. Esta es mi configuración:

Cuando el correo se envía a:

$my_mail = '[email protected]'; 
$my_name = 'My Name'; 

El contenido del mensaje:

$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$message = trim($_POST['message']); 
$date = date('d/m/Y H:i:s'); 
$ipaddress = $_SERVER['REMOTE_ADDR']; 

$content = $message.'\n\nSent on: '.$date.' From: '.$ipaddress; 

La función que utilizo para enviar el correo usando SwiftMailer:

function send_mail() { 
require('/path/to/swift_required.php'); 

//The means of transport 
$transport = Swift_SmtpTransport::newInstance('mail.mydomain.com', 25); 
$transport->setUsername('myusername'); 
$transport->setPassword('mypass'); 

$mailer = Swift_Mailer::newInstance($transport); 

//The message 
$mail = Swift_Message::newInstance(); 
$mail->setSubject('Hello'); 
$mail->setFrom(array($email => $name)); 
$mail->setTo(array($my_mail => $my_name)); 
$mail->setBody($content, 'text/plain'); 

//Sending the message 
$test = $mailer->send($mail); 

if ($test) { 
    echo '<p>Thank you for contacting us '.$name.'! We will get in touch soon.</p>'; 
} 
else { 
      echo '<p>Something went wrong. Please try again later.</p>'; 
} 
} 

Como puede ver, es una forma muy simple con tres campos, nombre, correo y mensaje. También tengo otra configuración de validación para cada uno de los campos de formulario de contacto, pero creo que es de poca importancia aquí.

Gracias por la ayuda.

Editar: Simplemente pruebe con el uso de gmail como el servidor smtp. Desafortunadamente todavía da los mismos resultados exactos.

+0

Descarga el contenido de '$ email' y' $ my_email' después de que hayas hecho el trabajo de trim/htmlspecialchars/strip_tags y ve cómo son. El código del swift de serie se ve bien, por lo que posiblemente las direcciones se dañen antes de que lleguen a swiftmailer. –

+2

Y elimine ambos, 'strip_tags' y' htmlspecialchars'. Esas dos funciones no están diseñadas para funcionar con direcciones de correo electrónico y nombres, sino con HTML. Creo que estás mezclando conceptos aquí. Haz una escapada adecuada, no escapando del cerebro muerto. ¡Sepa lo que hace y por qué! – hakre

+0

@Marc_B Eso era lo que sospechaba también. Pero estaban en lo cierto ... Mi otra suposición es ¿podría el error referirse no a la dirección enviada sino a la dirección del receptor? Intentaré probar con una dirección de gmail como receptor y con el servidor smtp de gmail también ... – Maverick

Respuesta

2

Todas sus variables de datos (direcciones, nombres ...) parecen ser globales. Las variables globales no se pueden leer desde dentro de las funciones a menos que las pase como parámetros (la forma recomendada) o use la palabra clave global (o la matriz $GLOBALS).

Cuestiones relacionadas