invio mail con allegati

giomod

Nuovo Utente
26 Mag 2006
2
0
0
Ciao a tutti, premetto che sono un novizio in php quindi scusate se faro' domande per voi banali.

Sto usando un tutorial trovato qui a mrwebmaster, per inviare tramite form delle mail con allegato.
Funziona tutto perfettamente solo che l'allegato, oltre a essere presente come attachment da salvare sul proprio cpu, viene anche visualizzato (come codice binario, credo) nel body della mail. La mail che mi arriva è quindi formata dal msg di testo vero e proprio, un separatore, e poi il listato (a volte chilometrico) dell'allegato.

E' possibile inviare l'allegato senza pero' farlo comparire nel body?

Lo script php è il seguente:

PHP:
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$mittente = $_POST['mittente'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];

// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];

// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";

// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($allegato))
{
  // Apro e leggo il file allegato
  $file = fopen($allegato,'rb');
  $data = fread($file, filesize($allegato));
  fclose($file);

  // Adatto il file al formato MIME base64 usando base64_encode
  $data = chunk_split(base64_encode($data));

  // Genero il "separatore"
  // Serve per dividere, appunto, le varie parti del messaggio.
  // Nel nostro caso separerà la parte testuale dall'allegato
  $semi_rand = md5(time());
  $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
  
  // Aggiungo le intestazioni necessarie per l'allegato
  $headers .= "\nMIME-Version: 1.0\n";
  $headers .= "Content-Type: multipart/mixed;\n";
  $headers .= " boundary=\"{$mime_boundary}\"";

  // Definisco il tipo di messaggio (MIME/multi-part)
  $msg .= "This is a multi-part message in MIME format.\n\n";

  // Metto il separatore
  $msg .= "--{$mime_boundary}\n";

  // Questa è la parte "testuale" del messaggio
  $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  $msg .= "Content-Transfer-Encoding: 7bit\n\n";
  $msg .= $messaggio . "\n\n";

  // Metto il separatore
  $msg .= "--{$mime_boundary}\n";

  // Aggiungo l'allegato al messaggio
  $msg .= "Content-Disposition: attachment;\n";
  $msg .= " filename=\"{$allegato_name}\"\n";
  $msg .= "Content-Transfer-Encoding: base64\n\n";
  $msg .= $data . "\n\n";

  // chiudo con il separatore
  $msg .= "--{$mime_boundary}--\n";
}
else
{
  $msg = $messaggio;
}

// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
{
  echo "<p>Mail inviata con successo!</p>";
}else{
  echo "<p>Errore!</p>";
}

grazie a tutti
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Invio mail con allegati multipli PHP 0
R Invio mail con allegati da directory PHP 1
G Invio mail con php da dati prelevati da un database PHP 9
A [PHP] Problema invio mail con funzione mail() PHP 3
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
G Invio Mail con PHPMailer, problemi SMTP PHP 7
Z Limite invio newsletter con PHP - mail() PHP 4
F Invio Mail con Javascript Javascript 25
P invio mail da form con dati php PHP 7
S Form invio mail html, con invio tramite file denominato invio.php PHP 8
asevenx link cliccabile che non funziona con invio mail PHP 1
M Invio mail con destinatari da mysql con inserimento di nome e cognome PHP 6
I [Risolto] Problemi invio e-mail con CDOSYS con domini @live.it Classic ASP 4
L Form con invio mail PHP 1
P Invio multiplo mail con phpmailer PHP 5
E Form invio e-mail con allegato PHP 51
E Form invio e-mail con allegato PHP 0
M Invio e mail al destinatario con invio di una copia al mittente PHP 35
A invio mail con php PHP 6
N Form invio Mail con Allegato PHP 2
C problema invio mail con form php PHP 0
V Invio E-Mail con la notifica degli ordini effettuati PHP 2
neo996sps Errore con script per invio mail PHP 3
D For invio mail-allegato con smtp PHP 9
L Problema invio allegati via mail con libero PHP 5
V Problema con l'invio delle mail in locale (usando quindi easy php) PHP 16
S form invio mail con foto o logo PHP 46
Angel0 Problema invio e-mail (era: problemi con xoom) Posta Elettronica 4
SolidSnake4 invio mail html con php non va PHP 6
S form invio mail con opzioni PHP 3
B Problema invio mail con script php verso i dominii libero PHP 9
L invio mail con CreateMHTMLBody Classic ASP 2
T Invio mail da form contatti con annesso file attachment Classic ASP 1
L Problemi con invio form via mail Classic ASP 3
F Implementare l'invio mail con allegato PHP 1
F script asp invio mail con dati di un form Classic ASP 3
M il loop per l'invio mail con CDOSYS ad un tratto non funziona più Classic ASP 1
H ASPMail - Invio di mail html con variabili Classic ASP 5
E Errore invio mail con CDO Classic ASP 4
X Invio mail con allegati PHP 11
A problema con invio e-mail con CDONTS Classic ASP 0
V problema con invio mail Hosting 2
M telecamera Foscam - mancato invio mail ad account gmail IP Cam e Videosorveglianza 0
Daniele_Carrara Problema timeout - invio mail PHP 7
U PHP bottone per invio mail o ritorno al form PHP 15
AC1 [PHP] Invio Mail PHP 18
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
paloppa [PHP] Invio mail da form dubbio PHP 17
F Form mail php errore invio PHP 5
Punix [PHP] problema script invio e-mail PHP 2

Discussioni simili