Io so mandare un'email col php con allegato, e infatti arriva correttamente. Però, io, non voglio che per inserire l'allegato si debba usare il bottone "Scegli file" (<input type="file .....), ma che venga usato un testo (<input type="text">), dove si possa inserire l'indirizzo sul pc dell'allegato che si vuole spedire e che cosi in questo modo venga inviata l'email normalmente.
Ecco il codice che uso:
<?php
if (isset($_POST["submit"])){
$a = $_POST['a'];
$da = $_POST['da'];
$ogg = $_POST['obj'];
$testo = $_POST['testo'];
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato]['type'];
$allegato_name = $_FILES['allegato']['name'];
$intestazioni = "From: " . $da;
$messaggio = "";
if (is_uploaded_file($allegato))
{
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
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: allegato;\n";
$messaggio .= " filename=\"{$allegato_name}\"\n";
$messaggio .= "Content-Transfer-Encoding: base64\n\n";
$messaggio .= $data . "\n\n";
$messaggio .= "--{$boundary}--\n";
}
else{
$messaggio = $testo;
}
if (mail($a, $ogg, $messaggio, $intestazioni))
{
echo "Messaggio inviato con successo.";
}else{
echo "Si è verificato un errore nell'invio.";
}
}else{
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>"
method="POST" enctype="multipart/form-data">
Destinatario:
<input type="text" name="a">
Mittente:
<input type="text" name="da">
Oggetto:
<input type="text" name="ogg">
Messaggio:
<textarea name="testo"></textarea>
Allega file:
<input type="file" name="allegato">
<input type="submit" name="submit" value="Invia" />
</form><?
}
?>