Funzione mail() in PHP

Definizione e uso

La funzione mail() ti permette di inviare email direttamente dallo script.

Se la consegna dell'email viene accettata con successo, viene restituito true, altrimenti false.

Sintassi

mail(to,subject,message,headers,parameters)
Parametro Descrizione
to Obbligatorio. Specifica il destinatario dell'email.
subject Obbligatorio. Specifica l'oggetto dell'email. Questo parametro non può contenere caratteri di nuova riga.
message Obbligatorio. Specifica il messaggio da inviare.
headers Obbligatorio. Specifica intestazioni aggiuntive come From, Cc e Bcc.
parameters Obbligatorio. Specifica i parametri aggiuntivi del programma sendmail.

Spiegazione

In message I parametri specificati devono essere separati da un LF (\n) tra le righe. Ogni riga non può superare i 70 caratteri.

(Sotto Windows) Quando PHP si connette direttamente al server SMTP, se viene trovato un punto alla fine di una riga, viene eliminato. Per evitare questo problema, sostituisci il punto singolo con due punti.

<?php
$text = str_replace("\n.", "\n..", $text);
? >

Suggerimenti e commenti

Commento:Ricorda che l'accettazione della consegna dell'email non significa necessariamente che l'email sia arrivata a destinazione.

Esempio

Esempio 1

Inviare una email semplice:

<?php
$txt = "First line of text\nSecond line of text";
// Se una riga supera i 70 caratteri, utilizzare wordwrap().
$txt = wordwrap($txt,70);
// Inviare email
mail("somebody@example.com","My subject",$txt);
? >

Esempio 2

Inviare un'email con intestazioni aggiuntive:

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";
mail($to,$subject,$txt,$headers);
? >

Esempio 3

Invia una email HTML:

<?php
$to = "somebody@example.com, somebodyelse@example.com";
$subject = "Email HTML";
$message = "
<html>
<head>
<title>Email HTML</title>
</head>
<body>
<p>Questa email contiene tag HTML!</p>
<table>
<tr>
<th>Nome proprio</th>
<th>Nome</th>
</tr>
<tr>
<td>Bill</td>
<td>Gates</td>
</tr>
</table>
</body>
</html>
";
// Quando si invia un'email HTML, è sempre necessario impostare il content-type
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
// Più intestazioni
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";
mail($to,$subject,$message,$headers);
? >