mboost-dp1
Billede i MIME mail
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Hvordan får jeg et billede ind i min MIME mail. Det er ligemeget hvordan, det skal bare ind. Min kode er:
<?php
$afsendermail = "[email protected]";
$hjemmeside = "Morgenmusikken";
$mail = "[email protected]"; /* [email protected] */
$viderestil = "svar.htm";
/* Her hentes oplysningerne fra de udfyldte felter */
$Kontakt = $_REQUEST['Kontakt'] ;
$email="[email protected]"; /* E-mail */
$kopi = $_REQUEST['kopi'];
$Til = $_REQUEST['Til'] ;
$Dag = $_REQUEST['Dag'] ;
$Dat = $_REQUEST['Dat'] ;
$Mdr = $_REQUEST['Mdr'] ;
$klokken = $_REQUEST['klokken'] ;
$Spille_for = $_REQUEST['Spille_for'] ;
$Boadressen = $_REQUEST['Boadressen'] ;
$Postnummer = $_REQUEST['Postnummer'] ;
$Besked = $_REQUEST['Besked'] ;
$Aar = $_REQUEST['Aar'] ;
$Telefon = $_REQUEST['Telefon'] ;
$emne="Forespørgsel vedr. $Dag d. $Dat $Mdr $Aar";
$headers="From: $Kontakt <$email>\r\n";
$eol = "\r\n"; // Som beskrevet i RFC
$formularheaders = "From: $hjemmeside <$afsendermail>".$eol;
$formularheaders .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold
$formularheaders .= "Content-type: text/html; charset=ISO-8859-1". $eol;
/* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */
$oplysninger="Forespørgsel på $Til - www.morgenmusikken.dk:
$Dag d. $Dat $Mdr $Aar, kl. $klokken
Spille for: $Spille_for
Boadressen: $Boadressen
Postnummer: $Postnummer
Kontakt: $Kontakt
E-mail: $email
Telefon: $Telefon
Besked: $Besked
</body>
</html>";
/* Her samles oplysningerne til afsenderens kopi af mailen */
$kopimail="<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=ISO-8859-1'/>
</head>
<body>
<div style='height:250px; widht:100px; background:url(http://runescapenews.dk/Pstidsen/musik.gif)</div><br><br>
<h1>Til: $Kontakt</h1><br>
Fra: www.morgenmusikken.dk<br>
Du har sendt en forespørgsel vedrørende
$Dag d. $Dat $Mdr $Aar, kl. $klokken<br>
Spille for: $Spille_for<br>
Boadressen: $Boadressen<br>
Postnummer: $Postnummer<br>
Kontakt: $Kontakt<br>
E-mail: $email<br>
Telefon: $Telefon<br>
Besked: $Besked<br>
Vi sender nogle prøver på sange!<br>
venlig hilsen<br>
Morgenmusikken
";
/* Her sendes til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);
/* Her sendes en kopimail til afsenderen */
mail($email, $emne, $kopimail, $formularheaders);
/* Når mailen er sendt, viderestilles til denne hjemmeside */
header("Location: $viderestil");
?>
Overordnet er deres metode fornuftig nok. Dog er der en enkelt svaghed. Deres valg af separator afhænger kun af tidspunkt.Ronson (2) skrev:Liek tihs?
For at sikre korrekt parsing skal man være sikker på at ingen af de separatorer man anvender kan findes inde i en af filterne.
Man kan lige så godt gøre det rigtigt fra starten af. For når man først har skrevet kode som kan vedhæfte et billede til en email, så tænker man nok ikke så meget over det, hvis man på et senere tidspunkt har brug for at sende en email med et vedhæftet billede, som er uploadet af en anden bruger.
Og hvis ikke man har tænkt sig om fra starten af, så står man lige pludselig med et sikkerhedshul, hvor en bruger kan forudsige separatoren og uploade en billedfil som indeholder denne separator, og dermed er i stand til at vedhæfte vilkårlige filtyper til emailen.
Der er fire metoder som hver især burde være sikre til generering af separatoren.
Første metode er at bruge tilfældige data til sin separator. Det kræver at man har en måde at generere kryptografisk stærke tilfældige data. Om man kan det i php ved jeg ikke, men jeg vil gætte på at der er en måde. Og det er nok den nemmeste løsning.
Anden metode er at konstruere hele mailen med en placeholder værdi for separatoren (en hash værdi af modtager adresse og tidspunkt er fint til denne placeholder). Når man så har gjort dette tager man en kryptografisk hash af hele denne email. Så starter man forfra igen og bruger sidstnævnte hashværdi til separatorerne. Denne metode er langsommere og lidt mere kompliceret, men kræver ikke adgang til gode tilfældige tal, den kræver kun en god hash funktion.
Tredje metode er at gennemsøge de inkluderede filer for den genererede separator og blive ved med at hashe indtil den ikke findes i filen.
Fjerde metode er at bruge en encoding som sikrer at formatet af separatoren umuligt kan forekomme i de indkodede data. F.eks. ved at separatoren indeholder et tegn som ikke forekommer i encodingen.
Muligheden for at bruge den slags i en email blev fjernet engang i 90erne, da man fandt ud af at det ikke var særligt smart. Det kunne udnyttes i spam mails til at undersøge om en email var sluppet forbi filteret, hvilket gjorde det nemmere at justere spam mails så de kunne slippe forbi filtrering.pstidsen (5) skrev:Hvor dum kan man være?! Jeg er da en stor klovn!
Så har jeg brugt dagevis på at få det til at virke og så virker det ikke fordi jeg har glemt et lighedstegn efter src. Jeg havde bare skrevet<img src'http://minhjemmeside.dk/Pstidsen/billede.gif' />
Jeg gætter på at mange spam filtre i dag vil bruge et img tag som dit eksempel som et signal om at det sandsynligvis er en spam mail.
#6 - Tror ikke man skal bekymre sig om <img> tags og spam filtre (eksterne billeder er stadig hyppigt brugt i mails). Men vær opmærksom på at de fleste email klienter ikke viser eksterne billeder før du har accepteret det.
Kan desuden anbefale dig ikke at bruge mail(), brug istedet f.eks PECL mail eller PHPMailer klassen
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.