Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dwa załączniki w emailu - jak dodać drugi?
Forum PHP.pl > Forum > PHP
id4
Witam.

Na początku pisz , że szukałem na forach i nie znalazłem rozwiązania mojego problemu, choć może wydawać się on bardzo prosty do rozwiązania.
Chcę zrobić formularz do wysyłania @, ale z dwoma załącznikami. Wszędzie znajdywałem jedynie rozwiązania dla jednego załącznika. Napisałem coś takiego (oczywiście to tylko flagment całego kodu który pobiera o koduje załączniki):

[php:1:4af7c6e6c6]<?php
$filecv=fopen($cv,"r");
$contentscv=fread($filecv,$cv_size);
$encoded_attachcv=chunk_split(base64_encode($contentscv));
fclose($filecv);

$filezdjecie=fopen($zdjecie,"r");
$contentszdjecie=fread($filezdjecie,$zdjecie_size);
$encoded_attachzdjecie=chunk_split(base64_encode($contentszdjecie));
fclose($filezdjecie);

$headers.="Content-type: multipart/mixed; ";
$headers.="boundary="Message-Boundary"n";
$headers.="Content-transfer-encoding: 7BITn";
$headers.="X-attachments: $cv_name";
$headers.="X-attachments: $zdjecie_name";

$top="--Message-Boundaryn";
$top.="Content-type: text/html; charset=iso-8859-2n";
$top.="Content-transfer-encoding: 7BITn";
$top.="Content-description: Mail message bodynn";

$bottom="nn--Message-Boundaryn";
$bottom.="Content-type: $cv_type; name="$cv_name"n";
$bottom.="Content-Transfer-Encoding: BASE64n";
$bottom.="Content-disposition: attachment; filename="$cv_name"nn";
$bottom.="$encoded_attachcvn";
$bottom.="--Message-Boundary--n";

$bottom.="nn--Message-Boundaryn";
$bottom.="Content-type: $zdjecie_type; name="$zdjecie_name"n";
$bottom.="Content-Transfer-Encoding: BASE64n";
$bottom.="Content-disposition: attachment; filename="$zdjecie_name"nn";
$bottom.="$encoded_attachzdjecien";
$bottom.="--Message-Boundary--n";

?>[/php:1:4af7c6e6c6]

Z forma podaję 2 pliki: $cv i $zdjecie. Mój problem polega na tym, iż do listu dołączony jest jeden załącznik, a nie dwa - to znaczy w źródle emaila jest ten dwugi zakodowany załącznik, ale nie ma go na liście do bezpośredniego pobrania. Bardzo proszę o pomoc.
G. Skaruz
Skorzystać z gotowej klasy, htmlMimeMail na phpclasses.org
FiDO
Ewentualnie stworzyc maila z 2 zalacznikami w Twoim kliencie pocztowym, umiescic w elementach do wyslania, podgladnac i przeanalizowac zrodlo.
id4
Witam ponownie.
Sprawa załatwiona - głównie przez jedną linię w kodzie (zaremowana). Reszta kodu działa poprawnie dla dwuch załączników, które potrzebowałem. Po rozbudowaniu kodu i zabezpieczeniu formularza (np. zgłoszeniowego) można zbudować niezłe narzędzie z nieograniczoną liczbą załączników itp.
[php:1:f09f3e79f7]<?php
$filecv=fopen($cv,"r");
$contentscv=fread($filecv,$cv_size);
$encoded_attachcv=chunk_split(base64_encode($contentscv));
fclose($filecv);

$filezdjecie=fopen($zdjecie,"r");
$contentszdjecie=fread($filezdjecie,$zdjecie_size);
$encoded_attachzdjecie=chunk_split(base64_encode($contentszdjecie));
fclose($filezdjecie);

$headers.="Content-type: multipart/mixed; ";
$headers.="boundary="Message-Boundary"n";
$headers.="Content-transfer-encoding: 7BITn";
$headers.="X-attachments: $cv_name";
$headers.="X-attachments: $zdjecie_name";

$top="--Message-Boundaryn";
$top.="Content-type: text/html; charset=iso-8859-2n";
$top.="Content-transfer-encoding: 7BITn";
$top.="Content-description: Mail message bodynn";

$bottom="nn--Message-Boundaryn";
$bottom.="Content-type: $cv_type; name="$cv_name"n";
$bottom.="Content-Transfer-Encoding: BASE64n";
$bottom.="Content-disposition: attachment; filename="$cv_name"nn";
$bottom.="$encoded_attachcvn";
//$bottom.="--Message-Boundary--n";

$bottom.="nn--Message-Boundaryn";
$bottom.="Content-type: $zdjecie_type; name="$zdjecie_name"n";
$bottom.="Content-Transfer-Encoding: BASE64n";
$bottom.="Content-disposition: attachment; filename="$zdjecie_name"nn";
$bottom.="$encoded_attachzdjecien";
$bottom.="--Message-Boundary--n";
?>[/php:1:f09f3e79f7]
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.