Hvordan sende mail fra en webside
Hvordan bruke php til å sende mail fra en webside
Hvis man for eksempel skal lage et webbasert bestillingsskjema er det ofte greit å få skjemaet til å sende en bekreftelse eller bestilling på mail. Her følger en rask, liten innføring i hvordan du kan få til dette.
Aller først må du ha en html-side med et sendeskjema
mail.html
<form method="post" action="mail.php">
<textarea name="body"></textarea>
<input type="submit" name="submit" value="send"/>
</form>
Skjemaet over videresender informasjon videre til mail.php, som tar seg av selve sendingen av mailen.
mail.php
<?php
// konfigurasjon
$to="s.sprett@ntnu.no";
$subject="automagisk mail fra webmailsendeskjemaet mitt";
// send mailen
if (mail($to, $subject, $_POST['body'])) {
print ( "Følgende mail ble levert til $to : \n" .
"Subject: $subject \n" .
"Melding: $_POST['body']"
);
}
else {
print ( "En feil oppstod ved sending av mail.. trykk back og prøv på ny.\n");
}
?>
To og Subject-headere er hardkoda (altså skrevet inn direkte av deg) for å passe på at bruker ikke får sendt mail andre steder enn dit vi vil. Dette er utrolig viktig, da misbruk av headere kan føre til at phpkoden vår sprer spam.
Muligheter for forbedring
er mange. Det jeg prøver å få frem er hvor viktig det er å begrense mulighetene brukeren har til å utnytte systemet. Forslag til endringer: PHP sin mail() har muligheten til å legge til ekstra headere:
mail( $to, $subject, $_POST['body'],
"From: Mitt webskjema <$brukernavn@$SERVER_NAME>\n" .
"X-Originating-IP: $REMOTE_ADDR\n"
);
$brukernavn bør typisk byttes ut med gyldig brukernavn.
mail() kan legge til options til sendmail, se man sendmail.
Man kan begrense hvilke ipadresser som får lov til å sende mail via skjemaet. Se eksempler på http://www.php.net/.
Konvertering fra FormMail.pl
Man må altså lage en mottakerdel som tar mot variablene fra formen, skriver ut de på en oversiktlig og fin måte, og sender hele greia med mail(). Det anbefales å skrive egne script for hver side. Mer generiske løsninger er lettere å misbruke.
| Languages: | Comments: | 0 | Aid: | 211 | User rating: |
|
|
| Last updated: | 2007-04-25 | Author: | langemyh | Read: | 6545 times |