Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]prosty newsletter
Forum PHP.pl > Forum > Przedszkole
elmozaur
Witajcie.
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:
  1. <?php
  2.  
  3. $uid = md5(uniqid(time()));
  4.  
  5. $tytul = $_POST['tytul'];
  6. $encoded_tytul="=?utf-8?B?".base64_encode($tytul)."?=\n";
  7.  
  8. $autor = 'galeria tomka <galeria@tomek.pl>';
  9. $encoded_autor = "=?UTF-8?B?".base64_encode($autor)."?=";
  10.  
  11. $mime_boundary = '==Multipart_Boundary_x'. $uid .'x';
  12.  
  13. $header = "From: $encoded_autor \n".
  14. "Content-Type: multipart/mixed; boundary=".$mime_boundary." \n".
  15. "MIME-Version: 1.0 \n".
  16. "Content-Transfer-Encoding: 8bit \n";
  17.  
  18.  
  19. $templatka = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
  20. <html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><title>galeria tomka</title>
  21. </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\">
  22. <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-->
  23. <table width=\"772\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
  24. <tr><td style=\"height:200px;\"><img src=\"http://www.strona.pl/logo.jpg\" alt=\"Top\" width=\"772\" height=\"200\"/></td>
  25. </tr>";
  26.  
  27. //Tutaj generowana jest dalsza czesc tresci HTMLowej mejla
  28.  
  29.  
  30. $tresc = "This is a multi-part message in MIME format.\r\n";
  31. $tresc .= '--'.$mime_boundary."\n";
  32.  
  33. $tresc .= 'Content-Type:text/html; charset="utf-8"'."\n";
  34. $tresc .= 'Content-Transfer-Encoding: 7bit'."\n\n";
  35. $tresc .= ''.$templatka."\n\n";
  36.  
  37. //tutaj sa dodawane zalaczniki
  38. foreach($_FILES['zalacznik']['tmp_name'] as $id => $zalacznik)
  39. {
  40. if (is_uploaded_file($_FILES['zalacznik']['tmp_name'][$id]))
  41. {
  42.  
  43. $attach_name = $_FILES['zalacznik']['name'][$id];
  44. $attach_content = chunk_split(base64_encode(file_get_contents($_FILES['zalacznik']['tmp_name'][$id])));
  45.  
  46. $mimeTmp = explode('.',$attach_name);
  47. switch(strtolower($mimeTmp[1]))
  48. {
  49. case 'avi':
  50. $mime = "video/avi";
  51. break;
  52. case 'bmp':
  53. $mime = "image/bmp";
  54. break;
  55. case 'jpg':
  56. $mime = "image/jpeg";
  57. break;
  58. case 'jpeg':
  59. $mime = "image/jpeg";
  60. break;
  61. case 'gif':
  62. $mime = "image/gif";
  63. break;
  64. case 'pdf':
  65. $mime = "application/pdf";
  66. break;
  67. case 'png':
  68. $mime = "image/png";
  69. break;
  70. case 'zip':
  71. $mime = "application/zip";
  72. break;
  73. case 'rar':
  74. $mime = "application/rar";
  75. break;
  76. default:
  77. $mime = "application/octet-stream";
  78. break;
  79. }
  80.  
  81.  
  82.  
  83. $tresc .= '--'. $mime_boundary ."\n";
  84. $tresc .= "Content-Type: ".$mime."; name=\"".$attach_name."\"\n";
  85. $tresc .= "Content-Transfer-Encoding: base64\n";
  86. $tresc .= "Content-Disposition: attachment; filename=\"".$attach_name."\"\n\n";
  87. $tresc .= $attach_content."\n\n";
  88.  
  89. $tresc .= '--'. $mime_boundary ."\n";
  90. }
  91. }
  92.  
  93. //tutaj jest polaczenie z baza i pobranie wszystkich mejli do tablicy $row
  94.  
  95. $bcc = 'Bcc: ';
  96. $licznik = 0; // licznik do wysylania do 20 osob 1 wywolaniem funkcji mail
  97.  
  98. while ($row = mysql_fetch_array($res))
  99. {
  100.  
  101. $bcc .= strtolower($row['sEmail']).',';
  102. $licznik++;
  103.  
  104. if($licznik==20)
  105. {
  106. $total += $licznik;
  107. $licznik=0;
  108. $bcc = substr($bcc, 0, -1); //odciecie przecinka
  109. $bcc .= " /n";
  110.  
  111. $headerbcc = $header.$bcc;
  112.  
  113. mail('', $encoded_tytul, $tresc, $headerbcc);
  114. $bcc = "Bcc: ";
  115. echo 'Wysłano '.$total.' z '.$ile.'<br/>';
  116. }
  117. }
  118.  
  119.  
  120. ?>


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
CuteOne
PHPMailer
elmozaur
wole napisac cos swojego . ale dzieki za odpowiedz
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.