Ghost Napisano 15 Październik 2010 Zgłoś Share Napisano 15 Październik 2010 Mam coś takiego, to znaczy kawałek kodu wykorzystującego PHP Mailer try { $mail->SetFrom('name@yourdomain.com', 'First Last'); $mail->AddAddress('whoto@otherdomain.com', 'John Doe'); $mail->Subject = 'PHPMailer Test Subject via mail(), advanced'; $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically $mail->MsgHTML(file_get_contents('contents.html')); $mail->AddAttachment('images/phpmailer.gif'); // attachment $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment $mail->Send(); echo "Message Sent OK</p>\n"; } catch (phpmailerException $e) { echo $e->errorMessage(); //Pretty error messages from PHPMailer } catch (Exception $e) { echo $e->getMessage(); //Boring error messages from anything else! } Głównie chodzi mi o kawałek kodu dotyczący załączników. Jak wstawić tam plik pobrany z "<input type="file" /> ?? Nie mogę sobie z tym poradzić. A może jakiś inny sposób na wysłanie mail'a za pomocą formularza html ?? Odnośnik do komentarza Udostępnij na stronach More sharing options...
Micz Napisano 15 Październik 2010 Zgłoś Share Napisano 15 Październik 2010 Przede wszystkim w tagu form musi być ustawiony atrybut enctype = "multipart/form-data". Później musisz użyć tablicy $_FILES, a konkretniej $_FILES[<nazwa_pola>]['tmp_name'] Tam przechowywana jest ścieżka do pliku tymczasowego, choć ja radzę najpierw zapisać plik gdzieś w katalogu strony np. uploads za pomocą $uploads_dir = 'upload/attachments'; $tmp_name = $_FILES["file"]["tmp_name"]; $name = $_FILES["file"]["name"]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); dzięki temu nazwa pliku będzie taka jak oryginalnanastępnie dodać do maila: $mail->AddAttachment("$uploads_dir/$name")); i po wysłaniu usuwamy plik: unlink("$uploads_dir/$name"); Chyba że z jakiś względów chcesz go zachować, ale wtedy trzeba przemyśleć jakiś system, który nie dopuści do nadpisywania. 1 Odnośnik do komentarza Udostępnij na stronach More sharing options...
Ghost Napisano 15 Październik 2010 Autor Zgłoś Share Napisano 15 Październik 2010 Nie, no dzięki. Ja to wolę do Ciebie tutaj napisać niż się na innych forach "szlajać", bo zawsze dostanę taką odpowiedź jaką chcę Wszystko działa prawidłowo. Mam jeszcze tylko jedno pytanko odnośnie kodu: $mail->MsgHTML(file_get_contents('contents.html')); Czy da się tutaj wstawić czysty tekst zamiast pliku html ?? Pytam bo może miałeś do czynienia z PHP Mailer'em. Chodzi głównie o to, żeby można było ten tekst generować dynamicznie, a plik html daje małe możliwości. Odnośnik do komentarza Udostępnij na stronach More sharing options...
Micz Napisano 15 Październik 2010 Zgłoś Share Napisano 15 Październik 2010 Wydaje mi się, że wystarczy wstawić tam kod HTML. $mail->MsgHTML("<b>$sername</b><br/>$wiadomosc"); Ale w praktyce lepiej zrobić coś takiego $htmlBody="<b>$username</b><br/>"; $htmlBody.="$wiadomosc<br/>"; foreach($elements as $element) $htmlBody.="<div>$element->name $element->decription</div>"; $mail->MsgHTML($htmlBody); Jeszcze jest jedna możliwość np. coś takiego $mail->MsgHTML("http://domena.pl/mail.php?mail_template_id=$mail_template_id&hash=".md5($user_id.$mail_template_id.'Jakiś stały tekst')."&user_id=$user_id"); Hash jest po to żeby uniemożliwić otwarcie linku generującego mail komuś z zewnątrz. robisz wtedy np. coś takiego w pliku mail.php. if($_GET['hash']==md5($_GET['user_id'].$_GET['mail_template_id']."Jakiś stały tekst"); { //generowanie treści maila } W ten sposób możesz wykorzystywać bazę do tworzenia szablonów maili, a sam plik może do którego się odwołujesz może includować odpowiednie szablony. Oczywiście w pliku mail możesz też sprawdzić czy użytkownik a uprawnienia do otwarcia tego pliku. To zabepieczenie które pokazałem jest dość prymitywne . Odnośnik do komentarza Udostępnij na stronach More sharing options...
Recommended Posts