Newsgroup: it.comp.www.php
Titolo: [PHP-Nuke] Quando la causa dei problemi è il gatto mezzo morto (lungo)

Ovvero del principio di indeterminazione applicato a PHP-Nuke
Non sono del tutto impazzito, ma quando non esiste (non riesco a trovarla)
spiegazione apparente di quello che accade, si comincia a pensare a
interferenze magiche o per fare i fighi si tira in ballo Heisenberg.
Dunque, per chi volesse approfondire:
ho scritto un po' di codice (su una versione assai 'elaborata' di nuke 6.5)
per fare in modo che venisse creata automaticamente una newsletter (in HTML)
contenente le ultime 10 news pubblicate, le categorie dei download, gli
ultimi 10 messaggi del forum e gli appuntamenti in agenda dei 30 giorni
successivi a quello del giorno di invio della newsletter.
Per fare ciò ho inserito nell'index del mod news (che sta in home) una
chiamata ad una funzione che ho definito nel mainfile e che si occupa di
costruire il contenuto della mail, dopo i controlli del caso. Questa mail
viene inviata ad un moderatore che verifica la correttezza del tutto, e
accedendo ad un modulo creato ad hoc nell'area admin, gestisce i banner
della newsletter, inserisce un eventuale messaggio e invia la newsletter con
le due possibilità già presenti nel modulo newsletter canonico di nuke;
oppure se si accorge che manca un appuntamento, vuole aggiungere un'altra
news o simili, può azzerare l'invio della newsletter, apportare le modifiche
volute e quindi far ripartire la procedura.
Funziona tutto quanto se non che facendo delle prove con l'invio a due
utenti mi è capitato ciò:
all'utente 1 è arrivata una mail in cui uno dei link alle categorie di
download è 'impazzito': era scritto con uno spazio tra < e a  ---> < a
href.... e quindi scazzava (nella mail dell'altro utente non c'era questo
spazio e quindi il link era regolare.). Tutto il resto era corretto.
all'utente 2 è arrivata una mail in cui uno dei link agli appuntamenti in
agenda non risultava un link. Andando a vedere il codice, risultava scritto
in questo modo:
<a
  ref = ".........."
     hr>testo del link</a>
Mentre nella mail dell'utente 1 il link era scritto regolarmente. Tutto il
resto era corretto.
Ovviamente i link sia dei download sia dell'agenda, vengono costruiti con
query sul db, e non c'è modo che la struttura di uno sia diversa da quella
di un'altro. Non solo, il body della mail è costruito mediante la
concatenazione di 4 variabili in questo modo:
$contenuto1.$nomeutente.$contenuto2.$contenuto3
Il nomeutente lo pesco dal db, insieme alla sua mail e faccio un ciclo per
spedire la mail a ciascun utente:
    while(list($uname,$email) = sql_fetch_row($result, $dbi)) {
 $contenuto = $Content1.$uname.$Content2.$uname.$Content;
 mail($email, $subject, $contenuto, "From: $from" . $intestazione);
    }
e quindi il body della mail, a parte il nome utente, dovrebbe essere
identico.
Nella mail al moderatore si riscontra il primo errore e non il secondo.
Nel db, dove vengono conservati valori delle variabili corrispondenti al
contenuto, tutto è corretto.
Mentre scrivevo questo msg ho fatto altre prove e mi sembra che potrebbe
esserci una correlazione con il server di posta che riceve il messaggio. Nel
senso che facendo spedire la nl a un terzo utente, che ha l'indirizzo email
su tin, come l'utente 2, questo riceve l'email con lo stesso errore della
mail ricevuta dall'utente 2.
L'utente 1 ha un server di posta gestito da tol.
Ma questo cosa potrebbe voler dire, che potrebbe essere un problema di
intestazione?
io uso
 $intestazione  = "MIME-Version: 1.0\r\nContent-type: text/html;
charset=iso-8859-1\r\n";
 mail($email, $subject, $contenuto, "From: $from" . $intestazione);
c'è qualche problema con questa intestazione?
Grazie per qualsiasi illuminazione.
Paolo

"S_p_ike" ha scritto nel messaggio
news:9NqWb.220332$VW.89...@news3.tin.it...
mi rispondo da solo:
linee troppo lunghe, mancavano alcuni \n
diavolo!