sono due cose diverse.

if(!mail .... ) { invio fallito come controllo di invio, mentre nel tuo script prendi per scontato il buon esito ...

la stampa e' per un tuo debug, se quello che contiene risponde alle cose attese allora saprai indirizzare altrove la ricerca dell'errore. Ma se non sai come e' interpretato cosa invii, non sai manco cosa e dove cercare il guaio.