Avatar billede net-base.dk Nybegynder
05. januar 2009 - 20:32 Der er 26 kommentarer og
2 løsninger

email med html design virker ikke.

Hej.

Jeg sidder og er ved at lave et script som sender mails med et html design.

Den sender sådan set også mailen fint og min css fil loades kan jeg se i loggen, men de billeder jeg har sat ind de bliver ikke vist... og loades heller ikke kan jeg se.

Håber nogle kan være mig behjælpelig.

Her er url til siden
http://test.net-base.dk/mail/email.php

Og her er min kode:
<?php
$besked = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>MAIL TEST</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link type="text/css" rel="stylesheet" href="http://myitems.dk/css/mail.css">
</head>
<body>
<center>
<table border="1" cellpadding="0" cellspacing="0" class="design-outer">
    <tr>   
        <td class="design-top" colspan="3"></td>
    </tr>
    <tr>
        <td class="design-menu" colspan="3">Emne</td>
    </tr>
    <tr>       
        <td class="design-middleline" colspan="3"></td>
    </tr>
    <tr>
        <td class="design-borderleft" colspan="1"></td>
        <td class="design-box" colspan="1">
            Dette er en nyhedsmail hvor jeg ikke kan få indholdet til at være rigtigt... sikke da noget lort.
        </td>
        <td class="design-borderright" colspan="1"></td>
    </tr>
    <tr>
        <td class="design-bottom" colspan="3">&nbsp;</td>
    </tr>
</table>
</center>
</body>
</html>
';

$subject    =  'testmail';
$boundary = uniqid("");
$body    = array();
$sender = "system@myitems.dk";
$recip = "michael@net-base.dk";

if( isset($_GET["email"]) ) {                  /**********************************************************/
    $recip = $_GET["email"];                  /* DENNE STUMP KODE ER KUN TIL FOR AT I KAN PRØVE DEN AF. */
}                                              /**********************************************************/


$header[] = "MIME-Version: 1.0";
$header[] = "Message-ID: <".md5($sender).uniqid('')."@myitems.dk>";
$header[] = "Content-Type: multipart/mixed; boundary=\"$boundary\"";
$header[] = "Content-Transfer-Encoding: 7bit";
$header[] = "From: Michael <$sender>";
$header[] = "To: ".$recip;
$header[] = "Reply-To: $sender";
$header[] = 'X-Mailer: PHP/' . phpversion();

$body[] = "--$boundary";
$body[] = "Content-Type: text/html; charset=\"iso-8859-1\"";
$body[] = "Content-Transfer-Encoding: 7bit";
$body[] = '';
$body[] = $besked;


mail($recip, $subject, join("\n", $body),join("\n", $header));
?>
Avatar billede olebole Juniormester
05. januar 2009 - 21:25 #1
<ole>

Det forstår ikke et hak af!  =)

Hvad skal jeg med dette dokument:
    http://test.net-base.dk/mail/email.php

/mvh
</bole>
Avatar billede olebole Juniormester
05. januar 2009 - 21:29 #2
- men generelt bør du nok skrive CSS'en direkte i mailen. Mail-klienter har ofte elendig CSS- og mindst sær HTML-understøttelse  ;o)
Avatar billede net-base.dk Nybegynder
05. januar 2009 - 21:31 #3
Du skal bruge den til at få tilsendt mailen selv så man kan se om der er fejl i den, gøres ved at tilføje ?email=navn@domain.tld (ved du sikkert godt)

Mit problem er at f.eks outlook fint loader CSS filen, men henter ikke billederne.
Avatar billede majbom Novice
05. januar 2009 - 21:35 #4
Avatar billede net-base.dk Nybegynder
05. januar 2009 - 21:38 #5
splazz -> hmm mystisk, jeg kan se i loggen at du har bedt om den... Prøv igen kan være forkert email du har brugt.

Vil ik skrive den mail du har brugt her, kan se du har rettet den selv.
Avatar billede majbom Novice
05. januar 2009 - 21:39 #6
nå, den lå i min spam-mappe :S
Avatar billede net-base.dk Nybegynder
05. januar 2009 - 21:40 #7
hehe. fedt :D
Avatar billede majbom Novice
05. januar 2009 - 21:43 #8
smid css'en med i mailen...

btw er "<center>" deprecated
Avatar billede olebole Juniormester
05. januar 2009 - 21:46 #9
Yups ... prøv at lægge CSS'en direkte i mailen. Virker det ikke, så prøv at slette gåseøjnene omkring billed-URL'erne
Avatar billede net-base.dk Nybegynder
05. januar 2009 - 21:52 #10
Har valgt at den skal printere besked ud når i trykker på linket... Og der ser det fint ud og den loader fint billederne, men i Outlook der loader den sgu ikke noget...
Avatar billede olebole Juniormester
05. januar 2009 - 22:23 #11
Mon billederne virker, hvis de ikke ligger som baggrundsbilleder? Det er muligt, Outlook ikke understøtter baggrundsbilleder  =)
Avatar billede net-base.dk Nybegynder
05. januar 2009 - 22:30 #12
Det må være noget med Outlook at gøre, for ThunderBird viser faktisk mailen ganske fint...

Må jeg lige kigge lidt på...

Eller er der nogle som ved om kan på en eller anden måde kan tricke outlook til at æde billederne aligevel???

Ellers så kunne det være at vi helt skal droppe at have design på vores email og bare sende folk en 100% plain text mail istedet for...

Troede bare at vi i år 2009 var nået så langt frem i udvikingen. at en simpel email klient også kunne æde html... Men der tog jeg vidst fejl.
Avatar billede olebole Juniormester
05. januar 2009 - 22:36 #13
Der er ydermere mange, der ikke vil modtage HTML-mails og derfor sætter klienten op til kun at modtage plain text. Så ligner en HTML-mail noget, der aldrig skulle være sendt  ;o)
Avatar billede net-base.dk Nybegynder
05. januar 2009 - 22:42 #14
Ja så får de vel smidt alt html'et lige i fjæset kunne jeg forestille mig uden at have set det, og så kan man så undre sog over hvad pokker de får ud af det? ud over at skulle bruge 10 gange så langtid på at læse mailen...

Men jeg har hermed besluttet at vi dropper at lave design på mailen, og bare nøjes med at smide et alm <img> oppe i det ene hjørne af email med logo :D

Tak for hjælpen.

Dem som vil have point smid svar...

(i tilfælde af ingen vil have point er mit svar til lukning her)
Avatar billede majbom Novice
06. januar 2009 - 07:21 #15
jeg får flere nyhedsbreve rundt omkring fra med billeder, men jeg har ikke lige lagt mærke til hvordan de er sat op rent kode-mæssigt - så det kan jo sagtens lade sig gøre.

men under alle omstændigheder er det vigtigt at sende noget plain text med som alternativ, til de personer der ikke vil/kan bruge et program som outlook og lignende...
Avatar billede coderdk Praktikant
06. januar 2009 - 11:08 #16
Jeg ville bruge SwiftMailer eller PHPmailer og vedhæfte billederne med en cid (dermed vises billederne altid), og så flytte stylesheet'et under <body> eller lave dem inline - Så er det mere kompatibelt.
Avatar billede coderdk Praktikant
06. januar 2009 - 11:12 #17
Et eksempel med phpmailer:

  $mail = new PHPMailer();
  $mail->From = "Dit navn";
  $mail->FromName = "din@email.dk";
  $mail->AddEmbeddedImage("logo.gif", "logoimg", "logo.gif", "base64", "image/gif");
  $mail->AddAddress( "til@email.dk" );
  $mail->Body = <<<EOT
<p style="font-weight:bold>Hej!</p>
<p>Her er et billede: <img src="cid:logoimg" alt="Logo" /></p>
EOT;
  $mail->Subject = "Et emne";
  if ( $mail->Send() )
  {
      echo "Mail sendt.";
  }
  else
  {
      echo "Fejl ved afsendelse: " . $mail->ErrorInfo;
  }
Avatar billede coderdk Praktikant
06. januar 2009 - 11:13 #18
Så ville jeg i øvrigt også have en AltBody:

$mail->AltBody = <<<EOT
Hej!
Her skulle være et logo, men det er ren tekst, så det kan vi ikke vise.
EOT;
Avatar billede net-base.dk Nybegynder
06. januar 2009 - 11:56 #19
coderdk -> Det vil jeg kige ligge på senere...

er det en class der er i php som std? eller skal man hente noget ned først?

Jeg vil også lige afprøve dit andet forslag-
Avatar billede coderdk Praktikant
06. januar 2009 - 12:05 #20
Du skal hente PHPmailer herfra: http://phpmailer.codeworxtech.com/

Husk at hente den rigtige version ift. din PHP-version.
Avatar billede net-base.dk Nybegynder
15. januar 2009 - 21:44 #21
coderdk -> Jeg har prøvet dette phpMailer af, og det virker jo sindsyg godt.

Jeg har dog et problem. Har lagt mærke til at den en gang i mellem kommer med en status/fejl besked når den sender emails, er det muligt at opsamle denne fejl i en $var? Grunden er nemlig at jeg køre det i et cronjob som sender emails ud, og ville gerne vide hvis den fejlede...
Avatar billede majbom Novice
16. januar 2009 - 11:07 #22
når du har prøvet at sende en mail, men den fejler, kan du:

echo "Mailer Error: " . $mail->ErrorInfo;

eller som du selv skriver, smide den i en variabel og gemme den i en db, eller lignende...
Avatar billede net-base.dk Nybegynder
16. januar 2009 - 12:14 #23
splazz -> takker vil straks prøve det af. vender tilbage med resultat.
Avatar billede net-base.dk Nybegynder
16. januar 2009 - 12:25 #24
splazz -> Den samler jo fint fejlen op :D perfekt.

Jeg har nu fået testet phpMailer godt og grundigt, og syntes det fungerer super...

Dem som mener de har ret til point i denne tråd smid svar nu...
Avatar billede majbom Novice
16. januar 2009 - 13:01 #25
kan da godt nuppe lidt af pointsummen... men da ikke i nærheden af de 200 ;)
Avatar billede coderdk Praktikant
16. januar 2009 - 16:59 #26
:-)
Avatar billede net-base.dk Nybegynder
23. januar 2009 - 22:46 #27
så fik i lidt point hver.

Lad nu være med at bruge dem alle på en gang ;)
Avatar billede majbom Novice
23. januar 2009 - 23:09 #28
tak for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester