graficky mail [php + html]

Programovacie jazyky, rady, poradňa...
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

graficky mail [php + html]

Príspevok od používateľa sINN3R »

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 ?
neppo
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 774
Registrovaný: 09 jún 2005, 15:33

Príspevok od používateľa neppo »

1) skus sa pohrat s nastaveniami v outlook express - zobrazovanie obrazkov
2) skus e-maily odosielat ako MIME
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

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
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

no mam dalsi problem:

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--
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:..."
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

preco nepouzijes uz nejaku hotovu triedu na odosielanie mailov? ich autori sa s takymito vecami vyhrali
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

lebo si rad robim veci sam :) uz riesim len jednu vec preco ked si nieco prilozim ako:

Kód: Vybrať všetko

Content-id: <header@sinn3r>
Content-type: image/jpeg;
Content-transfer-encoding: base64
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
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

dobre vzdavam sa nevie niekto daku dobru triedu ktora posiela html maily ale tak ze si napr mozem dat do pozadia obrazok a nebudem mat tento obrazok ako prilohu DIKY MOC LEBO UZ MAM NERV Z TOHO :-D
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

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;
}
?>
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

1. Čo znamená nefunguje?
2. Použi nejakú triedu na odosielanie e-mailov (tá sa o prílohy, kódovanie... postará).
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

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.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

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.
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

jj dakujem uz mam toho mailera odvcera studujem to :-P

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 :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

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
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

presne ako si napisal a v Outlooku sa mi zobrazil ako priloha...
ale chcem aby to bolo takto

Kód: Vybrať všetko

<div style="background:url('cid:obrazok');">bla bla bla</div>
lenze to tiez zobrazuje obrazok na Outlooku z Office ako prilohu ale ta ikonka prilohy sa tam nezobrazi.

dalej som chcel skusit dat

Kód: Vybrať všetko

<div style="background:url('http://xxxx.sk/images/obrazok.jpg');">bla bla bla</div>
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 :(
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

pridavam este kod:

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.';
}
?>
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
Napísať odpoveď