perchè lo metti in sessione? è proprio necessario?

Comunque il metodo MsgHTML cerca probabilmente con qualche regex di estrarre la controparte testuale della tua mail, e sembra che $_SESSION['mail'] contenga un oggetto e non una stringa.

Non è che sul tuo server hai le register_globals a on?

Perchè vedendo il tuo codice la variabile $mail è l'istanza dell'oggetto phpmailer.

Prova a mettere il tutto in $_SESSION['testo_mail'].

Comunque rinnovo la domanda, è davvero necessario mettere in sessione la variabile?

ciao