Główna| Portal| Dyskusja| Współpraca| Galerie| Informacje| Rozrywka| Technika 16 Styczeń 2018 - 16:26
Nawigacja
Menu Główne
Portal
Dyskusja
Współpraca
Galerie
Informacje
Rozrywka
Dział Techniczny
Trafione w Galerii
mewa po obrobce
mewa po obrobce
Album Dobrego
Kto jest Online
Gości Online: 5
Brak Użytkowników Online

Zarejestrowanch Użytkowników: 1,829
Najnowszy Użytkownik: romeomikolaj
orzeszek 5 dni
bogdanroland 5 dni
gerardanatolia 5 dni
lunagracja 5 dni
wandamilo 5 dni
dobromilaliwi 5 dni
mirellajezyna 5 dni
Semantyk_33 1 tydzień
insta_gram 1 tydzień
tolanina 2 tygodni

Posłuchaj..
Wybierz i kliknij "Graj"
Wspierają Nas



Zobacz pełną listę..

Pomóżmy!
_blank

Wysyłanie maila z załącznikiem.
themes dnia 19 sierpień 2005 - 12:31:46
Definicja funkcji wysyłającej poczte:

bool mail(string to, string subject, string message [, string additional_headers])

W przypadku gdy wysyłamy pocztę z załącznikiem pierwsze dwa parametry funkcji pozostają bez zmian i są to:
to - adres odbiorcy
subject - temat wiadomości

ulegają zmianie natomiast dwa pozostałe parametry.

Najpierw omówię ostatni parametr wtedy łatwiej zrozumieć trzeci

Additional_heades - umiesczamy tam dodatkowe informacje dla nagłówka wysyłanej poczty i mogą to być:

From: - od kogo list
Reply-To: - do kogo odpowiedzieć
X-Mailer: - program wysyłający pocztę
X-Sender: - podobnie jak wyżej
MIME-version: - numer wersji MIME
Content-type: - typ wysyłanych danych w poczcie i definicja ogranicznika
Content-transfer-encoding: - sposób zakodowania plików
X-attachments: - lista plików

W przypadku załączników istotne są cztery ostatnie.

MIME-version: 1.0 - określamy numer wersji MIME na 1.0
Content-type: multipart/mixed; oundary="-->===_54654747_===<---->>4255==_" - typ MIME danych wysyłanych pocztą jest multipart/mixed czyli list składa się z wielu wiadomości o różnych typach MIME i są one podzielone ciągiem znaków -->===_54654747_===<---->>4255==_
Content-transfer-encoding: 7BIT - dane przesyłane pocztą są zakodowane znakami siedmiobitowymi
X-attachments: apache_pb.gif; - lista załączonych plików

message - w tym parametrze funkcji mail musimy przekazać wszystkie części wiadomości określając ich typ MIME. Oddzielamy je ogranicznikiem zdefiniowanych w boundary

---->===_54654747_===<---->>4255==_ //początek wiadości

//typ wiadomości (text) i
// sposób kodowania znaków
Content-Type: text/plain; charset="iso-8859-2"
test //treść
---->===_54654747_===<---->>4255==_ //odddzielenie

Content-type: image/gif; name="apache_pb.gif"; //typ wiadomości

Content-Transfer-Encoding: base64 //sposób zakodowania pliku

Content-disposition: attachment; filename="apache_pb.gif"
//mówi że to jest załącznik
//oraz jaka jest oryginalna nazwa pliku

...
... // tu znajduje się zawartość pliku
...

---->===_54654747_===<---->>4255==_ -- //koniec wiadomości


W message ogranicznik wiadomości (boundary) jest rozszerzony na początku dwoma znakami - (minus) oraz dodatkowo koniec wiadomości ma jeszcze dwa znaki - (minus) na końcu

Tyle teorii przejdźmy do implementacji funkcji formatującej w ten sposób nagłówek i wiadomość.

Tworzymy sobie formularz zawierający pola: subject, sendto, from, replyto, message, filename


<form name="form1" method="post" action="sendmail.php"
enctype="multipart/form-data"
>


<table width="300"
border="0" cellspacing="0" cellpadding="0"
color="#0000FF">>


<tr color="#0000FF">>< color="#900000">td>subject color="#0000FF"></td color="#0000FF">>< color="#900000">td> color="#0000FF"><input type="text"
name="subject"
> color="#0000FF"></td color="#0000FF">></ color="#900000">tr>


<tr color="#0000FF">>< color="#900000">td>replayto color="#0000FF"></td color="#0000FF">>< color="#900000">td> color="#0000FF"><input type="text"
name="replayto"
> color="#0000FF"></td color="#0000FF">></ color="#900000">tr>


<tr color="#0000FF">>< color="#900000">td>from color="#0000FF"></td color="#0000FF">>< color="#900000">td> color="#0000FF"><input type="text"
name="from"
> color="#0000FF"></td color="#0000FF">></ color="#900000">tr>


<tr color="#0000FF">>< color="#900000">td>sendto color="#0000FF"></td color="#0000FF">>< color="#900000">td> color="#0000FF"><input type="text"
name="sendto"
> color="#0000FF"></td color="#0000FF">></ color="#900000">tr>


<tr color="#0000FF">>< color="#900000">td>message color="#0000FF"></td color="#0000FF">>< color="#900000">td> color="#0000FF"><textarea name="message"
wrap="VIRTUAL"
> color="#0000FF"></textarea color="#0000FF">></ color="#900000">td> color="#0000FF"></tr color="#0000FF">>


<tr color="#0000FF">>< color="#900000">td>filename color="#0000FF"></td color="#0000FF">>< color="#900000">td> color="#0000FF"><input type="file"
name="filename"
> color="#0000FF"></td color="#0000FF">></ color="#900000">tr>


<tr color="#0000FF">>< color="#900000">td colspan="2"> color="#0000FF"><input type="submit"
name="Submit" value="Submit"
> color="#0000FF"></td color="#0000FF">></ color="#900000">tr>


</table color="#0000FF">>


</form color="#0000FF">>



W pliku sendmail.php obsługującym formularz definiujemy zmienną ograniczającą poszczególne pliki



<?php

$boundary 
color="#DD0000">"-->===_54654747_===<---->>4255==_"
color="#007700">;



color="#FF8000">// Zmiennych $subject i $sendto nie
 musimy w żaden sposób przerabiać.



// Teraz trzeba sformatować nagłówek.



         color="#0000BB">$head  color="#DD0000">"From: $from\n color="#DD0000">";

        
color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"Reply-To: $replyto color="#007700">\n" color="#007700">;

         color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"X-Mailer: PHP\n";

        
color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"X-Sender: $from color="#007700">\n" color="#007700">;

         color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"MIME-version: 1.0\n";

        
color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"Content-type: multipart/mixed; " color="#007700">;

         color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"boundary=\" color="#DD0000">$boundary\"\n color="#DD0000">";

        
color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"Content-transfer-encoding: 7BIT\n" color="#007700">;

         color="#0000BB">$head  color="#0000BB">$head  color="#DD0000">"X-attachments: $filename_name; color="#007700">\n\n" color="#007700">;



color="#FF8000">// Jeszcze tylko tre¶ć wiadomo¶ci i
 możemy słać pocztę 



         color="#0000BB">$mesg  color="#DD0000">"--"  color="#0000BB">$boundary  color="#007700">. "\n" color="#007700">;     color="#FF8000">//pamiętamy dwa minusy na pocz±tku

         color="#0000BB">$mesg  color="#0000BB">$mesg  color="#DD0000">"Content-Type: text/plain; charset=\"us-ascii\"\n\n";

        
color="#0000BB">$mesg  color="#0000BB">$mesg  color="#0000BB">$message  color="#007700">. "\n" color="#007700">;

     color="#0000BB">    $mesg  color="#0000BB">$mesg  color="#DD0000">"--"  color="#0000BB">$boundary  color="#007700">. "\n" color="#007700">;     color="#FF8000">//pamiętamy dwa minusy na pocz±tku

        
$mesg  color="#0000BB">$mesg  color="#DD0000">"Content-type: "  color="#007700">.  color="#0000BB">$filename_type   color="#007700">.  color="#DD0000">"; name=\" color="#DD0000">$filename_name\" color="#DD0000">;\n color="#DD0000">" color="#007700">;        

         color="#0000BB">$mesg  color="#0000BB">$mesg  color="#DD0000">"Content-Transfer-Encoding: base64\n" color="#007700">;

         color="#0000BB">$mesg  color="#0000BB">$mesg  color="#DD0000">"Content-disposition: attachment; filename=
\" color="#DD0000">$filename_name color="#007700">\"\n\n" color="#007700">;

         color="#0000BB">$mesg  color="#0000BB">$mesg  color="#0000BB">fileopenanddecode( color="#0000BB">$filename color="#007700">) . "\n" color="#007700">;    color="#FF8000">//czytamy plik i go kodujemy

         color="#0000BB">$mesg  color="#0000BB">$mesg  color="#DD0000">"--"  color="#0000BB">$boundary  color="#007700">. "-- \n" color="#007700">;  color="#FF8000">//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

     color="#007700">function  color="#0000BB">fileopenanddecode( color="#0000BB">$file) {

        if (
color="#0000BB">is_readable( color="#0000BB">$file)) {

            
$fd  color="#007700">= fopen color="#007700">($file color="#007700">, "r" color="#007700">);

            
$plik  color="#007700">= fread color="#007700">($fd color="#007700">, filesize color="#007700">($file color="#007700">));

            
$encoded  color="#007700">= chunk_split color="#007700">(base64_encode color="#007700">($plik color="#007700">));

            
fclose color="#007700">($fd color="#007700">);    

        }

        return  color="#0000BB">$encoded;

    }



color="#FF8000">// i to wszystko teraz tylko 

mail color="#007700">($sendto color="#007700">, $subject color="#007700">, $mesg color="#007700">, $head color="#007700">); 

//i poszło

?>






Problemy.
W przykładzie plik najpierw wysyłaliśmy formularzem a dopiero potem pocztą dzięki czemu mieliśmy automatycznie typ MIME pliku z małym wyjątkiem. W przypadku gdy używamy Netscape i chcemy przez formularz wysłać plik o nieznanym typie MIME zmienna $filename_type jest pusta. W IE przyjmowany jest typ MIME "application/octet-stream". Jeśli będziemy wysyłać plik, który znajduje się na serwerze musimy sami zadbać o rozpoznanie typu MIME pliku i przypisać go do odpowiedniej zmiennej.


Artykuł pochodzi ze strony: themes.gaa.pl
Autor: JA
2 Komentarzy ˇ 2821 Czytań ˇ Drukuj
Komentarze
Divine JazOOn dnia 19 sierpień 2005 - 15:36:57
o kurde ale artykuł? chcesz pobić rekord świata w długości bocznego suwaka?
Pieka dnia 23 sierpień 2005 - 13:34:00
smiley I co powiesz Daniel? Dobry jest, nie? smiley
Dodaj komentarz
Zaloguj się, żeby móc dodawać komentarze.
Oceny
Dodawanie ocen dostępne tylko dla zalogowanych Użytkowników.

Proszę się zalogować lub zarejestrować, żeby móc dodawać oceny.

Brak ocen.
Strona Główna ˇ Download ˇ Artykuły ˇ Forum ˇ Szukaj
8189303 Unikalnych Wizyt
Powered by PHP-Fusion 2003-2007 and Matonor.de
Polecamy: | Katalog SEO Pieka |