Avatar billede hobbittend Novice
12. november 2010 - 23:31 Der er 31 kommentarer og
1 løsning

Hjælp til Mail()-funktionen

Jeg har lidt et problem her. Jeg skal have sendt en mail ud. Her bruger jeg:

mail($Modtager, 'Emne', $Besked, 'from: Freerun Denmark');

Min besked skal bestå af noget tekst, samt en masse ting fra nogle indtastede felter mm. Har fået hentet det hele i variabler, og får det tilsendt korrekt, men vil gerne have det stillet pænt op.

Lige nu bruger jeg:

$Besked = "Data 1: " . $variable1 . "Data 2: " . $variable2;

osv osv.
Jeg vil gerne have det listet op så jeg får hver enkelt data på hver sin linje i mailen.
Data 1: Indtastning 1
Data 2: indtastning 2

osv... Hvordan gør jeg det?




Som det andet problem har jeg , at æ, ø og å ser underlige ud. Både den hardcodede tekst, og teksten fra variablerne.. Hvad gør jeg for at det bliver læseligt?


Til sidst:
Jeg skriver mig som afsender som i kan se øverst i koden. Dog kommer der til at stå "Freerun$; Denmark@" som afsender i stedet.
Hvorfor? og hvordan får jeg det til at blive almindeligt?


på forhånd tak...
Avatar billede webweaver Praktikant
12. november 2010 - 23:52 #1
Du kan lave linieskift i PHP med \n.

$Besked = "Data 1: " . $variable1 . "\nData 2: " . $variable2;
Avatar billede webweaver Praktikant
13. november 2010 - 00:14 #2
Og angående de mærkelige tegn istedet for de danske bogstaver,

Så skift

mail($Modtager, 'Emne', $Besked, 'from: Freerun Denmark');

ud med

mail($Modtager, 'Emne', $Besked, 'from: Freerun Denmark' . "\n" . 'Content-type: text/html; charset=utf-8');

og se om det ikke vil gøre en forskel :)
Avatar billede cyberman29 Nybegynder
13. november 2010 - 00:11 #3
Det er sikkert smartest hurtigs, og nemmest at gøre som webweaver skriver... men man kunne også have gjort det på en anden måde, men som er længere kode og nogen vil måske sige at der er for mget "sovse kode", men jeg syntes alligevel du skal kunne se en anden løsning:

<html>
<?php
$variable1 = "text1";
$variable2 = "text2";
$Besked1 = $variable1;
$Besked2 = $variable2;
$data1 = "Data1:";
$data2 = "Data2:";
echo $data1 . " " . $Besked1;
?>
<p>
<?php
echo $data2 . " " . $Besked2;
?>

</html>

selfølgelig skal $variable1 og $variable 2 hentes fra din form, så jeg har bare puttet noget tekst ind istedet:)



Cyberman29
http://youhost.tk
Avatar billede cyberman29 Nybegynder
13. november 2010 - 00:20 #4
Du kan også bruge "<br />" istedet for "<P>" det er sådan smag og behag,

Der er også lige en ting jeg vil understrege, du skal gå efter webweaver's løsning da det er den som man "normalt" ville bruge og den er også helt klart smartest, hurtigs, og nemmest.... Grunden til at jeg lagde mit indlæg var bare, så du også kunne se en anden løsning:)

Så jeg håber ikke der er nogen som på en eller anden måde skulle blive vrede over mit indlæg




Cyberman29
http://youhost.tk
Avatar billede webweaver Praktikant
13. november 2010 - 00:31 #5
Hvem skulle blive vrede :)

At din løsning er forkert er en anden ting. Du må ikke kun sige <p> Så skal du sige <p>variabel her</p> ellers skal du bruge <br>, som du selv kommer ind på efterfølgende. Og så har du nogle opsætningsmæssige ting, som gør at det ikke vil virke.

Husk, hvis du begynder at bruge HTML i en mail, skal du bygge det op som en HTML side, for at det er korrekt. <html><head></head><body> og så videre ...
Det har du slet ikke med cyberman29. Du kan ikke bare smide <p> ind uden videre. Det vil blive vist som tekst. I dit tilfælde, vil <p> slet ikke komme med, da du ikke har det med i en variabel :)
Avatar billede cyberman29 Nybegynder
13. november 2010 - 00:45 #6
Kan godt se hvad du mener, og jeg tror vist også jeg havde misforstået han spørgsmål, for troede bare det skulle være noget text som så blev puttet i mailen, men nok om det:)... og grunden til jeg ikke havde <html><head></head><body> og så videre, med... var fordi jeg jo regnede med at han havde et grund kendskab til html, og gad derfor ikke tage det med... og ja, jeg kan godt se problemet med at jeg bare smider "<p>" ind... hvis det skulle have været en "fuld" løsning skulle den have set sådan her ud:

<!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=utf-8" />
<title>test</title>
</head>

<body>
<?php
$variable1 = "text1";
$variable2 = "text2";
$Besked1 = $variable1;
$Besked2 = $variable2;
$data1 = "Data1:";
$data2 = "Data2:";
$linjeskift = "<p>";
echo $data1 . " " . $Besked1;
echo $linjeskift;
echo $data2 . " " . $Besked2;
?>
</body>
</html>

Har jeg ret?



Cyberman29
http://youhost.tk
Avatar billede cyberman29 Nybegynder
13. november 2010 - 00:48 #7
og han kan selfølgelig skifte

$linjeskift = "<p>";

ud med

$linjeskift = "</br>";



Cyberman29
http://youhost.tk
Avatar billede Six Nybegynder
13. november 2010 - 01:46 #8
og han skylle så ydermere skifte

$linjeskift = "</br>";

ud med

$linjeskift = "<br />"; (Hvis det skal være XHTML) - ellers ville en alm. <br> gå an.
jf. http://www.w3schools.com/TAGS/tag_br.asp :)

Cyberman29 og nej, du har ikke ret i dit eksempel på en html-email ;)

Se her for et eksempel på en html-email: http://www.webhostingtalk.com/showthread.php?t=416467
Avatar billede cyberman29 Nybegynder
13. november 2010 - 08:54 #9
Undskyld det med: $linjeskift = "<br />"; (Hvis det skal være XHTML)


Men det andet du siger her: "Cyberman29 og nej, du har ikke ret i dit eksempel på en html-email ;)

Se her for et eksempel på en html-email: http://www.webhostingtalk.com/showthread.php?t=416467"

Jeg havde jo ikke vist et eksempel på det helle, kun det med at stille det pænt op... så der er du vist lidt galt på den, med at sige det er forkert.

Men ellers tak for kritiken:)



Cyberman29
http://youhost.tk
Avatar billede majbom Novice
13. november 2010 - 10:49 #10
-> cyberman - det skal jo så være xhtml (det er jo det du har defineret i din DOCTYPE)

og desuden skal du have al din html-kode ind i en variabel som du sender med i mailen som body'en - her udskriver du bare html'en til browseren...
Avatar billede cyberman29 Nybegynder
13. november 2010 - 10:56 #11
okay, men som jeg siger, viser jeg kun det med en "pæn" opstilling, og ikke noget andet:)



Cyberman29
http://youhost.tk
Avatar billede hobbittend Novice
15. november 2010 - 12:27 #12
Nu har jeg fået fjernet de mærkelige tegn i selve beskeden.

Men jeg kan ikke rigtigt skifte linje med \n
og jeg har stadig @; stående i afsenderen...
Avatar billede webweaver Praktikant
15. november 2010 - 16:42 #13
Udskriver den bare \n eller hvad gør den?
Avatar billede hobbittend Novice
16. november 2010 - 20:11 #14
Den gør nøjagtigt det samme som når det ikke står der...
Avatar billede webweaver Praktikant
16. november 2010 - 21:12 #15
Okay, fint nok. Så er det fordi at vi har smidt content-type på nu, og fortæller at det er en HTML mail.

Går ud fra du har hukset at sætte \n alle stederne, hvor der skal foretages linie skift? Og du kan også sagtens sætte 2 efter hinanden, for 2 linieskift. \n\n. Men i og med, at den ser det som HTML og ikke PHP længere, så skift \n ud med <br> og så burde det køre som ønsket :)
Avatar billede hobbittend Novice
17. november 2010 - 12:36 #16
Hej Lasse.
Ja naturligvis - det virker nu.

Så er der bare det at afsenderen står som "Freerun@; Denmark@" i stedet for Freerun Denmark.


mail($Modtager, 'Indsendt data til profil', $Besked, 'from: Freerun Denmark' . "\n" . 'Content-type: text/html; charset=utf-8');
Avatar billede webweaver Praktikant
17. november 2010 - 14:06 #17
Ja, det ved jeg ikke helt hvorfor. Det tyder lidt på at serveren er sat op til at gøre det. Jeg bruger selv "tekst" i from feltet, hvis der ikke er indtastet en mail, og det virker fint hos mig.

Jeg har det i en variabel, før jeg smider det ind i mail funktionen. Men det skulle være det samme. Men for en sikkedsheds skyld, kan vi jo prøve, og så lige med paranteres til at starte med, for at se om det gør forskellen.


$from = "(Freerun Denmark)";

mail($Modtager, 'Indsendt data til profil', $Besked, 'From:' .  $from . "\n" . 'Content-type: text/html; charset=utf-8');


Alternativt således for overskuelighedens skyld,

$from = 'From: (Freerun Denmark)' . \n" . 'Content-type: text/html; charset=utf-8';

mail($Modtager, 'Indsendt data til profil', $Besked, $from);
Avatar billede hobbittend Novice
17. november 2010 - 16:14 #18
Vi nærmer os her. Jeg har prøvet at rode lidt frem og tilbage med det du skriver. Nu kan jeg få "Freerun Denmark@" som afsender..
Det gør jeg med følgende kode:




$From = "(Freerun Denmark)";

$from = 'From: (Freerun Denmark)' . "\n" . 'Content-type: text/html; charset=utf-8';

mail($Modtager, 'Indsendt data til profil', $Besked, $from);
Avatar billede webweaver Praktikant
17. november 2010 - 17:06 #19
Du kan roligt fjerne din første linie.
Den bruger du til ingenting kan jeg se.

$From = "(Freerun Denmark)"; // Fjernes. Bruges ikke...

$from = 'From: (Freerun Denmark)' . "\n" . 'Content-type: text/html; charset=utf-8';

mail($Modtager, 'Indsendt data til profil', $Besked, $from);

Så om du har den første linie med eller ej, burde ikke ændre på resultatet. Jeg er dog ikke sikker på at du kan slippe af med det snabel-a. Jeg tror det sættes ind af serveren, som en sikkerhedsforanstaltning. Den vil nok have afsenderen skal være en mail. Hvis den ikke er det, bliver den højst sandsynligt anset som spam.

Hvor har du webhotel henne? Det virker hos mig, når man skriver tekst istedet for en mail. Jeg benytter mig af Surftown.

Prøv evt. lige at ændre teksten fra (Freerun Denmark) til bare (test) for at se om det har noget med at gøre, hvad parantesen indeholder.
Avatar billede hobbittend Novice
18. november 2010 - 18:11 #20
Den linje du omtaler er ikke i min kode, fik bare lavet noget rod da jeg copy pastede ;)

Jeg har prøvet at sætte "Test" ind nu, og den giver stadig Snabel-a

Jeg har snakket med supporten fra one.com, og de siger jeg er nødt til bruge en af mine oprettede e-mail konti, i stedet for ren tekst. Det må jeg jo så gøre...

Tusind tak for god hjælp.
smid et svar så sender jeg nogle point efter dig
Avatar billede hobbittend Novice
18. november 2010 - 18:15 #21
Og så lige den endelige kode for en god ordens skyld hvis andre har problemer :)



$Modtager = 'Mail@Domain.dk' . " , " . $_POST['Email'];

$from = 'From: Freerun Denmark <Mail@Domain.dk>' . "\n" . 'Content-type: text/html; charset=utf-8';

mail($Modtager, 'Indsendt data til profil', $Besked, $from);
Avatar billede webweaver Praktikant
18. november 2010 - 19:59 #22
Okay, det kan der ikke rettes ved så.
Men godt det kører nu :)

Tak for point.
Avatar billede hobbittend Novice
10. november 2011 - 21:40 #23
Nu har jeg problemet igen, men kan ikke løse det med ovenstående....


$Afsender = 'From: Afsender <Mail@Domain.dk>' . "\n" . 'Content-type: text/html; charset=utf-8' ;
mail($Modtager, 'Nyt indlæg i din gæstebog', $BeskedMail, $Afsender);

I min windows live mail skriver den underlige tegn i overskriften i oversigten, mens det ser korrekt ud i læseruden.

Nogen forslag?
Avatar billede majbom Novice
10. november 2011 - 22:07 #24
nu har jge ikke lige læst alle foregående indlæg, men er din fil du sender fra, encoded som utf-8?
Avatar billede webweaver Praktikant
10. november 2011 - 23:29 #25
Opret en ny tråd ...
Avatar billede hobbittend Novice
13. november 2011 - 16:42 #26
@splazz

Jaa, det skulle følgende linje klare, ikke?
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Avatar billede majbom Novice
13. november 2011 - 20:10 #27
nej, ikke kun dér.

hvilken editor bruger du til dine filer?
Avatar billede hobbittend Novice
15. november 2011 - 07:50 #28
Dreamweaver CS5
Avatar billede hobbittend Novice
15. november 2011 - 17:35 #30
Jep den er til Unicode utf-8
Avatar billede majbom Novice
15. november 2011 - 21:55 #31
hmm, så kan jge ikk elige se det - jeg er ikke voldsomt meget inde i de headers der, og det kunne godt være problemet. jeg plejer at bruge phpmailer - det virker hver gang :)
Avatar billede hobbittend Novice
16. november 2011 - 08:14 #32
Okay... Nå anyways, har bare skrevet headeren på engelsk, så er der ingen specialtegn. =)

Må sætte mig ind i phpmailer så :)
Fortsat god dag
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