Pagina 1 di 1

Sintassi errata su funzione mail()

Inviato: 31/10/2006, 19:20
da Send
Salve!
Risolto un problema con il mio gatway smtp, in pratica non accettava connessioni senza user e password, ora mi ritrovo un problema un pò strano, premetto che creando un semplice script per testare il gateway il messaggio viene spedito senza problemi.

Codice: Seleziona tutto

<?php
	mail("io@miohost.it", "mesaggio di prova", "Questo è un messaggio di prova testuale!", "From: test@miohost.it"); ?>
Però Oscommerce non spedisce nulla, disabilitando il redirect nella pagina "login.php", mi viene fuori questo errore

Codice: Seleziona tutto

Warning: mail() [function.mail]: SMTP server response: 501 Bad address syntax in C:\Inetpub\crazy-byte\wwwroot\catalog\includes\classes\email.php on line 520
Sinceramente il codice mi sembra corretto a quella riga....

Inviato: 02/11/2006, 18:47
da Send
testanto, testando, con una buona dose di copie di backup è venuto fuori che la riga 520 di email.php è mal digerita da php5 e a quanto sono giunto a capire genera errori con il server smtp e credo anche a causa delle intestazioni accessorie che oscommerce aggiunge.
Difatti cancellando da quella funzione...

Codice: Seleziona tutto

. $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers)
e lasciando solo

Codice: Seleziona tutto

return mail($to_addr, $subject, $this->output, 'From: i@lopo.it' );
l'email parte, anche se viene mal digerita da alcune webmail, come quella nuova di Aruba.

In attesa di sviluppi, vi saluto!

Inviato: 02/11/2006, 19:00
da Send
Piccolo aggiornamento della situazione, magari posso aiutare chi è nelle stesse condizioni!

Il colpevole è il seguente codice

Codice: Seleziona tutto

. $from
e non gli header accessori come scrivevo prima; pur non essendo un gran programmatore php, penso che sia dovuto al modo in cui viene passata la stringa che fornisce l'indirizzo mail del mittente, per risolvere parzialmente la situazione si può modificare in questo modo la riga 520

Codice: Seleziona tutto

return mail($to_addr, $subject, $this->output, 'From: io@io.com'.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers) );
impostando l'email di origine direttamente nel parametro 'From: io@io.com' in questo modo l'email viene spedita e anche aperta senza grane dalla nuova webmail di Aruba.