[PHP] problema invio multiplo allegati mail

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
52
Ciao a tutti,
come da oggetto ho problemi con l'invio di allegati singoli e multipli.
Ho creato il seguente script con l'aiuto dei tutorial del seguente sito, ho cercato ovunque la soluzione ma lo script non accenn a funzionare. Posto il codice:

IL CODICE DEL FORM è:

HTML:
<input name="allegato" type="file" multiple size="0" maxlength="0" id="allegato" />


Il codice di invio in php è:

PHP:
//includiamo la classe PHPMailer
require "phpmailer/class.phpmailer.php";

$mail = new PHPMailer();
$percorso = "/fpdf.studioarlacchi.it/tmp_allegati";
$mail->setFrom = $mittente;
$mail->FromName = "$nome $cognome";
// This is the email address that the email will be sent to
$mail->AddAddress($mittente);
$mail->AddAddress("[EMAIL][email protected][/EMAIL]");
$mail->AddBcc("[EMAIL][email protected][/EMAIL]");
$mail->Subject = $oggetto; // Email subject
$mail->Body = $messaggio; // Email text
// queste 2 stringhe si riferiscono alla libreria fpdf che inviano in allegato il pdf riepilogativo della mail
$doc = $pdf->Output('S');
$mail->AddStringAttachment($doc,"allegati/richiesta ferie di $nome $cognome", 'base64', 'application/pdf');

//Upload dell'allegato
move_uploaded_file($_FILES['allegato']['tmp_name'], $percorso.$_FILES['allegato']['name']);
$mail->AddAttachment($percorso.$_FILES['allegato']['name']);

if($mail->send())
{ // SE L'INOLTRO È ANDATO A BUON FINE...
   
    echo "E-mail inviata con successo!! Attendi qualche secondo e verrai reindirizzato alla pagina precedente...";
    echo "<meta http-equiv=\"refresh\" content=\"5;url=/documenti_online/Modulistica.php\" />";

} else {// ALTRIMENTI...

echo "Si sono verificati dei problemi nell'invio della mail, riprova pù tardi. Ora verrai reindirizzato alla pagina precedente...";
echo "<meta http-equiv=\"refresh\" content=\"5;url=/documenti_online/Modulistica.php\" />";

}
Mi invia come allegato solo il pdf riepilogativo della mail
Dove sbaglio?[/PHP]
 
Ultima modifica di un moderatore:
ciao
non ho mai usato il multiple sugli allegati, quindi posso darti solo delle indicazione schematiche
per prima cosa dove leggi i dati degli allegati metti un var_dump
PHP:
//...
echo "<pre>";//per vedere meglio l'output
var_dump($_FILES['allegato']);
echo "</pre>";
//....
e inserendo due allegati quarda cosa ti risulta e postalo

un'osservazione in quanto essendo il codice parziale non lo vedo: fai un controllo sul tipo di file? se l'invio è da parte terzi è indispensabile, se l'invio lo fai solo tu può essere superfluo
 
Ciao ho fatto come mi hai detto, ma non cambia nulla.
Ho inserito la stringa dove mi hai detto tu (nel form dove leggo i files), e non succede nulla.
Posto la modifica
"file" multiple size="0" maxlength="0" id="allegato" /><?php var_dump($_FILES['allegato']); ?>

cosa sono i bccode?
 
ciao
per prima cosa, quel
var_dump($_FILES['allegato']);
non devi metterlo vicino al campo di input, ma dove leggi i dati da inviare a phpmailer
vedo che hai esempio
$mail->setFrom = $mittente;
quindi immagino che quel $mittente provenga dal form, per cui per valorizzare la variabile in qualche punto prima di
require "phpmailer/class.phpmailer.php";
dovresti avere qualcosa che ti legge i dati inviati dal form, tipo
PHP:
<?php
//....
$mittente=$_POST['mittente'];// o cme si chiama il campo relativo
//....
var_dump($_FILES['allegato']);
//.....
require "phpmailer/class.phpmailer.php";
//......
?>

quindi o subito prima o subito dopo quell'istruzione (o serie di istruzioni) metti il var_dump che ti ho indicato
tale var_dump soprattutto per invii multipli ti evidenzia come è fatto l'invio ed in funzione poi si costruisce come passare i dati a phpmailer

i bccode sono tag per evidenziare il codice, ti faccio un esempio (attento tra [ e il tipo metto degli spazi altrimenti non si vede cosa intendo)
es. per codice php
[ PHP ] //qui scrivi il codice [ / PHP ]

es per codice HTML
[ HTML ] <b>codice</b> [ / HTML ]

es per codice generico (quale js)
[ CODE ] codice [ / CODE ]

quei [...] [/...] sono i bccode
che quando scrivi scrivi appena prima dell'inzio del codice e alla sua fine (senza spazi ovviamente)


oppure quartultima iconcina nella barra di formattazione del post inserisci -> codice nella finestra incolli il codice e selezioni il tipo
 
Ciao, ho seguito le indicazione che mi hai suggerito ma purtroppo non funziona. Te ne sarei grato se lo correggessi e integrassi tu il codice:quello che vedi è tutto quello che ho inserito.
Mi allega solo il file resoconto (che crea con le librerie di fpdf) ma non gli allegati.
Vorrei che lu allegasse entrambe.
 
ciao
ha scritto il codice php per l'invio, ma è tutto?
da quello che vedo e capisco tu ha un form html dove inserisci i dati e i files, ora questi dati e files devono essere trasmessi alla parte php che invia l'email, la parte di invio puo essere sulla stessa pagina e su una pagina diversa.
ipotizzimo due pagine diverse (ma se la stessa il problema non cambia)
una con il form (chiamata es contatti.php) e una di invio chianata es invio.php
nella pagina contatti.php avrai il form tipo, metto un campo solo
PHP:
<form action="invio.php" method="post" enctype="multipart/form-data">
tuo nome <input name="nome" type="text"><br>
<input name="invia" type="submit" name="invia">
</form>
nella pagina invio.php e semplifico al massimo
PHP:
$nome=$_POST['nome'];//leggi il dato inviato dal form
//qui poi andra il var_dump
$messaggio="mi chiamo $nome e voglio avere informazioni";
//require "phpmailler/class.phpmailer.php";//con il suo percorso
$mail = new PHPMailer();
$mail->SetLanguage('it','language/');//default è inglese
$mail->IsHTML(true); // invio l'email in formato HTML, meglio soprattutto se hai allegati
$mail->AddAddress('tuo_indirizzo@tuo_sito.it');//l'ndirizzo del destinatario
$mail->Body=$messaggio;
//qui ci sarà da processare gli allegati, come detto in funzione da quello che ti riporta il var_dump
$mail->Send();//invio dell'email e ritorno a dove vuoi
questo è uno schema, posta la tua parte di invio completa, poi ci risentiamo lunedì
 
Si anch'io faccio 2 files diversi: 1 lo chiamo modulistica.php dove costruisco il form, 2 un file invia.php dove inserisco tutte le istruzioni di invio mail comprese quelle fpdf, e che verrà richiamato con un submit con metodo POST.
Ho modificato il codice che riporto e che ti posto completo (escluso le istruzioni di fpdf)
PHP:
<?php

$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$data=$_POST['date'];
$mittente =$_POST['email'];
$oggetto = "ASSENZA DOCENTI di $cognome $nome del <$_SESSION $data>";

$messaggio ="OGGETTO: RICHIESTA FERIE DI"." ".$_POST['nome']." ". $_POST['cognome']."\r\n" . "\r\n" .
$messaggio ="Note:" . "\r\n". $_POST['testo'] . "\r\n" . "\r\n" . "\r\n" .

var_dump($_FILES['allegato']);

//....
//includiamo la classe PHPMailer
require "phpmailer/class.phpmailer.php";

$mail = new PHPMailer();
$percorso = "/fpdf.studioarlacchi.it/tmp_allegati";
$mail->setFrom = $mittente;
$mail->FromName = "$nome $cognome";
// This is the email address that the email will be sent to
$mail->AddAddress($mittente);
$mail->AddAddress("[email protected]");
$mail->AddBcc("[email protected]");
$mail->Subject = $oggetto; // Email subject
$mail->Body = $messaggio; // Email text
// queste 2 stringhe si riferiscono alla libreria fpdf che inviano in allegato il pdf riepilogativo della mail
$doc = $pdf->Output('S');
$mail->AddStringAttachment($doc,"allegati/Richiesta ferie di $nome $cognome", 'base64', 'application/pdf');

//Upload dell'allegato
move_uploaded_file($_FILES['allegato']['tmp_name'], $percorso.$_FILES['allegato']['name']);
$mail->AddAttachment($percorso.$_FILES['allegato']['name']);

if($mail->send())
{ // SE L'INOLTRO È ANDATO A BUON FINE...
    
    echo "E-mail inviata con successo!! Attendi qualche secondo e verrai reindirizzato alla pagina precedente...";
    echo "<meta http-equiv=\"refresh\" content=\"5;url=//fpdf.studioarlacchi.it/Modulistica.php\" />";

} else {// ALTRIMENTI...

echo "Si sono verificati dei problemi nell'invio della mail, riprova pù tardi. Ora verrai reindirizzato alla pagina precedente...";
echo "<meta http-equiv=\"refresh\" content=\"5;url=//fpdf.studioarlacchi.it/Modulistica.php\" />";

}
 ?>
 
Ultima modifica:
ciao
ho fatto un paio di prove usando multiple sull'input files usando questo script (eventualmente provalo a parte per capire cosa succede)
PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title>
</head>
<body>
<?php
if(isset($_POST['invia'])){
    echo "<pre>";
    var_dump($_FILES['allegato']);
    echo "<pre>";
}
/* questo è l'output del var_dump
array(5) {
  ["name"]=>
  array(3) {
    [0]=>
    string(29) "foto_1.jpg"
    [1]=>
    string(23) "foto_2.jpg"
    [2]=>
    string(22) "foto_3.jpg"
  }
  ["type"]=>
  array(3) {
    [0]=>
    string(10) "image/jpeg"
    [1]=>
    string(10) "image/jpeg"
    [2]=>
    string(10) "image/jpeg"
  }
  ["tmp_name"]=>
  array(3) {
    [0]=>
    string(27) "C:\Windows\Temp\php7762.tmp"
    [1]=>
    string(27) "C:\Windows\Temp\php7763.tmp"
    [2]=>
    string(27) "C:\Windows\Temp\php7764.tmp"
  }
  ["error"]=>
  array(3) {
    [0]=>
    int(0)
    [1]=>
    int(0)
    [2]=>
    int(0)
  }
  ["size"]=>
  array(3) {
    [0]=>
    int(46243)
    [1]=>
    int(36541)
    [2]=>
    int(207084)
  }
}
*/
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input name="allegato[]" type="file" multiple   id="allegato" />
<input name="invia" type="submit" value="invia" />
</form>
<!-- caricate 3 foto jpg-->
</body>
</html>
per prima cosa modifica il campo di input da
HTML:
<input name="allegato" type="file" multiple   id="allegato" />
a
HTML:
<input name="allegato[]" type="file" multiple   id="allegato" />
come puoi notare dai commenti la variabile $_FILES['allegato'] risulta un array di array di array cos' formato (tralascio type, size ed error)
$_FILES['allegato']['name'][0] -> il nome del primo file
$_FILES['allegato']['tmp_name'][0] -> il nome temporaneo del primo file
$_FILES['allegato']['name'][1] -> il nome del secondo file
$_FILES['allegato']['tmp_name'][1] -> il nome temporaneo del secondo file
$_FILES['allegato']['name'][2] -> il nome del terzo file
$_FILES['allegato']['tmp_name'][2] -> il nome temporaneo del terzo file
quindi per allegare si deve usare un ciclo
questo avendo caricato tre file, srebbe più corto se ne avssi caricato uno o due o più lungo se più di tre /sarà da prevedere un limite massimo)
lunedì se trovo un minuto ti posto uno schema
 
Ok. Grazie. Quello che sono riuscito a trovare è uno script di esempio della libreria phpmailer che posto di seguito... però questo non mi fa allegare il file fpd di riepilogo.

PHP:
<?php
/**
 * PHPMailer multiple files upload and send example
 */
$msg = '';
if (array_key_exists('userfile', $_FILES)) {

    // Create a message
    // This should be somewhere in your include_path
    require '../PHPMailerAutoload.php';
    $mail = new PHPMailer;
    $mail->setFrom('[email protected]', 'First Last');
    $mail->addAddress('[email protected]', 'John Doe');
    $mail->Subject = 'PHPMailer file sender';
    $mail->Body = 'My message body';
    //Attach multiple files one by one
    for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
        $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
        $filename = $_FILES['userfile']['name'][$ct];
        if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
            $mail->addAttachment($uploadfile, $filename);
        } else {
            $msg .= 'Failed to move file to ' . $uploadfile;
        }
    }
    if (!$mail->send()) {
        $msg .= "Mailer Error: " . $mail->ErrorInfo;
    } else {
        $msg .= "Message sent!";
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>PHPMailer Upload</title>
</head>
<body>
<?php if (empty($msg)) { ?>
    <form method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        Select one or more files:
        <input name="userfile[]" type="file" multiple="multiple">
        <input type="submit" value="Send Files">
    </form>
<?php } else {
    echo $msg;
} ?>
</body>
</html>

Intanto proverò questo che mi hai proposto.
 
ciao

appena prima del for con il codice per allegare i file provevienti dal form allega il tuo pdf come facevi prima

comunque una cosa importante: a parte il pdf che crei è essnziale che tu verifichi cosa ti inviano e farti inviare solo ed esclusivamente files di un determinato tipo, es. non deve essere possibile allegare file con estenzione .exe o camuffati, quindi prima di inviare devi verificarne l'estenzione e il type e convine anche verificarne la grandezza in kb
 
ciao
ecco uno schema di controllo
PHP:
//.....
//shema di controllo
$est_cons=array('jpg','png');//qui l'elenco delle tue estenzioni ammesse
$tip_cons=array('image/jpeg','application/pdf');//qui  l'elenco dei tipi ammessi
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
        $est=pathinfo($_FILES['userfile']['name'][$ct], PATHINFO_EXTENSION);//leggi l'estenzione
        $tip=pathinfo($_FILES['userfile']['type'][$ct]);//leggi il tipo e conteolli
        /*
        se vuoi controllare anche la grandeza
        $max=5000;
        $grandezza=$_FILES['userfile']['size'][$ct]:
        e aggiungi nell'if
        if(!in_array($est, $est_cons) || !in_array($tip, $tip_cons) || $grandezza>$max){....
        */
        if(!in_array($est, $est_cons) || !in_array($tip, $tip_cons)){
            //non la alleghi
            $msg .="il file ".$_FILES['userfile']['name'][$ct]." non è consentito";
        }else{
            //consentito quindi allegare
            $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
            $filename = $_FILES['userfile']['name'][$ct];
            if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
                $mail->addAttachment($uploadfile, $filename);
            } else {
                $msg .= 'Failed to move file to ' . $uploadfile;
            }
        }
    }
//.....
 
Ciao, ho provato il tuo suggerimento, anche se ancora non ho provato lo schema di controllo, e funziona divinamente.
C'è solo un problema che non riesco a risolvere: quando invio la mail senza allegato, mi ripete, a fianco del messaggio di "invio senza allegato" il precedente. Puoi dare un'occhiata ? Dove sbaglio?
PHP:
/**
 * PHPMailer multiple files upload and send example
 */
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$data=$_POST['date'];
$mittente =$_POST['email'];
$oggetto = "ASSENZA DOCENTI di $cognome $nome del <$data>";
$msg = '';
if (array_key_exists('allegati', $_FILES)) {

    // Create a message
    // This should be somewhere in your include_path
    require '../fpdf.studioarlacchi.it/phpmailer/PHPMailerAutoload.php';
    $mail = new PHPMailer;
    $mail->setFrom = $mittente;
    $mail->FromName = "$nome $cognome";
    // This is the email address that the email will be sent to
    $mail->AddAddress($mittente);
    $mail->AddAddress("[email protected]");
    $mail->AddBcc("[email protected]");
  
    $mail->Subject = $oggetto; // Email subject
    $mail->msgHTML('$msg; ');// Email text
   // queste 2 stringhe si riferiscono alla libreria fpdf che inviano in allegato il pdf riepilogativo della mail
$doc = $pdf->Output('S');
$mail->AddStringAttachment($doc,"allegati/Richiesta ferie di $nome $cognome", 'base64', 'application/pdf');
    //Attach multiple files one by one
    for ($ct = 0; $ct < count($_FILES['allegati']['tmp_name']); $ct++) {
        $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['allegati']['name'][$ct]));
        $filename = $_FILES['allegati']['name'][$ct];
        if (move_uploaded_file($_FILES['allegati']['tmp_name'][$ct], $uploadfile)) {
            $mail->addAttachment($uploadfile, $filename);
        } else {
            $msg .= "E-mail inviata con successo senza allegati!! Attendi qualche secondo e verrai reindirizzato alla pagina precedente...";
    echo "<meta http-equiv=\"refresh\" content=\"5;url=//fpdf.studioarlacchi.it/inviomultiplo.php\" />" ;
        }
    }
    if (!$mail->send()) {
        $msg .= "Mailer Error: " . $mail->ErrorInfo;
    } else {
        $msg .= "E-mail inviata con successo!! Attendi qualche secondo e verrai reindirizzato alla pagina precedente...";
        $msg .= "<meta http-equiv=\"refresh\" content=\"5;url=//fpdf.studioarlacchi.it/inviomultiplo.php\" />";
    }
}

?>
 
Ok, ok tranquillo. Aggiungo alla richiesta precedente se secondo te si può personalizzare la scritta di risposta di invio mail e se in generale si puo modificare lo sfondo...insomma l aspetto in genere.
 
ciao
scusa ma ci sono alcune cose che non capisco, all'inizio scrivi
$msg = '';
poi alcune righe dopo
$mail->msgHTML('$msg; ');// Email text
invii un messaggio vuoto?
poi per inviare un testo usa
$mail->Body=$msg;
poi nel for per gli allegati metti
$msg .= "E-mail inviata con successo senza allegati!! Attendi qualche secondo e verrai reindirizzato alla pagina precedente...";
in quel punto non c'entra l'invio dell'email eventualmente potresti indicare queli allegati sono stati caricati e quli no
e a che ti serve in quel punto il riinvio, il riinvio devi farlo dopo che verifichi se il send è avvenuto o meno.

per finire, cosa intendi per ... si può personalizzare la scritta... intendi che l'email deve essere inviata in formato html? e quindi con varia formattazione?
 
Ciao, le stringhe che hai citato sopra le ho copiate dal file di esempio di invio multiplo del.pacchetto phpmailer.
Se si possono indicare i file allegati ben venga.
Quanto all' ultima domanda la risposta è sì. Vorrei personalizzare in html
 
ciao
intanto ti metto uno schema di come procedere che è quello che uso nel mio form contatti
basandoti su questo sche e su quanto gia detto imposta il tuo invio
pagina del form
PHP:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title>
</head>
<body>
<form action="invio.php" method="post" enctype="multipart/form-data">
tuo nomenome <input name="nome" type="text" /><br />
tua email <input name="email" type="text" /><br />
oggetto <input name="oggetto" type="text" /><br />
messaggio <textarea name="testo" cols="50" rows="5"></textarea>
<!-- e altri campi di input di cui hai bisogno -->
allegati <input name="allegato[]" multiple type="file" /><br />
<input name="invia" type="submit" value="invia" />
</form>
</body>
</html>
pagina invio
PHP:
<?php
$nome=trim($_POST['nome']);
$email=trim($_POST['email']);
$oggetto=trim(strip_tags($_POST['oggetto']));
$messaggio=trim(strip_tags($_POST['oggetto'],'<p><br><br />'));
//e tutti gli altri $_POST che ti servono
/*
con strip_tags su $oggetto elimini tutti i tag html eventualmente presenti potenzialmente pericolosi
con strip_tags su $messaggio elimini tutti i tag html eventualmente presenti esclusi gli a capo
*/
//poi fai tutte le ESSENZIALI verifiche, metto una variabile a caso per farti capire
$verifica="";
//verifichi che il nome sia statao messo
if(empty($nome)){$verifica .="il nome è obbligatorio<br />";}
//verifico l'indirizzo email
if(!filter_var(filter_var($email, FILTER_SANITIZE_EMAIL), FILTER_VALIDATE_EMAIL)){$verifica .="indirizzo email non valido<br />";}
//e tutte le altre verifiche compresi gli allegati
if(!empty($verifica)){
    //la variabile $verifica NON è vuota, quindi c'è almeno un errore
    //mostri e riinvii
    echo $verifica;
    echo "tra 5 sec verrai reindirizzato al form, oppure clicca sul link";
    echo "<meta http-equiv='refresh' content='5;url=pagina_del_form.php'/>";
    echo "<a href='pagina_del_form.php'>torna</a>";
}else{
    //la variabile $verifica è vuota, non ci sono stati errori
    //qui farai i vari move_upload degli allegari
    //alla prossima come indicare quali file allegati
    //prepari il corpo del messaggio con quello che ti serve, qui ti do un esempio di colore di background
    $intestazione="<html><head>
    <style type='text/css'>
        body{background-color:#FF0;}
    </style>
    </head><body>";
    $testo_da_inviare=$intestazione.nl2br($messaggio)."<hr>";//nl2br trasforma i /n/r.. in <br>
    $testo_da_inviare.="emal inviata da $nome il ".date("d/m/Y h.i.a")."</body></html>";
    //e qui richiami la classe e la istanzi
    require_once "phpmailler/class.phpmailer.php";//attento al percorso
    $mail= new PHPmailer();
    $mail->SetLanguage('it','language/');//conviene per avewre i messaggi in italiano
    $mail->IsHTML(true); //per invio email in formato HTML
    //qui il ciclo per gli allegati
    //$mail->AddAttachment($xyz);
    //tutti gli altri $mail-> necessari destinatario, mittente, bcc...
    $mail->Body=$testo_da_inviare;
    if(!$mail->Send()){ //errore di trasmissione
          echo "errore di trasmissione, riprova più tardi";
    }else{ //invio avvenuto
          echo "email inviata con successo";
    }
    echo "tra 5 sec verrai reindirizzato alla pagina abcdef, oppure clicca sul link";
    echo "<meta http-equiv='refresh' content='5;url=abcdef.php'/>";
    echo "<a href='abcdef.php'>torna</a>";
}
?>
due cose
guarda che ho messo i nomi a caso devi verificarli coi tuoi
poi ti conviene anche la pagina con il form salvarla .php perchè se l'utente scrive molto e, esempio, dovesse sbagliare a scrivere il suo indirizzo email quando viene reindirizzato al form lo trova vuoto e deve ricominciare da capo, sarebbe opportuno che in questo caso, ritornando al form lo trovi già riempito con i valori risultati giusti
 
Ok grazie. Comunque ho fatto tutto in php:form,fpdf e invio mail.
Lo proverò, ma credo che l aspetto non di possa cambiare. Va bene lo stesso grazie.
 
ciao
cosa intendi per ma credo che l aspetto non di possa cambiare?
se invii l'email in formato html (e se chi la riceve ha il client settato per l'html) il corpo dell'email è come fosse una pagina html, esempio, se scrivi il messaggio
<b>prova</b>
chi riceve l'email vedrà
prova
analogamente se usi i css nella <head> dell'email o nel tag metti style=...

comunque si può ovviare predisponendo un testo alternativo NON in formato html
PHP:
//....
$testo_alternativo=$messaggio;//qui rimangono i vari /n/r
$testo_da_inviare=$intestazione.nl2br($messaggio)."<hr>";//qui i vari /r/n vengono trasformati in tag html
//...
$mail->Body=$testo_da_inviare;//formato html
$mail->AltBody=$testo_alternativo;//formato txt
//...
phpmailer offre la possibilita di inviarlo, se il ricevente ha il client settato per l'html vede il testo in formato html, altrimenti in semplice formato txt
 

Discussioni simili