Już przeglądałem tamtą dokumentację.
Może podejdźmy do problemu dokładnie.
Nie chcę ładować załącznika z aktualnie ściąganego pliku tylko z wgranego już na serwerze.
Proszę sprawdźcie co robię źle. Mam taki kod:
Kod
$nazwa=$_GET['nazwa'];
$sendto=$_POST['sendto'];
$subject=$_POST['subject'];
$message=$_POST['message'];
if(!$sendto)
{
echo '
Przesyłasz zdjęcie:<br>
<a href=zdjecie.php?nazwa='.$nazwa.'><IMG src=min/'.$nazwa.' border=0></a><br>
<form method="post" action="mail.php?nazwa='.$nazwa.'">
<table>
<tr><td>Do</td><td><input type="text" name="sendto" size=50></td></tr>
<tr><td>Temat</td><td><input type="text" name="subject" size=50></td></tr>
<tr><td>Wiadomość</td><td><textarea name="message"></textarea></td></tr>
<tr><td>Nazwa pliku</td><td><input type="text" name="filename" size=50></td></tr>
<tr><td><input type="submit" name="Submit" value="Wyślij zdjęcie"></td></tr>
</table>
</form>
';
include('include/stopka.php');
exit;
}
$login=$_SESSION['login'];
include('include/poloczenie.php');
$a=mysql_query("SELECT * FROM `uzytkownicy` where `login`='$login'");
$b=mysql_fetch_row($a);
$from=$b[3];
$replyto=$from;
$filename='galeria/'.$nazwa;
$file=$filename;
$boundary = "-->===_54654747_===<---->>4255==_";
$head = "From: $from\n";
$head = $head . "Reply-To: $replyto\n";
$head = $head . "X-Mailer: PHP\n";
$head = $head . "X-Sender: $from\n";
$head = $head . "MIME-version: 1.0\n";
$head = $head . "Content-type: multipart/mixed; ";
$head = $head . "boundary=\"$boundary\"\n";
$head = $head . "Content-transfer-encoding: 7BIT\n";
$head = $head . "X-attachments: $filename\n\n";
// Jeszcze tylko treść wiadomości i możemy słać pocztę
$mesg = "--" . $boundary . "\n"; //pamiętamy dwa minusy na początku
$mesg = $mesg . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
$mesg = $mesg . $message . "\n";
$mesg = $mesg . "--" . $boundary . "\n"; //pamiętamy dwa minusy na początku
$mesg = $mesg . "Content-type: " . $filename . "; name=\"$filename\";\n";
$mesg = $mesg . "Content-Transfer-Encoding: base64\n";
$mesg = $mesg . "Content-disposition: attachment; filename= \"$filename\"\n\n";
$mesg = $mesg . fileopenanddecode($filename) . "\n"; //czytamy plik i go kodujemy
$mesg = $mesg . "--" . $boundary . "-- \n"; //pamiętamy dwa minusy na początku i na końcu
//funkcja odczytująca plik i kodująca go d o formatu base64 zgodnie z RFC 2045
function fileopenanddecode($file) {
if (is_readable($file)) {
$fd = fopen($file, "r");
$plik = fread($fd, filesize($file));
$encoded = chunk_split(base64_encode($plik));
fclose($fd);
}
return $encoded;
}
// i to wszystko teraz tylko
if(mail($sendto, $subject, $mesg, $head))
{
echo 'Zdjęcie wraz z wiadomością zostało poprawnie wysłane.';
} else {
echo 'Wystąpił błąd podczas wysyłania pliku. Przepraszamy.';
}
Nie doszliśmy do konsensusu. Proszę o zdebugowanie tego kodu.
Dodam jeszcze, że jest on zaczerpnięty ze strony :
http://php.webhelp.pl/index.php?id=106&...php&ac=read .
Niestety jest on napisany do wysyłania maila z załącznikiem wgrywanym w formularzu . Ja chcę, żeby wysyłał załącznik wgrany wcześniej na serwer.