Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Inviare e-mail con allegato in PHP :: Indice Php


Inviare e-mail con allegato in PHP

Categoria: Php Inserito il: 29-05-2007 Stampa (24775 click)

In questo articolo presenteremo uno script che consente di inviare e-mail complete di allegato tramite il classico sistema form to mail, in pratica creeremo uno script costituito da due parti: una relativa al form per l'inserimento dei dati (destinatario, mittente, oggetto, testo e allegato), l'altra relativa al codice dinamico che si occuperà di raccogliere i parametri e di inviarli al destinatario sotto forma di messaggio di posta elettronica.

Ecco il codice della nostra piccola applicazione:

<?php
if (isset($_POST["submit"])){
$a = $_POST['a'];
$da = $_POST['da'];
$obj = $_POST['obj'];
$testo = $_POST['testo'];

  $attachment = $_FILES['attachment']['tmp_name'];
  $attachment_type = $_FILES['attachment']['type'];
  $attachment_name = $_FILES['attachment']['name'];
  
$intestazioni = "From: " . $da;
  $messaggio = "";

if (is_uploaded_file($attachment))
  {
  $file = fopen($attachment,'rb');
  $data = fread($file, filesize($attachment));
  fclose($file);
  $data = chunk_split(base64_encode($data));
  $rand = md5(time());
  $boundary = "==Multipart_Boundary_x{$rand}x";
  
  $intestazioni .= "\nMIME-Version: 1.0\n";
  $intestazioni .= "Content-Type: multipart/mixed;\n";
  $intestazioni .= " boundary=\"{$boundary}\"";
  
  $messaggio .= "This is a multi-part message in MIME format.\n\n";
  $messaggio .= "--{$boundary}\n";
  $messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
  $messaggio .= $testo . "\n\n";
  $messaggio .= "--{$boundary}\n";
  $messaggio .= "Content-Disposition: attachment;\n";
  $messaggio .= " filename=\"{$attachment_name}\"\n";
  $messaggio .= "Content-Transfer-Encoding: base64\n\n";
  $messaggio .= $data . "\n\n";
  $messaggio .= "--{$boundary}--\n";
  }
  else{
  $messaggio = $testo;
 }

if (mail($a, $obj, $messaggio, $intestazioni))
  {
  echo "Messaggio inviato con successo.";
  }else{
  echo "Si &egrave; verificato un errore nell'invio.";
  }
 }else{
  ?>

<form action="<? echo $_SERVER['PHP_SELF']; ?>" 
  method="POST" enctype="multipart/form-data">
  Destinatario:
<input type="text" name="a"><br>
  Mittente:
<input type="text" name="da"><br>
  Oggetto:
<input type="text" name="obj"><br>
  Messaggio:
<textarea name="testo"></textarea><br>
  Allega file:
<input type="file" name="attachment"><br>
<input type="submit" name="submit" value="Invia" />
</form><?
  }
?>

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle pił importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Claudio Garau Twittter Claudio Garau Linkedin Claudio Garau Facebook Claudio Garau Google Plus
Tutte le categorie
Tutorial Random
Creazione delle gerarchie e inserimento dei dati
Una volta creato il nostro database, generate le relative tabelle e popolate queste ultime con i campi necessari, il passo... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti