[php o javascript]Manipolare protocollo SMTP Clicca QUI per vedere il messaggio nel forum |
Drake83 |
Ciao a tutti! Ho creato un'applicativo in php che in certe situazioni deve inviare in automatico delle mail. Il problema è che il mittente è ovviamente quello settato sul file php.ini del server e non il mittente che desidero io. E' molto probabile che il server abbia settato come mittente un account non esistente e quindi alcuni gestori (vedi ad esempio tiscali) rigettano la mail. Avevo quindi bisogno di trattare il protocollo smtp per l'invio in modo tale da settare a mio piacimento il mittente. Conoscete funzioni php o in javascript che mi permettano una operazione del genere?
Vi ringrazio
ciao :D |
yeah |
Cambia sendmail_from con ini_set() prima di inviare l'email, oppure all'inizio dello script. La modifica vale per tutta la durata dello script.
[edit] Javascript?? Mmmh... |
Drake83 |
Originally posted by yeah
Cambia sendmail_from con ini_set() prima di inviare l'email, oppure all'inizio dello script. La modifica vale per tutta la durata dello script.
[edit] Javascript?? Mmmh...
Grazie :D Ora ci perdo un po di tempo e verifico. (ho scritto javascript perchè il gestore del server mi aveva consigliato così anche se non è che mi avesse molto convinto) |
Gusher |
scusa, ma settando negli header del messaggio il campo "From:<addr@realdomain.com>" arriva al mittente con l'indirizzo settato in php.ini? Mi sembra un po' assurdo. |
Drake83 |
Originally posted by Gusher
scusa, ma settando negli header del messaggio il campo "From:<addr@realdomain.com>" arriva al mittente con l'indirizzo settato in php.ini? Mi sembra un po' assurdo.
no no guarda che è così davvero. Perchè il mittente è settato nel file php.ini. Lo avevo fatto anche io per far girare una applicazione in passato e il mittente deve essere settato nel file di configurazione. Poi che a video compaia il form che hai settato da script è un'altro paio di maniche. I server di destinazione non la cagano proprio quell'etichetta.
Tu hai provato soluzioni diverse? |
yeah |
deve essere settato nel file di configurazione.
Su questo punto sarei scettico. Io non ho accesso al file di configurazione, ma probabilmente tale direttiva non c'è sul server che ospita il mio sito, visto che con gli header funziona senza problemi :) |
Drake83 |
Originally posted by yeah
Su questo punto sarei scettico. Io non ho accesso al file di configurazione, ma probabilmente tale direttiva non c'è sul server che ospita il mio sito, visto che con gli header funziona senza problemi :)
Molto probabile :) ma purtroppo devo considerare tutti i casi peggiori. Per cui dato che ho notato che alcuni gestori modificano tale parametro a piacimento ho dovuto chiedervi come risolvere :D |
Gusher |
Originally posted by Drake83
no no guarda che è così davvero. Perchè il mittente è settato nel file php.ini. Lo avevo fatto anche io per far girare una applicazione in passato e il mittente deve essere settato nel file di configurazione. Poi che a video compaia il form che hai settato da script è un'altro paio di maniche. I server di destinazione non la cagano proprio quell'etichetta.
Tu hai provato soluzioni diverse?
Mi sembra molto strano, a meno che sia cambiato qualcosa nelle ultime versioni..
Una cosa di questo tipo (scrivendo gli header del messaggio) l'hai già provata?
$mailTo = '"Recipient Name" ";
$mailSubject = "Test";
// $mailBody previously defined.
$mailHeader = 'From: "'.$mailFrom.'" '."\r\n";
$mailHeader .= "Reply-To: $mailFrom\r\n";
$mailParams = "-f$mailFrom";
$mailResult = mail($mailTo,$mailSubject,$mailBody,$mailHeader,$m
ailParams); |
Gusher |
Comunque, nel caso il mittente non sia modificabile, potresti utilizzare direttamente il protocollo SMTP via socket. Se non hai da gestire codifiche particolari, allegati etc. ma solo del testo, può essere una soluzione valida e veloce. In questo modo, però, non hai il supporto "code", cosa che tutti gli SMTP server hanno; se il server di posta ti risponde con un temporary reject (es. server che implementa graylist) devi gestirlo via script. Idem per altri eventuali errori/messaggi. Insomma devi sperare che il server di posta ti accetti il messaggio al primo colpo ;) |
Drake83 |
Originally posted by Gusher
Comunque, nel caso il mittente non sia modificabile, potresti utilizzare direttamente il protocollo SMTP via socket. Se non hai da gestire codifiche particolari, allegati etc. ma solo del testo, può essere una soluzione valida e veloce. In questo modo, però, non hai il supporto "code", cosa che tutti gli SMTP server hanno; se il server di posta ti risponde con un temporary reject (es. server che implementa graylist) devi gestirlo via script. Idem per altri eventuali errori/messaggi. Insomma devi sperare che il server di posta ti accetti il messaggio al primo colpo ;)
si si l'esempio postato da te prima l'avevo già provato perchè lo avevo trovato in giro :D
mah in teoria con la ini_set() subito prima di lanciare la funzione mail() si cambia ciò che è scritto nel php.ini quindi il problema è risolto. Mi sembra il metodo più veloce e più efficace,no?:)
Bo speriamo lo testo un po e chissà :D
Grazie a tutti! |
yeah |
mah in teoria con la ini_set() subito prima di lanciare la funzione mail() si cambia ciò che è scritto nel php.ini quindi il problema è risolto.
Esatto :)
Mi sembra il metodo più veloce e più efficace,no?
Esatto :) |
|
|
|