graficky mail [php + html]
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
graficky mail [php + html]
mam tento problem:
spravim si v html navrh ako by mal vyzerat e-mail, je tam css v tom skripte a fotky su na serveri. potom tento skript odoslem pomocou mail funkcie v php ale Outlook Express [a neskusal som este ine emailove klienty] mi blokuje vsetky obrazky v tomto maile. CIZE KED MAM OBRAZOK AKO POZADIE tak sa mi nezobrazi. NERIESIL UZ NIEKTO TENTO PROBLEM, lebo napr. videl som reklami z O2 a tam neni nic blokovane ?
spravim si v html navrh ako by mal vyzerat e-mail, je tam css v tom skripte a fotky su na serveri. potom tento skript odoslem pomocou mail funkcie v php ale Outlook Express [a neskusal som este ine emailove klienty] mi blokuje vsetky obrazky v tomto maile. CIZE KED MAM OBRAZOK AKO POZADIE tak sa mi nezobrazi. NERIESIL UZ NIEKTO TENTO PROBLEM, lebo napr. videl som reklami z O2 a tam neni nic blokovane ?
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
no emaily odosielam ako MIME a uz som prisiel aj nato ako to vyriesit s tymi obrazkami. Treba ich tam jednoducho pridat do kodu zakodovane v base64 a potom sa napr namiesto "background:url('http://www.xxx.sk/img/header.jpg')" da "background:url('cid:header')"
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
no mam dalsi problem:
nevie niekto ako to napchat do funkcie mail() ? lebo ja som skusal uz vsetko mozne a vzdy mi to len ako text posle od toho prveho "Content-Type:..."
Kód: Vybrať všetko
From: =?windows-1250?Q?1_2?= <[email protected]>
To: =?windows-1250?Q?x_y?= <[email protected]>
Subject: Grafický email
Date: Sun, 23 Mar 2008 00:22:11 +0100
MIME-Version: 1.0
Content-Type: multipart/related; boundary="main"; type="multipart/alternative"
X-Priority: 1
This is a multi-part message in MIME format.
--main
Content-Type: multipart/alternative; boundary="part1"
--part1
Content-Type: text/plain; charset="windows-1250" Content-Transfer-Encoding: quoted-printable
--part1
Content-Type: text/html; charset="windows-1250" Content-Transfer-Encoding: quoted-printable
------------------ HTML KOOOOOOOOD -------------------
--part1--
--main
Content-Type: image/jpeg; name="header.jpg"
Content-Transfer-Encoding: base64
Content-ID: <header@sinn3r>
/9j/4AAQSkZJRgABAgEASABIAAD/4QeMRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodp
AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dz
ADIwMDg6MDM6MjIgMTQ6MDM6NTQAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAADIKADAAQAAAAB
AAAAtAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA
AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAAZWAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG
AAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL
CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN
Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwM/8AAEQgAJACgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH
CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh
--main--
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
lebo si rad robim veci sam
uz riesim len jednu vec preco ked si nieco prilozim ako:
tak preco sa mi to zobrazuje v prilohach 
a este je zaujimave ze ked ten kod hore prepisem do header a message tak mi to stale nevypisuje mail normalne az ked nezmazem MIME-Version:1.0
Kód: Vybrať všetko
Content-id: <header@sinn3r>
Content-type: image/jpeg;
Content-transfer-encoding: base64a este je zaujimave ze ked ten kod hore prepisem do header a message tak mi to stale nevypisuje mail normalne az ked nezmazem MIME-Version:1.0
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
ma niekto ponatia preco nefunguje tento skript ??? mne sa zda byt bezchybny
Kód: Vybrať všetko
<?php
function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false)
{
$eol="\r\n";
$mime_boundary=md5(time());
# Common Headers
$headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
$headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
$headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol; // these two to set reply address
$headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters
# Boundry for marking the split & Multitype Headers
$headers .= 'MIME-Version: 1.0'.$eol.$eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"".$eol.$eol;
# Open the first part of the mail
$msg = "--".$mime_boundary.$eol;
$htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section
# Setup for text OR html -
$msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol;
# Text Version
$msg .= "--".$htmlalt_mime_boundary.$eol;
$msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
$msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol;
# HTML Version
$msg .= "--".$htmlalt_mime_boundary.$eol;
$msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
$msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$msg .= $body.$eol.$eol;
//close the html/plain text alternate portion
$msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;
if ($attachments !== false)
{
for($i=0; $i < count($attachments); $i++)
{
if (is_file($attachments[$i]["file"]))
{
# File for Attachment
$file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));
$handle=fopen($attachments[$i]["file"], 'rb');
$f_contents=fread($handle, filesize($attachments[$i]["file"]));
$f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition using base64_encode();
$f_type=filetype($attachments[$i]["file"]);
fclose($handle);
# Attachment
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol; // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
$msg .= "Content-Transfer-Encoding: base64".$eol;
$msg .= "Content-Description: ".$file_name.$eol;
$msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
$msg .= $f_contents.$eol.$eol;
}
}
}
# Finished
$msg .= "--".$mime_boundary."--".$eol.$eol; // finish with two eol's for better security. see Injection.
# SEND THE EMAIL
ini_set(sendmail_from,$fromaddress); // the INI lines are to force the From Address to be used !
$mail_sent = mail($to, $subject, $msg, $headers);
ini_restore(sendmail_from);
return $mail_sent;
}
?>-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
co moze znamenat ked poviem ze to nefunguje ze to asi nerobi to co to ma a hore som uz pisal ze nemozem najst riadnu triedu ktora by robila to co chcem... proste ked tam dam toto a pustim to tak mi to vypise normalne text vobec sa nesere s tym ze tam ma byt html alebo ze tam su dake styly az ked dam preco MIME-Ver... tak sa to zacne spravat normalne co je velmi divne.... potrebujem najst niekoho kto sa tomu naozaj rozumie chcem si spravit html mal ktory bude so sebou nosti obrazky pozadia a tieto obrazky sa nebudu zobrazovat ako priloha ale budu schovane to co som robil tak funguje ale iba na Outlook Express na normalnom Outlooku sa to zobrazuje ako priloha a nepotrebujem na to triedy kedze to nebudem casto menit iba malo textu vo vnutri ten template zostane rovnaky stale. Ak ma niekto riadnu triedu ktora funguje na vacsine emailovych klientov tak by som si ho rad pozrel ale to som uz pisal raz.
To že ti to nefunguje je veľmi všeobecný popis. To, ak sa to nezobrazuje je niečo iné, ako to, ak sa to ani neodošle...
Trieda PHPMailer robí presne to, čo chceš. Príklad posielania HTML e-mailu je na ich stránkach (skúšal som to a funguje to bez problémov) http://phpmailer.codeworxtech.com/tutorial.html#4
PS: Keby si používal čiarky a bodky, čítalo by sa to ľahšie.
Trieda PHPMailer robí presne to, čo chceš. Príklad posielania HTML e-mailu je na ich stránkach (skúšal som to a funguje to bez problémov) http://phpmailer.codeworxtech.com/tutorial.html#4
PS: Keby si používal čiarky a bodky, čítalo by sa to ľahšie.
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
jj dakujem uz mam toho mailera odvcera studujem to 
p.s.: sorry ked som to pisal tak som trosku pil budem sa nabuduce viac snazit a budem sa snazit aj lepsie definovat problem
EDIT:
btw sefko stale mi to robi tu istu vec co som mal aj v tom vlastnom skripte ze ked to odoslem a otovorim v Outlook [normalnom co je v Office] tak na sprave mi pise ze nema ziadne prilohy ale ked si ju pozeram tak hore su obrazky ktore mam pouzite na pozadi
p.s.: sorry ked som to pisal tak som trosku pil budem sa nabuduce viac snazit a budem sa snazit aj lepsie definovat problem
EDIT:
btw sefko stale mi to robi tu istu vec co som mal aj v tom vlastnom skripte ze ked to odoslem a otovorim v Outlook [normalnom co je v Office] tak na sprave mi pise ze nema ziadne prilohy ale ked si ju pozeram tak hore su obrazky ktore mam pouzite na pozadi
A ako si tam tie obrázky pridával? Použil si tú konštrukciu, ktorá je v tom príklade?
Kód: Vybrať všetko
$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!';-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
presne ako si napisal a v Outlooku sa mi zobrazil ako priloha...
ale chcem aby to bolo takto
lenze to tiez zobrazuje obrazok na Outlooku z Office ako prilohu ale ta ikonka prilohy sa tam nezobrazi.
dalej som chcel skusit dat
ale to mi vobec ziaden obrazok nezobrazilo
a to este nehovorim o tom ze v niektorych klientoch mi to identifikuje ako spam
moja zufalost zacina byt dokonala po 3 dnoch hladania som stale na zaciatku nic nove
ale chcem aby to bolo takto
Kód: Vybrať všetko
<div style="background:url('cid:obrazok');">bla bla bla</div>
dalej som chcel skusit dat
Kód: Vybrať všetko
<div style="background:url('http://xxxx.sk/images/obrazok.jpg');">bla bla bla</div>
a to este nehovorim o tom ze v niektorych klientoch mi to identifikuje ako spam
moja zufalost zacina byt dokonala po 3 dnoch hladania som stale na zaciatku nic nove
-
sINN3R
Medium Star
- Príspevky: 330
- Registrovaný: 17 jún 2006, 11:21
- Bydlisko: Trencin - Slovakia - EU
- Kontaktovať používateľa:
pridavam este kod:
toto pekne posle mail obrazky su prilozene v nom ale v Office Outlooku sa to zobrazuje ako priloha. Chcel som to potom riesit ako priame linky na ftp s obrazkami ale nefungovali mi vobec na tom pozadi tie obrazky proste ako keby to css nebralo obrazky z ftp
EDIT: som zistil ze na Office 2007 Outlook nejde pozadie vobec
Kód: Vybrať všetko
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "XXX";
$mail->AddAddress("yyy@yyy","YYYYl");
$mail->Subject = "Grafický mail";
$mail->AddEmbeddedImage('header.jpg', 'header' , 'obr','base64','image/jpeg');
$mail->AddEmbeddedImage('content.jpg', 'content' , 'obr','base64','image/jpeg');
$mail->AddEmbeddedImage('image_bg.jpg', 'image_bg' , 'obr','base64','image/jpeg');
$mail->AddEmbeddedImage('info.jpg', 'info' , 'obr','base64','image/jpeg');
$mail->AddEmbeddedImage('space.jpg', 'space' , 'obr','base64','image/jpeg');
$mail->AddEmbeddedImage('space1.jpg', 'space1' , 'obr','base64','image/jpeg');
$mail->AddEmbeddedImage('space2.jpg', 'space2' , 'obr','base64','image/jpeg');
$mail->Body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<meta http-equiv="Content-Language" content="sk" />
<title>XXXX</title>
<style type="text/css">
body {
background:#f47e31;
margin: 0px;
padding: 0px;
}
div#info_text a {
text-decoration: none;
color: #BCBEC0;
outline: none;
}
div#info_text a:hover {
text-decoration: underline;
}
div#main {
width: 800px;
margin: 0px auto 0px auto;
}
div#header {
width: 800px;
height: 180px;
background: url(\'cid:header\') top center no-repeat;
}
div#content_bg {
width: 800px;
background: url(\'cid:content\') top center repeat-y;
}
div#content_text {
width: 660px;
margin: 0px 70px 0px 70px;
padding-bottom:20px;
font-family: Arial;
font-size: 12px;
color: #003768;
}
div#image_bg {
width: 800px;
height: 200px;
background: url(\'cid:image_bg\') top center no-repeat;
}
div#image {
}
div#info_bg {
width: 800px;
height: 65px;
background: url(\'cid:info\') top center no-repeat;
}
div#info_text {
font-family: Arial;
font-size: 12px;
width: 690px;
padding: 10px 55px 0px 55px;
color: #BCBEC0;
}
div#space {
width: 800px;
height: 20px;
background: url(\'cid:space\') top center no-repeat;
}
div#space1 {
width: 800px;
height: 15px;
background: url(\'cid:space1\') top center no-repeat;
}
div#space2 {
width: 800px;
height: 75px;
background: url(\'cid:space2\') #f47e31 top center no-repeat;
}
</style>
</head>
<body>
<div id="main">
<div id="header"></div>
<div id="content_bg">
<div id="content_text">
TEXT
</div>
</div>
<div id="space"></div>
<div id="info_bg">
<div id="info_text">
KONTAKT
</div>
</div>
<div id="space1"></div>
<div id="image_bg">
<div id="image"></div>
</div>
<div id="space2"></div>
</div>
</body>
</html>';
$mail->AltBody="!!! Váš mail nepodporuje HTML maily !!!";
$mail->WordWrap = 50;
if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent.';
}
?>
EDIT: som zistil ze na Office 2007 Outlook nejde pozadie vobec