Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Pošiljanje pošte v PHP

  Naučili se bomo, kako lahko ustvarimo enostaven obrazec za pošiljanje elektronske pošte, ki ga lahko postavite na spletno stran.
 
 
1
 
 

Obrazec za pošiljanje pošte v PHP bom izdelali v programu Dreamweaver.

Odpremo nov dokument in izberemo zavihek Forms, preko katerega bomo na obrazec dodali polja za vpis.

 

 
 
2
 
 

Najprej dodamo tri polja tipa Text Field.

 
 
3
 
 

Ker želimo, da bo vnosno polje za sporočilo nekoliko večje, na obrazec dodamo še polje tipa Textarea.

Na koncu dodamo še gumb, s pomočjo katerega bomo poslali sporočilo.

 
 
4
 
 

Vsa polja, ki smo jih dodali na obrazec, moramo sedaj določiti imena.

Po vrsti jih poimenujemo: posiljatelj, prejemnik, zadeva, sporocilo

 
 
 
 
 
5
 
 

Celotna koda koda obrazca se nahaja spodaj:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>E-mail SMTP</title>
</head>

<body>
<p><strong>Obrazec za pošiljanje elektronske pošte </strong></p>
<form method="post" action="">
<p>Pošiljatelj:
   <input name="posiljatelj" type="text" id="posiljatelj">
</p>
<p>Prejemnik:
   <input name="prejemnik" type="text" id="prejemnik">
</p>
<p>Zadeva:
   <input name="zadeva" type="text" id="tema">
</p>
<p>Sporočilo:<br>
   <textarea name="sporocilo" cols="32" rows="7" id="sporocilo"></textarea>
</p>
<p>
   <input type="submit" name="Submit" value="Pošlji">
 </p>
</form>  
 <p>&nbsp; </p>
</body>
</html>

 
 
6
 
 

Sedaj moramo napisati še funkcijo, ki bo ob oddaji obrazca poslala elektronsko pošto.

V ta namen na začetku, pred <html> značko, vrinemo naslednjo kodo:

<?php
if (isset($_POST['prejemnik'])) {
  if ( !empty($_POST['posiljatelj']) && !empty($_POST['prejemnik']) && !empty($_POST['zadeva']) && !empty($_POST['sporocilo']) ) {
  
    $headers = "MIME-Version: 1.0"."\r\n";
    $headers .= "Content-Type: text/html; charset=utf-8"."\r\n";
    $headers .= "From: ".$_POST['posiljatelj']."\r\n";
  
    if (mail($_POST['prejemnik'], $_POST['zadeva'], $_POST['sporocilo'], $headers)) {
        echo "<b>E-pošta je bila uspešno poslana!</b><br /><br />";
    } else {
       echo "<b>E-pošta ni bila poslana. Izpolniti je potrebno vse podatke.</b><br />";
    }
  }
}
?>


Kot vidimo, najprej preverimo, ali obstaja spremenljivka $_POST['prejemnik']. S tem preverimo, ali gre za oddajo obrazca ali pa je stran prikazana prvič in moramo samo prikazati prazna polja za vnos.

V naslednjem koraku preverimo, ali so bile vnesena vsa izpolnjena polja.

V spremenljivki $headers nato definiramo, da pošiljamo v formatu UTF-8 ter kdo se bo v e-sporočilo prikazal kot pošiljatelj.

Na koncu s pomočjo funkcije mail pošljem sporočilo ter v primeru, da je bilo uspešno poslano, izpišemo obvestilo.

 
 
7
 
 
 
 
Komentiraj
 
 
 
 
 
9.6.2011, 14:38
Točno to sem iskal za mojo stran, ampak kode na žalost nisem našel, na zadnje pa se pojavi na zmagi
 
 
 
 
10.6.2011, 14:52
Meni pa ne dela. Sem naložil na strežnik, pa se mi potem, ko kliknem pošlji, samo polja spraznejo pa nič ne napiše

spremenil: podtalje (10.6.2011 ob 16.36.58)
 
 
 
 
10.6.2011, 16:40
Sem še enkrat preveril kodo in bi moralo delovati, če si naredi po lekciji.

Si iz lekcije samo skopiral kodo ali si tudi kaj spreminjal?

Preveri, da imaš pravilno določena imena polj posiljatelj, prejemnik, zadeva, sporocilo in da pri oddaji ta polja niso prazna.
 
 
 
 
10.6.2011, 18:24
Pravzaprav sem samo skopiral kodo obrazca ker jaz nimam tiste vrstice z zavihki.

spremenil: sasko.123 (10.6.2011 ob 18.26.57)
 
 
 
 
10.6.2011, 23:06
Na kateri strežnik si pa naložil? Ali podpira PHP? Mogoče ima ta strežnik blokirano pošiljanje mail-ov.
 
 
 
 
12.6.2011, 13:16
Kako bi pa naredil, da bi bila pošiljatelj in zadeva že izpolnjena?

Lp,
SloChampion
 
 
 
 
12.6.2011, 15:21
Naložil sem ga na strežnik 000space.com in zagotovo podpira php saj sem poskusil naložiti stran na kateri se lahko objavljajo komentarji (http://zmaga.com/ucenje.php?t=0&id=1....) in je delovalo.
 
 
 
 
12.6.2011, 18:56
SloChampion:
Kako bi pa naredil, da bi bila pošiljatelj in zadeva že izpolnjena?
Lp,
SloChampion


Takoj na začetku definiraj pošiljatelja:
<?php
$_POST['posiljatelj']='poljuben.uporabnik@domena.com';
...

Nato pa v obrazcu odstrani polje za vnos pošiljatelja.


spremenil: podtalje (12.6.2011 ob 18.57.37)
 
 
 
 
12.6.2011, 19:00
sasko.123:
Naložil sem ga na strežnik 000space.com in zagotovo podpira php saj sem poskusil naložiti stran na kateri se lahko objavljajo komentarji (http://zmaga.com/ucenje.php?t=0&amp;....) in je delovalo.


Sem še enkrat pregledal kodo in v njej res našel eno napako, kar je bil razlog, da v prvo ni nič izpisalo. Sem sedaj v lekciji popravil kodo.

Sem pa preveril tudi na 000space.com in PHP res podpira. Vendar pa mora ponudnik podpirati tudi funkcijo mail() za pošiljanje pošte, kar pa zgleda, da ne tem gostovanju ni podprto.

Nepodpora tej funkciji je drugače na brezplačnih strežnikih dokaj pogosta, saj se to velikokrat zlorablja za pošiljanje neželene elektronske pošte.
 
 
 
 
13.6.2011, 16:54
Podtalje: aha...pa še nekaj...kako bi pa naredil da bi bila zadeva in prejemnik že vpisana?
 
 
 
 
13.6.2011, 18:57
Narediš enako, kot za pošiljatelja. Na vrhu kode naj bosta ta dva polja izpolnjena:

<?php
$_POST['prejemnik']='poljuben.uporabnik@domena.com';
$_POST['zadeva']='poljuben.uporabnik@domena.com';
$_POST['posiljatelj']='poljuben.uporabnik@domena.com';
if (isset($_POST['sporocilo'])) {
...


V obrazcu pa potem odstraniš ta dva polja.

Pozoren bodi tudi na novi if stavek v zgornji kodi, saj sedaj preverjaš, ali je bilo oddano sporocilo in ne več prejemnik, saj je v tem novem primeru prejemnik vedno izpolnjen in bi se tako funkcija vedno izvršila, kar pa ne bi bilo prav, saj se mora izvršiti samo ob oddaji obrazca.


spremenil: podtalje (13.6.2011 ob 18.58.27)
 
 
 
 
13.6.2011, 18:59
aha hvala
 
 
 
 
29.5.2012, 9:24
kako pa naredim, da ko prejmem pošto pošiljatelj ni nek čuden mail ampak mail (noreply@streznik.net,...), ki ga je pošiljatelj vpisal in lahko enostavno dogovorim samo z Reply ?
 
 
 
 
29.5.2012, 10:44
Kdo pošilja določiš v polju pošiljatelj.Tu napišeš poljuben email.
 
 
 
 
13.7.2012, 9:54
No mene pa zanima kaj moram upisati, da bo človek samo utipkal svoj mail, zadevo in sporočilo, da mi bo meni poslalo na mail: info@frncwz.hostzi.com prek 000space-a. Prilagam sliko v kateri so vpisani nekateri podatki...



 
 
 
 
16.7.2015, 14:40
Ne napiše mi pošiljatelja.
 
 
 
 
16.7.2015, 23:05
Ali to misliš v pošti, ki jo dobiš? Kaj pa je napisano kot pošiljatelj?
 
 
 
 
17.7.2015, 19:31
zakaj men ne dela?

 
 
 
 
5.3.2017, 13:32
Kje napišeš, kam naj ti pošlje? Jaz sem celotno kodo samo prekopiral in mi izpiše:
E-pošta je bila uspešno poslana!

"; } else { echo "E-pošta ni bila poslana. Izpolniti je potrebno vse podatke.
"; } } } ?>

Kaj naj naredim?

 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!