Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Menah 23:36
 » luckyluc 23:27
 » Wolf 23:25
 » selves 23:24
 » wrrr 23:24
 » fiskomp 23:14
 » Visar 23:10
 » Magnus 23:07
 » luzak2363 23:05
 » ToM78 22:50
 » Kool@ 22:48
 » doxent 22:44
 » tian 22:41
 » zibi13 22:41
 » Logan 22:38
 » Tomasz 22:37
 » Chrisu 22:33
 » XepeR 22:29
 » DJopek 22:15
 » rainy 22:11

 Dzisiaj przeczytano
 36879 postów,
 wczoraj 25433

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
A R C H I W A L N A   W I A D O M O Ś Ć
    

PHP - wysyłanie emaili .... , kubazzz 21/08/08 21:01
Chcę zrobić prosty skrypt, który będzie wysyłał maila z formularza z dołączonymi plikami - minimum zero plikow, maksimum trzy.
Znalazlem taki skrypt w sieci, ale jest on mocno rozbity na drobne elementy. W sumie dobrze bo bardziej czytelny.
Ale mam parę wątpliwości/pytań co do treści tych nagłówków emailowych. Mogę to przepisać na żywca, ale wolałbym wiedzieć co się dzieje.

No i jak najlepiej umożliwić zmienną ilość załączników? Bo mi przychodzi do głowy tylko dodanie kolejnych zmiennych $attachment, albo zrobienie tablicy.
Ale w sumie przez to, że nie do końca rozumiem składnie tego emaila to nie bardzo jestem pewien jak dodawać więcej niż jeden plik.
Pliki to będą zasadniczo obrazki i nie wiem czy muszę jakoś modyfikować typ danych [w formularzu jest wybór wg typu, zrobię jeszczę weryfikację po zgłoszonym MIME w php].

Treść skryptu:


function mail_attachment ($from , $to, $subject, $message, $attachment){
$fileatt = $attachment; // Path to the file
$fileatt_type = "application/octet-stream"; // File Type
$start= strrpos($attachment, '/') == -1 ? strrpos($attachment, '//') : strrpos($attachment, '/')+1;
$fileatt_name = substr($attachment, $start, strlen($attachment)); // Filename that will be used for the file as the attachment

$email_from = $from; // Who the email is from
$subject = "New Attachment Message";
$email_subject = $subject; // The Subject of the email
$email_txt = $message; // Message that the email has in it

$email_to = $to; // Who the email is to

$headers = "From: ".$email_from;

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$msg_txt="\n\n You have recieved a new attachment message from $from";
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$email_txt .= $msg_txt;
$email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_txt . "\n\n";
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";

$ok = mail($email_to, $email_subject, $email_message, $headers);

if($ok)
{
echo "File Sent Successfully.";
unlink($attachment); // delete a file after attachment sent.
}
else
{
die("Sorry but the email could not be sent. Please go back and try again!");
}
}

SM-S908

  1. Daruj sobie funkcje "mail" , esteban 21/08/08 21:10
    ani to uzyteczne, ani funkcjonalne, ani bezpieczne. Zend_Mail z zend framework, albo starenki phpmailer maja sensowne interfejsy i nawet nie trzeba sie recznie palowac zeby pl literki uzyskac. A zalaczniki to zaden problem.

    1. ech , kubazzz 21/08/08 21:13
      no dobra, czyli znowu ja się uczę, a w grę wchodzą rozbudowane frameworki, których nie ogarnę:D

      SM-S908

      1. niee, spoko , Tomasz 21/08/08 21:17
        phpmailer. jedna klasa do includa, prosta obsluga, dziala wysmienicie :)

        http://phpmailer.sourceforge.net

        https://www.siepomaga.pl/milosz-mosko

        1. faktycznie nie wyglada to przerazajaco , kubazzz 21/08/08 21:30
          bo przy jQuery od JS to sie ciezko polapac mi bylo.
          A może to php jest bardziej przejrzyste niż javascript..

          SM-S908

      2. Zend , esteban 21/08/08 21:20
        Zend framework to taki framework, z ktorego mozna sobie wziac to co sie chce, czyli np. tylko czesc od wysylania maili, a reszte zignrowac. Nie ma problemu ze nagle trzeba sie uczyc *wszystkiego*. A jest to troche nowszy projekt niz phpmailer, bardziej aktywny etc.

        1. ok, dzięki. przejrzałem oba , kubazzz 21/08/08 21:36
          i wybrałem phpmailer - po pierwsze dlatego, że nie trzeba nic robić z nim, po drugie dlatego, że mój provider wciąż używa domyślnie php4, po trzecie dlatego, że nie potrzebuję wielkich cudów.
          Dziękuję za pomoc:)

          SM-S908

      3. hmm , akustyk 21/08/08 21:36
        ja robilem tak:

        require_once("../include/Mail/htmlMimeMail.php");
        $mail = new htmlMimeMail();

        $prefix = "<html>\r\n<style>\r\n" . implode( "", file("../print.css")) . "</style><body>\n\n";
        $content = "TU TRESC MAILA";
        $suffix = "</body>\r\n</html>\r\n\r\n";
        $html = $prefix . $content . $suffix;

        $im_background = $mail->getFile('../img/bkgr.jpg');
        $im_header = $mail->getFile('../img/header.jpg');
        $im_page1 = $mail->getFile('../img/page1.jpg');
        $im_page2 = $mail->getFile('../img/page2.jpg');

        $im_ic1 = $mail->getFile('../img/icon-www.jpg');
        $im_ic2 = $mail->getFile('../img/icon-atest.jpg');
        $im_ic3 = $mail->getFile('../img/icon-itech.jpg');
        $im_ic4 = $mail->getFile('../img/icon-news.jpg');
        $im_ic5 = $mail->getFile('../img/icon-lit.jpg');
        $im_cmy = $mail->getFile('../img/cmy.gif');



        $mail->setHtml($html);
        $mail->addHtmlImage($im_background, 'bkgr.jpg', 'image/jpg');
        $mail->addHtmlImage($im_header, 'header.jpg', 'image/jpg');
        $mail->addHtmlImage($im_page1, 'page1.jpg', 'image/jpg');
        $mail->addHtmlImage($im_page2, 'page2.jpg', 'image/jpg');

        $mail->addHtmlImage($im_ic1, 'icon-www.jpg', 'image/jpg');
        $mail->addHtmlImage($im_ic2, 'icon-atest.jpg', 'image/jpg');
        $mail->addHtmlImage($im_ic3, 'icon-itech.jpg', 'image/jpg');
        $mail->addHtmlImage($im_ic4, 'icon-news.jpg', 'image/jpg');
        $mail->addHtmlImage($im_ic5, 'icon-lit.jpg', 'image/jpg');

        $mail->addHtmlImage($im_cmy, 'cmy.gif', 'image/jpg');
        $mail->setFrom('"Firma" <');
        $mail->setSubject('Tytul maila');
        $sendto = Array($f_email);
        array_push($sendto, "
        $mail->send($sendto);


        to byl PHP4 i dzialalo jak zloto

        http://akustyk.magma-net.pl

        1. hmm , akustyk 21/08/08 21:37
          adresy email bez srednikow (dostawil kod boarda)

          http://akustyk.magma-net.pl

  2. pytanie za 1000 punktów - czemu te dwie linijki petli nie działaja?? , kubazzz 22/08/08 20:27
    for ($i = 1; $i <= 3; $i += 1)
    {
    echo $_FILES['plik']['name'][$i];
    echo "<br>";
    }

    SM-S908

    1. nieaktualne , kubazzz 22/08/08 21:37
      mam teraz inny problem.

      SM-S908

    
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL