[PHP]Jak wysłać email z załącznikami

Odpowiedz Nowy wątek
2004-05-20 13:08
0

Witam w jaki sposób przy pomocy funkcji mail() mógłbym wysyłać maile z załącznikami ze zwykłym mailem nie ma problemu nie wiem jednak jak wysyłąć po wypelnieniu formularza na stronie maila z kilkoma załączonymi do niego zdjęciami.


Zielonym do góry

Pozostało 580 znaków

2004-05-20 19:39
0

da się, popatrze do książki i postaram się jak najszybciej ci odpowiedzieć.


Pozostało 580 znaków

2004-05-20 21:11
0

Z komentarzy manuala php:

you might want to send some attachments (mainly JPG or GIF files) or anything else generated by an HTML-form via PHP. I couldn't find anything suitable in the mailing list so here we go:

------------------------------------------------- 
$email_address = "Recievers email"; 
$email_from = "Senders email"; 
$subject = "Any subject you like!"; 
$msg = "Text message shown in email"; 
$attach_filepath = "path to existing picture files. Should be an array!"; 
------------------------------------------------- 
function xmail($email_address,$email_from,$subject,$msg,$attach_filepath) { 
       $b = 0; 
       $mail_attached = ""; 
       $boundary = md5(uniqid(time(),1))."_xmail"; 
       if (count($attach_filepath)>0) { 
           for ($a=0;$a<count($attach_filepath);$a++) { 
               if ($fp = fopen($attach_filepath[$a],"rb")) { 
                   $file_name = basename($attach_filepath[$a]); 
                   $content[$b] = fread($fp,filesize($attach_filepath[$a])); 
                   $mail_attached .= "--".$boundary."\r\n" 
                       ."Content-Type: image/jpeg; name="$file_name"\r\n" 
                       . "Content-Transfer-Encoding: base64\r\n" 
                       . "Content-Disposition: inline; filename="$file_name"\r\n\r\n" 
                       .chunk_split(base64_encode($content[$b]))."\r\n"; 
                   $b++; 
                   fclose($fp); 
               } else { 
                   echo "NEIN"; 
               } 
           } 
           $mail_attached .= "--".$boundary." \r\n"; 
           $add_header ="MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary="$boundary""; 
           $mail_content = "--".$boundary."\r\n" 
                       . "Content-Type: text/plain; charset=iso-8859-1; format=flowed\r\n" 
                       . "Content-Transfer-Encoding: 8bit\r\n\r\n" 
                       . $msg."\r\n\r\n".$mail_attached; 
           return mail($email_address,$subject,$mail_content,"From: ".$email_from."\r\n".$add_header); 
       } else { 
           return mail($email_address,$subject,$msg,"From: ".$email_from); 
       } 
} 

Pozostało 580 znaków

2005-05-15 21:10
0

To będzie chyba mało mądre pytanie, ale php zająłem się wczoraj więc wybaczcie:
Jak sprawić w php aby ankieta zrobiona w htmlu (form) poszła na maila?
Z góry THX za pomoc.

Ps: załóżmy, że ta ankieta to
<form action="plik.php" method="post"
enctype="application/x-www-form-urlencoded">

<iunput type="text" name="miasto"> <input type="checkbox" name="duże"> <input type="checkbox" name="małe"> <input type="submit" name="wyślij" value="wyślij"> </form>

Pozostało 580 znaków

2005-05-27 00:19
0

PHP ci wtedy zbedne:

<form action="b>mailto:[email protected]</b" method="post"
enctype="application/x-www-form-urlencoded">

<iunput type="text" name="miasto"> <input type="checkbox" name="duże"> <input type="checkbox" name="małe"> <input type="submit" name="wyślij" value="wyślij"> </form>

Pozostało 580 znaków

2005-05-27 08:00
0

ja tak wysyłam z załącznikiem:
pliki które chcesz załączyć w tym wypadku muszą być fotkami *.jpg i znajdować się w tablicy $pliki[];


        $head = "From: [email protected]\n";
        $head = $head . "X-Mailer: PHP\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"; 

// 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=\"iso-8859-2\"\n\n";
        $mesg = $mesg . $message . "\n"; 
        $do_rozmiar=0;
        $wyslano=count($pliki);
        for($i=0;$i<count($pliki);$i++)
        {
        $rozmiar=filesize($pliki[$i]);
        if($rozmiar>204800)
        {
        echo("<i>Nie dodano zdjęcia $plik[$i] - jego rozmiar był za duży !</i><br>");
        $wyslano=$wyslano-1;
        } else
        {
        $do_rozmiar=$do_rozmiar+$rozmiar;
        $mesg = $mesg . "\n";
        $mesg = $mesg . "--" . $boundary . "\n";    //pamiętamy dwa minusy na początku
        $mesg = $mesg . "Content-type: image/pjpeg; name=\"$plik[$i]\";\n";
        //image/pjpeg
        $file_nn="galeria/$katalog_fotek/$plik[$i]";
        $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
        $mesg = $mesg . "Content-disposition: attachment; filename=\"$plik[$i]\"\n\n";
        $mesg = $mesg . fileopenanddecode($file_nn) . "\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  
mail($email, "Fotki ze strony ****", $mesg, $head);

wystarczy zmienić typ pliku i możesz wysyłać wszystko co chcesz :]


Czasami rzeczy najprostsze są najtrudniejsze

Pozostało 580 znaków

2005-05-28 17:33
0

:-| Po co się bawić w kod. SKorzystajcie z darmowego dodatku o nazwie PHPMailer i wszystko będziecie mogli zrobić a dodatek zajmie się wszystkim :)

Pozostało 580 znaków

2005-05-28 23:27
0
prgtw napisał(a)

:-| Po co się bawić w kod. SKorzystajcie z darmowego dodatku o nazwie PHPMailer i wszystko będziecie mogli zrobić a dodatek zajmie się wszystkim :)

po co programować skoro i tak (prawie)wszystko zostało juz napisane ? ;)


<url>http://kooba.pl/</url>

Pozostało 580 znaków

2005-05-29 15:31
0
Kooba napisał(a)

po co programować skoro i tak (prawie)wszystko zostało juz napisane ? ;)

Właśnie :d idźcie na piwo [rotfl] Ale nie tak na serio: niemal wszystko już zostało napisane, ale jeżeli chcecie coś robić dla treningu swoich umiejętności to piszcie własny kod, ale jak dla realizaji konkretnego celu po co główkować. Jeżeli chcecie szybko postawić stronę WWW to korzystajcie z gotowców i na pewno będzie lepsza, bo nad gotowcami dość często pracuje kilku ludzi i ich skrypty są stabilniejsze, szybsze i bezpieczniejsze. Dobra kończę bo zaraz artykuł powstanie ;)

Pozostało 580 znaków

2005-06-10 12:24
aniem
0

No a jak dodaćdo tresci html?

Pozostało 580 znaków

2005-06-11 11:22
0
spin napisał(a)

PHP ci wtedy zbedne:

<form action="b>mailto:[email protected]</b" method="post"
enctype="application/x-www-form-urlencoded">

<iunput type="text" name="miasto"> <input type="checkbox" name="duże"> <input type="checkbox" name="małe"> <input type="submit" name="wyślij" value="wyślij"> </form> No tak nie do końca szczerze mówiąc. Dlaczego? A no dlatego, że w ten sposób to przeglądarka próbuje wysłać tego maila. Wykorzystując do tego domyślny program pocztowy. Który jeśli nie jest skonfigurowany, to nie zadziała. Ja kiedyś napisałem coś takiego do przesyłania mailem formularza z poziomu PHP. Wygląda to tak: ```php <? $address = 'tutaj adres, na który chcesz wysłać'; $subject = 'tytuł maila'; $message = 'tutaj możesz dołączyć jakiśnagłówek informujący o tym, że mail jest wysłany z formularza'."\n"; foreach($_POST as $name => $value) if(!empty($value) && ($name!='submit')) $message.=str_replace('_', ' ', $name).': '.$value."\n"; //Dodanie wszystkich pól formularza do wiadomości $header = 'From: '+'tutaj podajesz informację o tym, skąd pochodzi list (nagłówek Od albo From)';

if(mail($address, $subject, $message, $header)) header("Location: http://".$_SERVER['[...]".'index.php?page=7'); //Page nr 7 - mail suceeded
else header("Location: http://".$_SERVER['[...]".'index.php?page=8'); //Page nr 8 - mail error
//Przekierowywanie na odpowiednie strony informujące, że mail został wysłany albo nie
exit;
?>


Grunt to uziemienie...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0