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:
<?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];
$mimeTmp = explode('.',$attach_name); {
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 = substr($bcc, 0
, -1
); //odciecie przecinka $bcc .= " /n";
$headerbcc = $header.$bcc;
mail('', $encoded_tytul, $tresc, $headerbcc); $bcc = "Bcc: ";
echo 'Wysłano '.$total.' z '.$ile.'<br/>'; }
}
?>
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