Avatar billede Asky Forsker
12. februar 2012 - 19:59 Der er 35 kommentarer og
1 løsning

Design af FormMail

Mailen, der sendes fra mine formularer er ret kedelig. Er der nogen, der har lidt viden om, at peppe mailen lidt op med fx HTML tags??
Avatar billede expnet Seniormester
12. februar 2012 - 20:18 #1
Hej asky

Er det selve formularen eller det mails du sender ud du snakker om?
Avatar billede Asky Forsker
12. februar 2012 - 20:42 #2
Det er de mails, der sendes ud fra en bestillingsformular
Avatar billede pstidsen Novice
12. februar 2012 - 21:18 #3
Du skal have fat i MIME Mail. Det er lidt indviklet. Skriv din kode herind, så kan vi hjælpe ;)
Avatar billede Asky Forsker
12. februar 2012 - 22:18 #4
Det vil jeg gerne tage imod, men koden fylder en kvadratkilometer ;-)
Jeg sender et lidt forenklet uddrag i morgen, der viser systemet.
Avatar billede pstidsen Novice
12. februar 2012 - 22:42 #5
jeg skal bruge selve PHP koden den sender mailen. Den burde ikke være så lang igen.. HTML'en er ligegyldig.
Avatar billede Asky Forsker
13. februar 2012 - 07:56 #6
Her er den aktuelle kodestump, der sender mailen med en ret lang $besked.

$besked =wordwrap( $v1. " " $v2: " ".$v3." ".$4."\n\r  Navn: ".$navn." E-mail: " .$email." Adresse: ".$adresse. " Tlf.: " .$telefon. " Postnummer: " .$postnummer. " By: " .$by."\n\r Checkbos: " .$svar."\n\r Checkboxe: ".$I. " ".$string_groent."\n\r Dropdown: ".$N. " ".$string_frugt."\n\r Skole: ".$skole."\n\r  Arbejdskommune: ".$kommune. "\n\r CVR: ".$cvr. " EAN: ".$ean."\n\r Ordrenummer: " .$ordrenr." Kontering: " .$kontering."\n\r Skolenummer:  " .$skolenr."\n\r Bemærkninger:  " .$_POST['bem']);
$to = 'To: Navn <eksempel@eksempel.dk>, $visitor_email '."\r\n";
$from = "Afsender <anden@eksempel.dk>";
$ReplyTo = "Reply-To: xx@dom.dk";
$headers  = "MIME-Version: 1.0\r\n";                           
    $headers .= "$from\r\n"; //Sætter afsender i mailens header
    $headers .= "$ReplyTo\r\n"; //Sætter reply-to i mailens header 



mail($to, $emne, $besked, $headers); //Sender mailen


    echo "<p> Formularen er blevet sendt med følgende oplysninger: <br/> Navn: ".$navn." ".$adresse." ".$postnummer." ".$by."<br/> E-mail: ".$email."  Emne: ".$emne;
Avatar billede pstidsen Novice
13. februar 2012 - 11:32 #7
slet det du har med headers og indsæt i stedet:
$eol = "\r\n"; // Som beskrevet i RFC

$headers = "$from".$eol;
$headers .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold
$headers .= "Content-type: text/html; charset=iso-8859-1". $eol;

Når du har indsat ovenstående kan du i variablen $besked skrive:
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
og så få et HTML resultat ud i mailen.

Hvorfor har du har du både en from og en ReplyTo mailadresse? Det er da det samme?
Avatar billede Asky Forsker
13. februar 2012 - 13:48 #8
får denne fejl, selv om jeg har sat "" omkring.
Parse error: parse error, unexpected T_STRING in aeksempel.php on line 141
linie 141 står der <meta http-equiv="content-type" content="text/html; charset=utf-8/">
har prøvet at tage wordwrap væk. Det hjalp ikke.

Både reply og from - det er vist bare en tanketorsk...
Avatar billede pstidsen Novice
13. februar 2012 - 15:19 #9
Nåh ja det er min fejl. Det er noget jeg har kopieret og glemt at rette. Løs det ved at skifte " ud med ' i linje 141.

Hvis du senere skal have et billede ind så skal du også skrive <img src='http://www.ditdomæne.dk/mappe/billede.jpeg' /> og IKKE <img src="http://www.ditdomæne.dk/mappe/billede.jpeg" />
Avatar billede Asky Forsker
13. februar 2012 - 19:48 #10
Der er stadigvæk fejl:
Parse error: parse error, unexpected T_VARIABLE in aeksempel.php on line 146. Det er den linie, hvor mine vare_variabler begynder $v1 osv.
Har selv prøvet at finde fejlen, men det driller.
Avatar billede pstidsen Novice
13. februar 2012 - 19:55 #11
Skriv lige hele variablen ind her.
Avatar billede pstidsen Novice
13. februar 2012 - 19:58 #12
Og helst hele din kode. Du kan evt. uploade PHP filen til gupl.dk eller kopiere koden ind på pastebin.com
Avatar billede Asky Forsker
13. februar 2012 - 20:25 #13
Har fundet fejlen! Der manglede lige et punktum, og et sted stod der : i stedet for. Mine variabler hedder $v1 $v2 osv. Der manglede et par v-er. Så jeg takker mig selv for bøvlet.
Det gode ord KISS .....keep it simple stupid passer vist på mig.
Nu virker det!
Avatar billede Asky Forsker
13. februar 2012 - 20:28 #14
For tidlig begejstring. Nu viser den bare alle koderne mailen.
Avatar billede pstidsen Novice
13. februar 2012 - 20:42 #15
Jeg bliver nødt til at se koderne og især der hvor du har rettet for at hjælpe...
Avatar billede Asky Forsker
13. februar 2012 - 20:52 #16
$eol = "\r\n"; // Som beskrevet i RFC
$besked ="<!DOCTYPE html><html>
<head>
    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>
</head>
<body>
<h1>Prøve på design af mailen</h1>".
$v1. " " .$v2. " ".$v3." ".$v4."\n\r  Navn: ".$navn." E-mail: " .$email." Adresse: ".$adresse. " Tlf.: " .$telefon. " Postnummer: " .$postnummer. " By: " .$by."\n\r Checkbos: " .$svar."\n\r Checkboxe: ".$I. " ".$string_groent."\n\r Dropdown: ".$N. " ".$string_frugt."\n\r Skole: ".$skole."\n\r  Arbejdskommune: ".$kommune. "\n\r CVR: ".$cvr. " EAN: ".$ean."\n\r Ordrenummer: " .$ordrenr." Kontering: " .$kontering."\n\r Skolenummer:  " .$skolenr."\n\r Bemærkninger:  " .$_POST['bem'].
"</body>
</html>";
$to = "Asky <asky@asky.dk>"; 
$from = "afsender <nogen@nogen.dk>";
$headers = "$from".$eol;
$headers .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold
$headers .= "Content-type: text/html; charset=iso-8859-1". $eol;                         
 
mail($to, $emne, $besked, $headers); //Sender mailen
Avatar billede pstidsen Novice
13. februar 2012 - 22:42 #17
I variablen besked må du ikke have NOGEN doublequotes ", men kun single '.

Alt det her: $v1. " " .$v2. " ".$v3." ".$v4."\n\r  Navn: ".$navn." E-mail: " .$email." Adresse: ".$adresse. " Tlf.: " .$telefon. " Postnummer: " .$postnummer. " By: " .$by."\n\r Checkbos: " .$svar."\n\r Checkboxe: ".$I. " ".$string_groent."\n\r Dropdown: ".$N. " ".$string_frugt."\n\r Skole: ".$skole."\n\r  Arbejdskommune: ".$kommune. "\n\r CVR: ".$cvr. " EAN: ".$ean."\n\r Ordrenummer: " .$ordrenr." Kontering: " .$kontering."\n\r Skolenummer:  " .$skolenr."\n\r Bemærkninger:  " .$_POST['bem']

Hvor har du det fra? Gemmer du alle variablerne et andet sted med $_POST?
Avatar billede Asky Forsker
14. februar 2012 - 07:58 #18
Ja lige netop.
$emne = ($_POST['subject']);
$vare_2 = ($_POST['vare_2']);
$vare_3 = ($_POST['vare_3']);
$vare_4 = ($_POST['vare_4']);
$vare_5 = ($_POST['vare_5']);
$vare_6 = ($_POST['vare_6']);
$vare_7 = ($_POST['vare_7']);
$vare_8 = ($_POST['vare_8']);
$emne = ($_POST['subject']);
$navn = ($_POST['navn']);
$adresse = ($_POST['adresse']);
$postnummer = ($_POST['postnummer']);
$by = ($_POST['by']);
$telefon = ($_POST['telefon']);
$email = $_POST['email'];
$skole = $_POST['skole'];
$kommune = $_POST['kommune'];
$ean = $_POST['ean'];
$cvr = $_POST['cvr'];
$ordrenr = $_POST['ordrenr'];
$kontering =  $_POST['kontering'];
$skolenr = $_POST['skolenr'];

plus variabler for Dr0pDown og Checkboxe
Mailen med $besked virker fint, som den står, men jeg vil gerne styre layouten lidt.

Vil også gerne sende en CC til den der udfylder formularen efter opskriften:$headers .= 'Cc: $navn <$email> . "\r\n";
men det giver fejl. Har prøvet med forskellig syntaks, men ingen variationer virker rigtige.
Avatar billede Asky Forsker
14. februar 2012 - 08:00 #19
$vare_1 osv har jeg senere forkortet til $v1 $v2 i koden.
Avatar billede pstidsen Novice
14. februar 2012 - 10:10 #20
$headers .= 'Cc: $navn $email' . "\r\n";

burde sende en CC til kunden. Er det kun kunden eller skal din mail også styles med HTML?

Har du fået HTML koden til at virke overhovedet? =)
Avatar billede Asky Forsker
14. februar 2012 - 17:35 #21
Har fået 4 forskellige formularer med stor html-del og mange indputfelter til at virke ud fra en standardmodel, jeg hele tiden udvikler på. Den sender mails, når jeg taster almindelige e-mail adresser ind og der er kun problemer med syntaksen i CC. med $variabler.
Men som jeg skriver, vil jeg nu gerne få mailene til at se lidt mere "prof" og lettere læselige ud.
MEN html-koden i mailen har jeg ikke fået til at virke. Jeg har prøvet at skifte alle dobbeltquotes ud med ', men det giver også fejl, så i stedet for at eksperimentere i timevis, håber jeg, nogen kender opskriften ;-)
Avatar billede pstidsen Novice
14. februar 2012 - 20:29 #22
MIME Mail er meget "kræsent" og derfor SKAL man være meget punktlig!

Jeg har selv lavet flere scripts med <html> tags, men det er meget svært at hjælpe når man ikke har koden. Upload dem nu til www.gupl.dk (jeg er ligeglad med hvor laaaaaaaaaang den så end er...)
Avatar billede Asky Forsker
14. februar 2012 - 21:29 #23
Ved at læse i forskellige fora på nettet fandt jeg ud af, at det er RÆKKEFØLGEN i Headers,der var skurken. Min kodestump ser nu ud som nedenstående. Lige efter den første linie SKAL MIME-Version stå og derefter Content-type.
Ved at lave $email linjen, får den, der udfylder formularen også en mail. -og der må gerne være "" -er  Jeg prøver nu at sætte flere designkoder ind.
Tak for hjælpen. Du får pointsene ;-) 


$eol = "\r\n"; // Som beskrevet i RFC
$navn = $_REQUEST["navn"];
$email = $_REQUEST["email"];
$headers = "From: Asky <ham@selv.dk>\nBCC: Asky <ham@selv.dk>" .$eol;
$headers .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold
$headers .= "Content-type: text/html; charset=iso-8859-1". $eol;   

$besked ="<html>
<head>
    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>
</head>
<body>
<h1>Prøve på design af mailen</h1>".
$v1. " " .$v2. " ".$v3." ".$v4."\n\r  Navn: ".$navn." E-mail: " .$email." Adresse: ".$adresse. " Tlf.: " .$telefon. " Postnummer: " .$postnummer. " By: " .$by."\n\r Checkbos: " .$svar."\n\r Checkboxe: ".$I. " ".$string_groent."\n\r Dropdown: ".$N. " ".$string_frugt."\n\r Skole: ".$skole."\n\r  Arbejdskommune: ".$kommune. "\n\r CVR: ".$cvr. " EAN: ".$ean."\n\r Ordrenummer: " .$ordrenr." Kontering: " .$kontering."\n\r Skolenummer:  " .$skolenr."\n\r Bemærkninger:  " .$_POST['bem']."</body>
</html>";


                     
 
mail($email, $emne, $besked, $headers); //Sender mailen
Avatar billede pstidsen Novice
14. februar 2012 - 22:58 #24
Så alt virker nu?

Du giver points ved at acceptere MIT svar (og ikke dit eget ;))
Avatar billede Asky Forsker
14. februar 2012 - 23:23 #25
Ja, det virker. Men jeg er ikke sikker på, man kan sætte en <style> tag ind i <head>i mailen. Det var ellers det letteste.
Jeg har prøvet at skrive fx<h4 style='font-family: Verdana; font-weight: normal'>, men det giver ikke samme teksttype og farve hele mailen igennem, men det bliver ihvertfald lavet om. I morgen kigger jeg nærmere på <style> i HTML og hvor der stopper i mailen. Har før arbejdet en del med stylesheets, men her skal det jo stå enten i head eller i selve teksten. Hvis du ved noget om det, må du gerne skrive det ind her.
Avatar billede pstidsen Novice
14. februar 2012 - 23:51 #26
Du skal i head'eren skrive:
<style type="text/css">

h4 {font-family: Verdana; font-weight: normal}

</style>

Det burde virke, men hvis ikke, så kan du ikke bare lave inline styling.
Avatar billede NielsErikP Mester
15. februar 2012 - 00:18 #27
Hej...

@pstidsen: Det burde virke, men hvis ikke, så kan du ikke bare lave inline styling. >, ved du så om det stadigt er lovligt at sætte id og class på, når det handler om Html i mails ??

@Asky:
Hvordan kan det være du har 2 forskellige Encodings ?

$headers .= "Content-type: text/html; charset=iso-8859-1 ". $eol;

og :

<meta http-equiv='content-type' content='text/html; charset=utf-8 '/>
Avatar billede pstidsen Novice
15. februar 2012 - 00:23 #28
ved du så om det stadigt er lovligt at sætte id  og class  på, når det handler om Html  i mails ??
Nej, det ved jeg faktisk ikke. Det var også derfor jeg skrev det med at hvis det ikke virkede... =)

Mht. encodings så bruger jeg altid utf-8 på hjemmesider, men har mærkelige grunde virker det ikke med æ ø å i mail. Derfor siger min erfaring at man desværre må blive nøde til at bruge iso-8859-1...
Avatar billede NielsErikP Mester
15. februar 2012 - 00:42 #29
@pstidsen: Okay... Havde jo bare fulgt med i tråden her... og undrede mig lidt over det... men så kan de 2 standarder iso-8859-1 og utf-8 altså godt fungere i samspil...
Hvad mon http://validator.w3.org/ siger om den slags ?
Avatar billede pstidsen Novice
15. februar 2012 - 01:01 #30
#29: Nåh nu forstår jeg! Dooh min fejl!

Asky: Du skal bruge iso-8859-1 begge steder :-)
Avatar billede Asky Forsker
15. februar 2012 - 07:44 #31
Tak for tippet.
ved <style type="text/css">
</style> får jeg fejl.
Det skal nok være<style type='text/css'>

h4 {font-family: Verdana; font-weight: normal}

</style>
Jeg tester det lige.
http://validator.w3.org har jeg brugt en del. Det er lærerigt mht. syntaks. Jeg har ikke turdet teste, når der er php med.
Avatar billede Asky Forsker
15. februar 2012 - 09:10 #32
Dette i head giver et vist layout, men det kan ikke styres i alle detaljer fx farver.
<style type='text/css'>
#body{
h1 {font : normal bold 16px Verdana; color : #000000; text-align : left;}
h2 {font : normal 14px Verdana; color : #000000;}
h3 {font : bold 12px Verdana; color : #000000;}
h4  {font : normal 14px Verdana; color : #000000;}
p {font : normal 12px Verdana; color : #00000; text-align:left;}
}
</style>
Avatar billede pstidsen Novice
15. februar 2012 - 09:24 #33
#32: Det var underligt! Hmmm.. Hvad kan det skyldes? Prøv indline styling.
Avatar billede Asky Forsker
21. februar 2012 - 09:28 #34
$eol = "\r\n"; // Som beskrevet i RFC
$navn = $_REQUEST["navn"];
$email = $_REQUEST["email"];
$headers = "From: afsender <min@mail.dk>\nBCC: navn <min@mail.dk>".$eol;
$headers .= "MIME-Version: 1.0".$eol; // fortæller at det er en MIME mail - f.eks. HTML indhold
$headers .= "Content-type: text/html; charset=iso-8859-1".$eol;//. $eol;   
$besked ="<html>
<head>
    <meta http-equiv='content-type' content='text/html; charset=iso-8859-1'/>
<style type='text/css'>
#body{
h1 {font-family : Verdana, Tahoma, sans-serif; font-size: 16px ;  text-align : left; color:#000000;}
h2 {font-family : Verdana, Tahoma, sans-serif; font-size 14px; text-align : left;}
h3 {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,5 ;X text-align : left; color : #000000;}
h4  {font-family : Verdana, Tahoma, sans-serif; font-size: 10px/1,5 ;  text-align : left; }
p {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,3 ;  text-align : left; color :#000000;}
}
</style>
</head>
<body>
<h1>Hej $navn, <br/>her er din $emne</h1>"."<h3>"
.$v1. "firma: ".$firma." Kundenr: ".$kundenr."Navn: ".$navn." E-mail: ".$email." Adresse: ".$adresse. " Tlf.: " .$telefon. "\r\n Postnummer: " .$postnummer. " By: " .$by." Bemærkninger:  " .$_POST['bem']
."<br/><br/>Venlig hilsen<br/></h3><h1>Underskrift</h1></body></html>";
mail($email, $emne, $besked, $headers); //Sender mailen

Sådan kom det til at se ud. Man kan dog ikke regne med, at alle mailklienter bruger den valgte skrifttype. I headers er rækkefølgen afgørende vigtig!

Så er det problem også løst. jeg takker.
Avatar billede Asky Forsker
21. februar 2012 - 09:29 #35
Denne tråd var særdeles nyttig.
Avatar billede pstidsen Novice
21. februar 2012 - 10:48 #36
ja mit mailprogram skal bruge iso-8859-1 selvom utf-8 burde være bedre... Det er jo standard på hjemmesider ;)
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