X

Zmaga.com | Zmagajmo z znanjem  
Programi Programski jeziki PHP in mysql  
  Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Pošiljanje pošte v PHP

  Možnosti
   
  Naučili se bomo, kako lahko ustvarimo enostaven obrazec za pošiljanje elektronske pošte, ki ga lahko postavite na spletno stran.
 
 
1
 
 
  V programu Dreamweaver odpremo nov dokument.

Najprej 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 ";
    $headers .= "Content-Type: text/html; charset=utf-8 ";
    $headers .= "From: ".$_POST['posiljatelj']." ";
  
    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
 
 
  Obrazec moramo sedaj naložiti na spletni strežnik ter ga odpreti v našem brskalniku.

Sedaj izpolnite polja in pošljite obrazec.

Po oddaji obrazca bi se moralo izpisati sporočilo, da je bila elektronska pošta uspešno poslana.
 
 
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...



 
Prijava in registracija
 
 
 
 
 
 
  Zmaga.com | Zmagajmo z znanjem
 
  Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, nudi enkraten način spoznavanja z različnimi svetovnimi jeziki, vas s podrobno obrazloženimi recepti nauči kulinarike in vam prežene strahove pred domačimi opravili.