Tutorial: come inviare email con PHP

tutorial-inviare-mail-in-php

 

Per poter inviare email con PHP e’ necessario avere a disposizione un server email. Chi lavora in ambiente Linux o UNIX probabilmente gia’ dispone di sendmail installato. Chi usa un servizio hosting condiviso, deve informarsi presso il proprio provider per sapere se usa sendmail o un programma simile. Per chi non usa sendmail o chi usa Apache sotto Windows, ci sono due possibilita’:

1. usare il proprio servizio STMP

2. installare un server email come Mailtraq

Una volta che il server email e’ disponibile e funzionante, occorre modificare alcuni parametri nel file php.ini. Naturalmente se si sta usando un servizio hosting condiviso, il provider dovrebbe gia’ aver attivato i seguenti parametri:

SMTP: assegnare a questo parametro l’indirizzo IP o il nome DNS del server SMTP

SMTP_PORT: definisce la porta usata da PHP per la connessione al server SMTP

SENDMAIL_FROM: indirizzo dal quale vogliamo inviare le email

SENDMAIL_PATH: il percorso del programma sendmail ( di solito usr/sbin/sendmail)

SMTP e SMTP_PORT si applicano solo sotto Windows, mentre il parametro SENDMAIL_PATH si applica solo sotto Linux.

Questo e’ quanto occorre per configurare PHP affinche’ possa inviare email.

Passiamo adesso ad analizzare come si inviano le email in PHP.

INVIO DI EMAIL

Il sistema che consente di inviare email e’ piuttosto semplice, anche se puo’ diventare estremamente complesso inviare codice HTML e immagini. Iniziamo con un esempio semplice. Apriamo il nostro editor di testo preferito e scriviamo:


<?php;

mail('hello@iwebdesigner.it','Ciao a tutti','Ciao, questa e' una semplice email di prova!)';

?>

Salviamo questo file col nome firstmail.php e carichiamolo sul nostro browser. Si dovrebbe vedere una pagina bianca e in poco tempo dovremmo ricevere una mail all’indirizzo che abbiamo inserito come primo parametro di mail().

Vediamo adesso come funziona. La funzione mail() invia automaticamente una email, col seguente schema:

mail( indirizzo_destinatario, oggetto, messaggio, intestazione, altri_parametri)

Se si desidera inviare mail a piu’ destinatari, nel parametro indirizzo_destinatario occorre inserire i diversi indirizzi separati da virgole.

Esempio:

mail (‘hello@iwebdesigner.it, magoo@creoxdesign.com, tua@mail.it’, ‘ciao’,’prova di invio’)

Semplice, vero?

Adesso vogliamo creare due tipi di file. Il primo chiamato postcard.php che e’ un form che raccoglie i dati delle email prima dell’invio e l’altro chiamato sendmail.php che invia realmente il messaggio usando i dati inseriti nel postcard.

Apriamo sempre il nostro editor di testo e scriviamo:


<html>

<head>

<title>Inserisci i dati della email</title>

<style type="text/css">

td { vertical-align: top;}

</style>

</head>

<body>

<form method="post" action="sendmail.php">

<table>

<tr>

<td>A:</td>

<td><input type="text" name="to_address" size="40"/></td>

</tr><tr>

<td>Da:</td>

<td><input type="text" name="from_address" size="40"/></td>

</tr><tr>

<td>Oggetto:</td>

<td><input type="text" name="oggetto" size="40"/></td>

</tr><tr>

<tdvalign="top">Messaggio:</td>

<td><textarea cols="60" row="10" name="message">Scrivi il tuo messaggio.</textarea></td>

</tr><tr>

<td></td>

<td>

<input type="invia" value="INVIA"/>

<input type="reset" value="RESETTA"/>

</td>

</tr>

</table>

</form>

</body>

</html>

Salvare questo file col nome postcard.php. Questo file non contiene nessun codice PHP, ma si limita a raccogliere le informazioni in un modulo HTML.

Adesso creiamo un nuovo documento e scriviamo il seguente codice:

</pre>
<?php

$to_address = $_POST['to_address']

$from_address = $_POST['from_address']

$oggetto = $_POST['oggetto']

$messaggio = $_POST['messaggio']

$headers ='da: ' .$from_address . " \r\n";

?>

<html>

<head>

<title>Mail Inviata!</title>

</head>

<body>

<?php

$success = ($to_address, $oggetto, $messaggio, $headers);

if ($success) {

echo '<h1>Congratulazioni!</h1>';

echo '<p>Il messaggio e' stato inviato:<br/><br/>';

echo '<b>a:</b> ' . $to_address . '<br/>';

echo '<b>da:</b> ' . $from_address . '<br/>';

echo '<b>Oggetto:</b> ' . $oggetto . '<br/>';

echo '<b>Messaggio:</b> </p>';

echo nl2br ($messaggio);

} else {

echo '<p><strong> Questo messaggio non e' stato inviato.</strong></p>';

}

?>

</body>

</html>

Scritto tutto questo, salviamo il file col nome sendmail.php. Questa seconda pagina prende i valori inseriti nella prima pagina e li invia in un email.

Caricare nel browser la prima pagina, postcard.php, quindi inserire alcuni dati, fare click su invia e apparira’ la seconda pagina col messaggio dell’invio mail.

Aprite il vostro indirizzo mail e vedrete che vi e’ arrivata la mail.

COME FUNZIONA

Quando si preme il pulsante invia sul modulo postcard.php, viene caricato il file sendmail.php. Il primo passaggio nel codice PHP assegna a delle variabili tutti i campi che provengono da postcard.php. La funzione mail () restituisce il valore true se ha funzionato correttamente, altrimenti restituisce false. Nel primo caso viene visualizzato il messaggio di congratulazioni, nel secondo il messaggio di errore.

Questo e’ tutto per quanto riguarda l’invio di email in PHP di solo testo.

Alla prossima!

Scritto da Magoo

Magoo

Web Developer & Mobile Developer, Game Lover insomma un Nerd.
Co-founder Iwebdesigner.it, Nerdzhouse SRL.
Prendo a schiaffi la tastiera fino a quando non succede qualcosa di buono.

COMMENTA

Loading Disqus Comments ...
Loading Facebook Comments ...

ommenti

Lascia una risposta
  1. Ciao
    stai attento quando usi ” e’ “… l’accento ” ‘ ” non ti va in conflitto con l’apice singolo di inizio frase/echo? Meglio mettere ” \’ ” ^^

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *