Blog

[PHP] Inviare email con php

Oggi vediamo come inviare email dai nostri script php. L'operazione è estremamente semplice e ci permette di inviare semplici mail testuali, in formato html o con allegati.
Tutta la guida si baserà sulla funzione del php mail():

bool mail ( string a, string oggetto, string messaggio [, string header_addizionali [, string parametri_addizionali]] )

Vediamo di fare un po' di chiarezza sul significato degli argomenti:


  • string a: Qui va passato l'indirizzo email del destinatario
  • string oggetto: Qui va passato l'oggetto della mail
  • string messaggio: Qui intuitivamente andrà passato contenuto della nostra mail
  • string header_addizionali: Questo parametro opzionale permette di specificare evantuali header aggiuntivi alla mail
  • string parametri_addizionali: Con questo argomento opzionale è possibile specificare eventuali parametri aggiuntivi a sendmail (in ambiente UNIX)


Inoltre la funzione mail() ritornerà FALSE in caso di errore nell'invio o TRUE in caso di invio avvenuto.

Post image


Bene, ora che abbiamo visto i parametri della funzione mail proviamo a inviare una email:

$email = "test@mail.com";

$oggetto = "Prova invio mail";

$messaggio = "Questo è il testo della mail";



mail($email, $oggetto, $messaggio);


Questo codice alloca i parametri nelle variabili $email, $oggetto e $messaggio e le passa alla funzione mail.

Vediamo come controllare se la mail è stata inviata:



$email = "test@email.com";

$oggetto = "Prova invio mail";

$messaggio = "Questo è il testo della mail";



if( mail($email, $oggetto, $messaggio) ) echo "Mail inviata";

else echo "Mail non inviata";


Questo script stamperà nel browser se la mail è stata inviata o se ci sono stati degli errori.

Aggiungendo una intestazione (in gergo header) alla funzione è possibile visualizzare il mittente della mail e l'indirizzo dove rispondere. Nel caso in cui il mittente non è specificato, verrà mostrato quello impostato nel file php.ini

mail($email, $oggetto, $messaggio, "From: Filippo <filippo@email.com>\r\nReply-To: Marco <marco@email.com>")


Per più informazioni sugli header ammessi nelle mail leggete qui, adesso mi limiterò a spiegare quelli che ho usato.

Campo Form
Questo campo specifica il mittente o i mittenti della mail.

From: Filippo


La "sintassi" di questo campo può essere la seguente:
From: filippo@email.com
From: Filippo
From: filippo@email.com, elisa@email.com

Come si può notare è possibile specificare un nome oltre all'indirizzo email oppure concatenare più indirizzi email.


Campo Reply-To
Questo campo specifica dove rispondere alla mail.

Reply-To: Marco


La sintassi è identica al campo precedente.

Nota: è possibile concatenare più intestazioni con l'ausilio dei caratteri di controllo "\r\n", che rappresentano il ritorno a capo.



Inviare mail in formato HTML


Adesso vediamo come inviare mail in formato html, magari per renderle più accattivanti.

L'html come molti di voi sapranno non è altro che testo. Del testo un po' speciale e criptico. Sarà facilmente inseribile nella mail specificando il MIME type, una etichetta che dice al client che riceverà la mail che questa è in formato html, se no verrà mostrato il codice nudo e crudo!

Il MIME type va messo nelle intestazioni e il campo è il seguente:

MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1



Quindi adesso proviamo a generare il codice giusto:

$email = "test@email.com";

$oggetto = "Prova invio mail";



/* Per inviare email in formato HTML */

$intestazioni = "MIME-Version: 1.0\r\n";

$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";



/* Altre intestazioni... */

$intestazioni .= "From: Filippo <filippo@email.com>\r\n";



$messaggio = "<html>

<head>

 <title>La mia mail html</title>

</head>

<body bgcolor='yellow'>

 <h1>Ciao!</h1>

 <p>Questo è il contenuto della mail formattata in html</p>

</body>

</html>"
;



if( mail($email, $oggetto, $messaggio, $intestazioni) ) echo "Mail inviata";

else echo "Mail non inviata";



Email con allegati


Qui la faccenda si fa un po' più complicata, per cui consiglio di scaricarvi la classe Mail_Mime ed utilizzare quella per creare email complesse.



Risorse utili


PHP - Manuale funzione mail
PHPMailer - Altra classe per l'invio delle mail
Sending MIME e-mail from PHP

DIASPORA* Facebook

Pubblicato il 5 novembre 2007 da e letto 3830 volte.

Link di trackback

Abbonati al feed RSS. Se non sai cos'è guarda qui.

Abbonati alla newsletter per ricevere via email ogni nuovo articolo pubblicato. L'indirizzo verrà gestito da FeedBurner.

Dai il tuo parere: Commenta questo articolo!
1 commenti su [PHP] Inviare email con php
  1. Smithe8 dice:

    Hey, you used to write amazing, but the last couple of posts have been kinda boring I miss your tremendous writings. Past couple of posts are just a little out of track! come on! ccdeeddeddefgcge

    martedì, 30 settembre 2014 alle 15:42
Lascia un commento

CC BY-NC-SA 3.0 2004-2012 Daniele Napolitano — Per informazioni sulla licenza leggere le Note legali
Torna su