/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Mailproblem
Fra : Ohlzen


Dato : 23-06-04 02:44

Hej NG,

Jeg er totalt ny i php, men skal nok få det lært...

Jeg har et script som sender en e-mail fra min hjemmeside, og det
fungerer som det skal, men den e-mail jeg modtager kunne jeg godt
tænke mig så lidt anderledes ud.

Koden er som følger (her kun vist det det drejer sig om):

<?
if((isset($_POST['navn'])) && (isset($_POST['email'])) &&
(isset($_POST['emne'])) && (isset($_POST['besked']))){
mail("min@email.dk", $_POST['emne'] ,
$_POST['navn'].
$_POST['adresse'].
$_POST['postnr'].
$_POST['by'].
$_POST['Telefon_dag'].
$_POST['Telefon_aften'].

"\n\n- har skrevet følgende besked:\n\n".$_POST['besked'] ,
"From: ".$_POST['email']);

echo "Tak for din henvendelse<br><br>Vi vender snarest<br>muligt
tilbage...";

} else {
?>

Når jeg modtager ovenstående e-mail, står afsenders data i een
lang linie uden mellemrum eller noget som helst
(f.eks.: Jens JensenSøndergade 215000OdenseC1234567876543210)
- jeg ville gerne ha' at der er linieskift mellem hvert
"$_POST['Telefon_aften']."
(F.eks.:
Jens Jensen
Søndergade 21
5000 Odense C
12345678
76543210)

Er der mon en som forstår mit ønske - og kan hjælpe??

På forhånd tak
\Ohlzen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Bertel Lund Hansen (23-06-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-06-04 06:30

Ohlzen skrev:

>Jeg har et script som sender en e-mail fra min hjemmeside, og det
>fungerer som det skal, men den e-mail jeg modtager kunne jeg godt
>tænke mig så lidt anderledes ud.

Du skal bruge "\n" som er koden for linjeskift. Den virker kun i
dobbelte anførselstegn.

>Koden er som følger (her kun vist det det drejer sig om):
>if((isset($_POST['navn'])) && (isset($_POST['email'])) &&
>(isset($_POST['emne'])) && (isset($_POST['besked']))){

Ryd lidt op i parenteserne:

if (isset($_POST['navn']) && isset($_POST['email']) &&
isset($_POST['emne']) && isset($_POST['besked'])) {

mail("min@email.dk", $_POST['emne'] ,
$_POST['navn']."\n".
$_POST['adresse']."\n".
$_POST['postnr']."\n".
$_POST['by']."\n".
$_POST['Telefon_dag']."\n".
$_POST['Telefon_aften']."\n".
"\n\n- har skrevet følgende besked:\n\n".$_POST['besked']."\n" ,
"From: ".$_POST['email']);

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Jeppe Uhd (23-06-2004)
Kommentar
Fra : Jeppe Uhd


Dato : 23-06-04 08:06

Bertel Lund Hansen wrote:
> Ohlzen skrev:
>
>> Jeg har et script som sender en e-mail fra min hjemmeside, og det
>> fungerer som det skal, men den e-mail jeg modtager kunne jeg godt
>> tænke mig så lidt anderledes ud.
>
> Du skal bruge "\n" som er koden for linjeskift. Den virker kun i
> dobbelte anførselstegn.

Delvist korrekt... Man skal bruge "\r\n" (Carriage return + linefeed) og
ikke "kun" "\n".

--
MVH Jeppe Uhd - NX http://nx.dk
Webhosting for nørder og andet godtfolk



Bertel Lund Hansen (23-06-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-06-04 08:23

Jeppe Uhd skrev:

>Delvist korrekt... Man skal bruge "\r\n" (Carriage return + linefeed) og
>ikke "kun" "\n".

Prøv at kikke på http://fiduso.dk/?page=indmeldelse ... øh, nå nej, man kan
jo kun se HTML'en, men der er kun brugt "\n".

En del af koden ser sådan ud:

else {
if (strcmp($show,'Ja')==0) $mailcontent.=
"<tr><td align=\"right\">$numb</td><td><a class='ekstern' href='mailto:$email'>$name</a></td>\n";
else $mailcontent.=
"<tr><td align='right'>$numb</td><td>$name</td>\n";
$mailcontent.="\t<td>$born</td><td>$living</td><td>$year</td>\n";
if ($home>'') $mailcontent.="\t<td><a class='ekstern' href='$home'>Ja</a></td></tr>\n";
else $mailcontent.="\t<td> </td></tr>\n";
$subject="Medlemskab for $name";
}

Det giver følgende udseende i den mail jeg modtager:

<tr><td align="right">1</td><td><a class='ekstern' href='mailto:nospamius@lundhansen.dk'>Bertel Lund Hansen</a></td>
   <td>Århus</td><td>Horsens</td><td>1948</td>
   <td> </td></tr>

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Kim Andersen (23-06-2004)
Kommentar
Fra : Kim Andersen


Dato : 23-06-04 09:16

> >Delvist korrekt... Man skal bruge "\r\n" (Carriage return + linefeed) og
> >ikke "kun" "\n".
>
> Prøv at kikke på http://fiduso.dk/?page=indmeldelse ... øh, nå nej, man
kan
> jo kun se HTML'en, men der er kun brugt "\n".

Ohlzen sender jo en email i plain-text og ikke som en html email, så det er
i dit eksempel.
Så der for "\r\n"

/Kim



Bertel Lund Hansen (23-06-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-06-04 09:50

Kim Andersen skrev:

>Ohlzen sender jo en email i plain-text

Det gør jeg også. Den viste kode er den jeg får i en tekstmail.
Den skal bare bruges til at indsætte i en HTML-side.

>Så der for "\r\n"

Det er ikke nødvendigt.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Tonni Aagesen (23-06-2004)
Kommentar
Fra : Tonni Aagesen


Dato : 23-06-04 10:22

Bertel Lund Hansen wrote:

>>Så der for "\r\n"
>
> Det er ikke nødvendigt.

Hvis man interesserer sig kompabilitet... så er det.


Mvh
Tonni

Jeppe Uhd (23-06-2004)
Kommentar
Fra : Jeppe Uhd


Dato : 23-06-04 10:13

Bertel Lund Hansen wrote:
> Kim Andersen skrev:
>
>> Ohlzen sender jo en email i plain-text
>
> Det gør jeg også. Den viste kode er den jeg får i en tekstmail.
> Den skal bare bruges til at indsætte i en HTML-side.
>
>> Så der for "\r\n"
>
> Det er ikke nødvendigt.

Men visse mailsystemer fatter det ikke hvis du ikke bruger "\r\n"... At du
så er heldig med dit...

--
MVH Jeppe Uhd - NX http://nx.dk
Webhosting for nørder og andet godtfolk



Bertel Lund Hansen (23-06-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-06-04 10:30

Jeppe Uhd skrev:

>Men visse mailsystemer fatter det ikke hvis du ikke bruger "\r\n"... At du
>så er heldig med dit...

Okay, det var jeg ikke klar over. Tak.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Kim Emax (23-06-2004)
Kommentar
Fra : Kim Emax


Dato : 23-06-04 10:20

Bertel Lund Hansen wrote:

>> Så der for "\r\n"
>
> Det er ikke nødvendigt.

på unix, ja, på Windows, nej, der er \r nødvendigt.

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Peter Brodersen (23-06-2004)
Kommentar
Fra : Peter Brodersen


Dato : 23-06-04 19:11

On Wed, 23 Jun 2004 11:20:03 +0200, "Kim Emax"
<newsgroup@remove-emax.dk> wrote:

>>> Så der for "\r\n"
>>
>> Det er ikke nødvendigt.
>
>på unix, ja, på Windows, nej, der er \r nødvendigt.

Hvorfor overhovedet gå ud og udfordre standarderne? Det burde ikke
have noget at gøre med hvordan, linjer termineres på forskellige
operativsystemer, men hvad standarderne foreskriver.

Givet, vi har et lag imellem at snakke direkte med SMTP-serveren, men
der er stadigvæk ingen grund til at gå ud i risikozonen.

For stort set samtlige ordinære protokoller er CRLF linje- eller
kommandoterminator. Det gælder en lang række standarder, og har intet
at gøre med forskellen mellem Unix eller Windows. Desværre er der vist
en generel sammenblanding af en lang række faktorer, der fejlagtigt
ender op i en spøjs konklusion i stil med at "Unix er mere
Internet-compliant end Windows, så derfor må en Unix-egenskab også
kunne tilskrive en Internet-standard".

Et par udpluk fra diverse RFC'er for SMTP, HTTP, POP3, IMAP4, FTP,
NNTP viser, at der konsekvent bruges CRLF:

RFC2821 (SMTP):
==
2.3.7 Lines

SMTP commands and, unless altered by a service extension, message
data, are transmitted in "lines". Lines consist of zero or more data
characters terminated by the sequence ASCII character "CR" (hex value
0D) followed immediately by ASCII character "LF" (hex value 0A).
This termination sequence is denoted as <CRLF> in this document.
Conforming implementations MUST NOT recognize or generate any other
character or character sequence as a line terminator. Limits MAY be
imposed on line lengths by servers (see section 4.5.3).

In addition, the appearance of "bare" "CR" or "LF" characters in text
(i.e., either without the other) has a long history of causing
problems in mail implementations and applications that use the mail
system as a tool. SMTP client implementations MUST NOT transmit
these characters except when they are intended as line terminators
and then MUST, as indicated above, transmit them only as a <CRLF>
sequence.
==

RFC2616 (HTTP):
==
2.2 Basic Rules
[..]
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all
protocol elements except the entity-body (see appendix 19.3 for
tolerant applications). The end-of-line marker within an entity-body
is defined by its associated media type, as described in section 3.7.
==

RFC1939 (POP3):
==
3. Basic Operation
[..]
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all
protocol elements except the entity-body (see appendix 19.3 for
tolerant applications). The end-of-line marker within an entity-body
is defined by its associated media type, as described in section 3.7.
==

RFC2060 (IMAP4):
==
2.2. Commands and Responses
[..]
All interactions transmitted by client and server are in the form of
lines; that is, strings that end with a CRLF.
==

RFC959 (FTP):
==
5.3. COMMANDS
[..]
The argument field consists of a variable length character string
ending with the character sequence <CRLF>
==

RFC977 (NNTP), 2.3:
==
2.3. Commands
[..]
Each command line must be terminated by a CR-LF (Carriage Return -
Line Feed) pair.
==

--
- Peter Brodersen

Ugens sprogtip: underholdsbidrag (og ikke underholdningsbidrag)

Ohlzen (23-06-2004)
Kommentar
Fra : Ohlzen


Dato : 23-06-04 11:40

Bertel Lund Hansen wrote in
dk.edb.internet.webdesign.serverside.php:
> Kim Andersen skrev:
>
> >Ohlzen sender jo en email i plain-text
>
> Det gør jeg også. Den viste kode er den jeg får i en tekstmail.
> Den skal bare bruges til at indsætte i en HTML-side.
>
> >Så der for "\r\n"
>
> Det er ikke nødvendigt.
>

Det ER altså nødvendigt i mit tilfælde.

Prøvede KUN med "\n" men uden held, så rettede jeg til "\r\n", og
nu fungerer det som det skal...

\Ohlzen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Kim Emax (23-06-2004)
Kommentar
Fra : Kim Emax


Dato : 23-06-04 14:51

Ohlzen wrote:

> Det ER altså nødvendigt i mit tilfælde.
>
> Prøvede KUN med "\n" men uden held, så rettede jeg til "\r\n", og
> nu fungerer det som det skal...

Du kører på en windows server, ik?

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Ohlzen (24-06-2004)
Kommentar
Fra : Ohlzen


Dato : 24-06-04 06:21

Kim Emax wrote in dk.edb.internet.webdesign.serverside.php:
>
> Du kører på en windows server, ik?
>
Det ved jeg ærlig talt ikke (hmm!) Mit problem er hostet på 1go.dk...

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Kim Emax (24-06-2004)
Kommentar
Fra : Kim Emax


Dato : 24-06-04 10:47

Ohlzen wrote:

>> Du kører på en windows server, ik?
>>
> Det ved jeg ærlig talt ikke (hmm!) Mit problem er hostet på
> 1go.dk...

print phpinfo();

er din ven, her kan du se, hvilket OS serveren kører.

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Ohlzen (23-06-2004)
Kommentar
Fra : Ohlzen


Dato : 23-06-04 08:26

>
> Man skal bruge "\r\n" (Carriage return + linefeed) og > ikke "kun" "\n".
>
> --
> MVH Jeppe Uhd - NX http://nx.dk
> Webhosting for nørder og andet godtfolk
>
>
Jeg siger jer begge mange tak for hjælpen

\Ohlzen - som stadig sidder og smiler

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408848
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste