Newsgroup: it.comp.www.php
Titolo: a capo con mail()

Ho un problemino con un mail inviato tramite mail().
Compilo un messaggio multipart sia con testo html che con plain-text. 
Per il text ho il problema che con mozilla sotto linux vedo tutto bene, 
mentre con netscape sotto win gli "a capo" sono doppi; per intenderci
con mozilla-linux:
prima riga
seconda riga
terza riga
con netscape-win:
prima riga
seconda riga
terza riga
Il messaggio viene generato come:
$text="prima riga"."\n".
       "seconda riga"."\n".
       "terza riga";
Dove sta il problema?
Grazie a tutti
Mik

 Dove sta il problema?
Il problema cerco di immaginarlo, dove stia non lo so, ti rispondo da
profano. Potrebbe trattarsi di questo:
nella tua pagina, di fatto, per ogni accapo c'č un doppio "\n", il primo
lo scrivi tu, il secondo č invisibile ai tuoi occhi, ma lo hai scritto
ugualmente andando a capo:
$text="prima riga"."\n". (+ linefeed)
"seconda riga"."\n". (+ linefeed)
Se l'ipotesi rispecchia il vero, la tua mail viene inviata cosě:
$text="prima riga"."\n\n". "seconda riga"."\n\n" ecc. 
e a seconda della piattaforma/mailer hai le varie "interpretazioni":
mozilla-linux ignora il secondo "\n" e va a capo una sola volta,
netscape-win legge e giudica valido anche il secondo accapo.
Tentativo.
Scrivi il testo dell'email cosě:
$text="prima riga
       seconda riga
       terza riga";
e guardane il risultato quando la scarichi.
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 scritto ugualmente andando a capo:
No, non puo' essere questo il problema perche' gli a capo a cui fai
riferimento non fanno parte della stringa inviata.
Per Mik
Prova a sostituire \n con \r\n.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 
Non funziona.
Mik

 riferimento non fanno parte della stringa inviata.
Parli del linefeed che ho definito "invisibile ai tuoi occhi"?
E con "non fanno parte" (qualunque essi siano) intendi dire che vengono
completamente eliminati durante l'invio? come non esistessero?
indipendentemente dal tipo di server?
E' materia interessante, vediamo se questa volta si arriva a parlarne
con pacatezza.
In remoto ho un paio di server linux su cui sbizzarrirmi quanto voglio,
in casa ho due client di posta[*] (EudoraLight e MacSoup 2.4.5, entrambi
Mac); ragion per cui - volendo - c'è possibilità di mettere a confronto
gli esiti dei test di chi volesse farne, e chissà che unendo forze e
mezzi dei cosiddetti niubbi e degli esperti non si riesca a trovare la
soluzione ottimale per Mik e per tutti noi.
[*] In realtà ne avrei tre, ma preferisco di gran lunga fingere di non
aver mai conosciuto Outlook :)


 indipendentemente dal tipo di server?
Si, e' una questione di parsing PHP, non di server, riguardati la
definizione di $text, il significato dell'operatore . e di come si
delimitano le stringhe in PHP.


 Infatti non fanno parte della stringa $text
Ochei. Ora però c'è da capire uno strano fenomeno, a questo punto molto
strano, te lo descrivo. 
Mi sono auto-inviato un'email da due diversi server, uno statunitense e
uno italiano, entrambi linux.
L'email:
------------------------------
$corpoemail="Salve,
sono andato a capo di una riga
di 2 righe
di 3 righe
di 1 riga
di 1 riga
";
mail($indirizzomio,$oggetto,$corpoemail,$Intestazioni);
------------------------------
Dopo aver letto il tuo post mi aspettavo di veder tornare indietro
quanto sotto:
Salve,sono andato a capo di una rigadi 2 righedi 3 righe ecc.
      ^                             ^         ^
[nota le sottolineature: se gli accapo non fanno parte della stringa,
non esistono proprio, dunque pensavo di non vederli nemmeno tradotti in
"space"]
e invece, sia con Eudora sia con MacSoup, ho ricevuto pari pari questo:
------------------------------
Salve,
sono andato a capo di una riga
di 2 righe
di 3 righe
di 1 riga
di 1 riga
------------------------------
Come si spiega lo strano fenomeno?


 Come si spiega lo strano fenomeno?
Ciao,
non è uno strano fenomeno, ma due situazioni diverse.
$a = "ritorno
a capo";
$b = "qui non ".
     "ritorno a capo";  
La stringa $a è composta da:
$a = "ritorno/r/n/r/na capo";
e quindi contiente i /r/n.
La stringa $b è composta da due stringhe concatenate e gli
spazi che ho usato per allineare le due stringhe componenti
non ne fanno parte, quindi:
$b = "qui non ritorno a capo"
Ciao.
-- 
Federico R.

 Come si spiega lo strano fenomeno?
[mi quoto]
riguardati la definizione di $text, il significato dell'operatore . e
di come si delimitano le stringhe in PHP.
[/mi quoto]
Questo "strano fenomeno" deriva solo dalla tua ignoranza di quello di
cui sopra, infatti trattasi del comportamento corretto.


 
Io penso di avere scritto correttamente la stringa con la concatenzione 
e gli a capo ("\r\n" come suggerito) per cui l'a capo che vedo 
nell'editor non fa parte della stringa per cui non viene interpretato 
come un ulteriore a capo:
$text="prima riga"."\r\n"."seconda riga"
č uguale a
$text="prima riga"."\r\n".
       "seconda riga"
mentre sarebbe diverso da
$text="prima riga
        seconda riga"
Su questo non ci piove. A maggio ragione con mozilla sotto linux vedo 
tutto correttamente esattamente come avevo previsto che si vedesse. Se 
perň uso netscape sotto win c'č il doppio a capo che io non ho 
introdotto. Puň essere dovuto al fatto che il carriage return dei due 
sistemi operativi č diverso e siccome il sito giace su server linux 
questo associa all'acapo la sua stringa caratteristica di fine riga che 
invece win interpreta con un doppio a capo?
Di pugnette del genere ce ne sono a migliaia soprattutto se si fa il 
download di script sh da server win non li si riesce piů a eseguire 
perchč ci si trovano caratteri non interpretati correttamente a fine 
riga. Mai capitato a voi?
Ciao a tutti
Grazie
Mik

 di come si delimitano le stringhe in PHP.
li faccio appena possibile, voglio farli con calma, ora sono impegnato.
Buona giornata.


 non č uno strano fenomeno, ma due situazioni diverse.
Ho letto con attenzione e credo di avere le idee assai piů chiare.
Grazie per l'intervento, a presto ;)
