Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie maili z załącznikiem
Forum PHP.pl > Forum > PHP
Pablo128
Tak jak w temacie.
Proszę o rzetelne odpowiedzi.
webasek
Proponuję użycie klasy

http://www.phpguru.org/downloads/html.mime.mail/

sam jej używam i sprawdza się w 100%
JoShiMa
A wystarczy poszukać:
http://forum.php.pl/index.php?showtopic=96069&hl=mail
Pablo128
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.