2011-06-28 11 views
6

Ho creato un semplice modulo di contatto PHP che dovrebbe inviare posta tramite lo script Swift-Mailer.Errore Swift-Mailer, "Indirizzo nella cassetta postale fornito [] non conforme a RFC"

Il problema è che continuo a ricevere questo errore

eccezione Uncaught 'Swift_RfcComplianceException' con messaggio 'indirizzo nella casella postale dato [] non è conforme con la RFC 2822, 3.6.2.'

Che presumo significhi che sto usando un indirizzo e-mail non valido. Ma dal momento che sto usando [email protected] per testare lo scrip, il problema è probabilmente da qualche altra parte. Questa è la mia configurazione:

dove la posta viene inviata a:

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

Il contenuto del messaggio:

$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 funzione che uso per inviare la posta utilizzando 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>'; 
} 
} 

Come potete vedere è una forma molto semplice con tre campi, nome, mail e messaggio. Ho anche altre impostazioni di convalida per ciascuno dei campi dei moduli di contatto, ma penso che qui ci siano poche preoccupazioni.

Grazie per l'aiuto.

Modifica: Basta provare con l'utilizzo di gmail come server smtp. Sfortunatamente continua a dare gli stessi risultati esatti.

+0

Scarta il contenuto di '$ email' e' $ my_email' dopo aver eseguito trim/htmlspecialchars/strip_tags e vedere come sono. Il codice swiftmailer sembra ok, quindi probabilmente gli indirizzi vengono manchiati da qualche parte prima che raggiungano swiftmailer. –

+2

E rimuovere entrambi, 'strip_tags' e' htmlspecialchars'. Queste due funzioni non sono progettate per funzionare con indirizzi e-mail e nomi ma con HTML. Penso che tu stia mescolando concetti qui. Esegui una fuga corretta, non una fuga cerebrale. Sai cosa fai e perché! – hakre

+0

@Marc_B Era quello che sospettavo anche io. Ma erano corretti ... La mia altra ipotesi è che l'errore potrebbe riferirsi non all'indirizzo inviato ma all'indirizzo del destinatario? Proverò a provare con un indirizzo Gmail come ricevitore e con il server smtp di Gmail ... – Maverick

risposta

2

Tutte le variabili di dati (indirizzi, nomi ...) sembrano essere globali. Le variabili globali non possono essere lette dalle funzioni a meno che non le si passi come parametri (il modo consigliato) o si usi la parola chiave global (o la matrice $GLOBALS).

Problemi correlati