Chcialbym napisac prosty newsletter ktory tekst z pol input i text area wsadzi w templatke html dorzuci ewentualnie zalacznik i wysle wybranym uzytkownikom zapisamym w bazie.
Sporo googlalem na temat funkcji mail, naglowkow oraz samego wysylania.
Napisalem strone HTML z TinyMCE (formularz) do wprowadzania danych i ewentualnego wyboru zalacznika.
Wszystko wysylane jest postem do strony odbierajacej.
Po stronie odbiorczej (pomijajac zabezpieczenia typu strip tags trim filtrowanie pod katem xss itp) wyglada to mniej wiecej tak:
<?php $tytul = $_POST['tytul']; $autor = 'galeria tomka <galeria@tomek.pl>'; $mime_boundary = '==Multipart_Boundary_x'. $uid .'x'; $header = "From: $encoded_autor \n". "Content-Type: multipart/mixed; boundary=".$mime_boundary." \n". "MIME-Version: 1.0 \n". "Content-Transfer-Encoding: 8bit \n"; $templatka = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><title>galeria tomka</title> </head><body marginheight=\"0\" topmargin=\"0\" marginwidth=\"0\" bgcolor=\"#ffffff\" leftmargin=\"0\" style=\"font-family: Arial, Helvetica, sans-serif; font-size: 0.95em; color:white; background: url('http://www.e-pamir.pl/files/newsletter/bg.jpg') center center\"> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"text-align:center; font-family: Arial, Helvetica, sans-serif; font-size: 0.95em; color:white; background: url('http://www.e-pamir.pl/files/newsletter/bg.jpg') center center;\"><tr><td><!--100--> <table width=\"772\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"> <tr><td style=\"height:200px;\"><img src=\"http://www.strona.pl/logo.jpg\" alt=\"Top\" width=\"772\" height=\"200\"/></td> </tr>"; //Tutaj generowana jest dalsza czesc tresci HTMLowej mejla $tresc = "This is a multi-part message in MIME format.\r\n"; $tresc .= '--'.$mime_boundary."\n"; $tresc .= 'Content-Type:text/html; charset="utf-8"'."\n"; $tresc .= 'Content-Transfer-Encoding: 7bit'."\n\n"; $tresc .= ''.$templatka."\n\n"; //tutaj sa dodawane zalaczniki foreach($_FILES['zalacznik']['tmp_name'] as $id => $zalacznik) { { $attach_name = $_FILES['zalacznik']['name'][$id]; $attach_content = chunk_split(base64_encode(file_get_contents($_FILES['zalacznik']['tmp_name'][$id]))); { case 'avi': $mime = "video/avi"; break; case 'bmp': $mime = "image/bmp"; break; case 'jpg': $mime = "image/jpeg"; break; case 'jpeg': $mime = "image/jpeg"; break; case 'gif': $mime = "image/gif"; break; case 'pdf': $mime = "application/pdf"; break; case 'png': $mime = "image/png"; break; case 'zip': $mime = "application/zip"; break; case 'rar': $mime = "application/rar"; break; default: $mime = "application/octet-stream"; break; } $tresc .= '--'. $mime_boundary ."\n"; $tresc .= "Content-Type: ".$mime."; name=\"".$attach_name."\"\n"; $tresc .= "Content-Transfer-Encoding: base64\n"; $tresc .= "Content-Disposition: attachment; filename=\"".$attach_name."\"\n\n"; $tresc .= $attach_content."\n\n"; $tresc .= '--'. $mime_boundary ."\n"; } } //tutaj jest polaczenie z baza i pobranie wszystkich mejli do tablicy $row $bcc = 'Bcc: '; $licznik = 0; // licznik do wysylania do 20 osob 1 wywolaniem funkcji mail { $licznik++; if($licznik==20) { $total += $licznik; $licznik=0; $bcc .= " /n"; $headerbcc = $header.$bcc; $bcc = "Bcc: "; } } ?>
I teraz moje pytanie. Dlaczego czesc programow odbiera mejla poprawnie jako html a inne odbieraja w trybie textowym pokazujac jedynie kod html. Czy jest jakis uniwersalny sposob na wyslanie mejla HTML z zalacznikiem do wielu odbiorcow ?
Domyslam sie ze sknocilem cos z naglowkami ale juz nie wiem gdzie tego szukac
za wszelkie info z gory dziekuje i pozdrawiam
G