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 (25496 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.
Tutte le categorie
Tutorial Random
Funzioni PHP per Apache III
Concludiamo questa breve serie di articoli dedicati alle funzioni native di PHP per il Web server Apache descrivendo tre costrutti... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti