Slika 1 HTML koda obrazca za povratne informacije
Na naslednjem posnetku zaslona si lahko ogledate, kako na koncu izgleda obrazec za povratne informacije, prikazan tukaj.
torej zahtevani obrazec ustvarili. In zdaj lahko preidete na vprašanja obdelave in pošiljanja podatkov v obliki e-poštnega sporočila.
Namestitev knjižnice PHPMailer
Kot smo že omenili, bomo za pošiljanje pošte uporabljali knjižnico PHPMailer, ki bo zelo poenostavila pošiljanje e-pošte prek protokol SMTP z avtorizacijo v poštni storitvi tretje osebe.
Če ga želite namestiti, morate prenesti potrebne datoteke. To lahko storite v spletni storitvi GitHub z uporabo Composerja (upravljalnik odvisnosti od paketov za PHP). Ali preprosto prenesite potrebne datoteke na običajen način.
posnetek zaslona 73
Spodaj je stran spletne storitve GitHub, kjer je označena povezava do običajnega prenosa knjižnice PHPMailer.
Poleg tega Najnovejša različica 6.0.7, ki je bil shranjen v času pisanja tega članka, lahko prenesete iz priloženih materialov.
V vsakem primeru je treba nastalo arhivsko datoteko razpakirati, nato pa ekstrahirano mapo PHPMailer-master z vso njeno vsebino postaviti v koren mesta. Hkrati ga lahko zaradi enostavnosti preimenujete v PHPMailer. Spodaj je vsebina mape PHPMailer v korenskem imeniku spletnega mesta.
Tako smo namestili knjižnico PHPMailer. Po tem lahko začnemo ustvarjati skripto, s katero bomo pošiljali e-poštna sporočila z naše spletne strani.
Izdelamo skripto za pošiljanje pošte preko SMTP
Za sestavljanje skripta je dovolj, da uporabite priporočila za uporabo PHPMailerja, podana na strani GitHub, ki smo jih prej uporabili za prenos knjižnice.
Zlasti navajajo, da je na začetku skripta potrebno uvoziti razrede PHPMailer v globalni imenski prostor. In podane so posebne vrstice ustrezne kode. Obstajajo tudi primeri uporabe lastnosti in metod PHPMailerja, vključno z možnostjo pošiljanja pošte prek SMTP.
Če pa to ni dovolj, potem lahko uporabite tudi dokumentacijo, ki vsebuje opis vseh lastnosti in metod te knjižnice.
posnetek zaslona 74
Spodaj je koda skripta za pošiljanje pošte iz obrazca za povratne informacije prek SMTP z avtorizacijo. Kjer so vse vrstice, povezane s PHPMailerjem, podane z razlago in poudarjene s svetlim ozadjem.
Preostali del, vključno z delci, povezanimi s sprejemanjem in obdelavo podatkov iz obrazca, ki smo jih prej morali uporabljati v drugih procesorjih, je označen s temnim ozadjem. Prej so bili podrobno obravnavani v članku, ki je bil posebej posvečen vprašanjem pridobivanja in preverjanja podatkov iz obrazca v PHP. Kjer smo govorili tudi o univerzalni uporabniški funkciji za preverjanje in obdelavo podatkov obrazcev preveri_simbol().
Ta skript bomo postavili v isto datoteko kontakty.php, v kateri smo predhodno ustvarili obrazec za povratne informacije.
//----Skripta za pošiljanje pošte prek SMTP z uporabo PHPMailer----
//Uvozi razrede PHPMailer v globalni imenski prostor. Biti morajo na vrhu skripta, ne znotraj funkcije
uporaba PHPMailer\PHPMailer\PHPMailer ;
uporaba PHPMailer\PHPMailer\Izjema ;
če
(!prazno($_POST["contact-button" ])) (
$name = $_POST["ime-stika"];
$name = check_symbol ($name, "Ime", "1", "/^+\z/iu");
$email = $_POST["kontaktni-e-mail" ];
$email = check_symbol ($email, "E-pošta", "1", "/^+@(+\.)+(2,6)\z/i");
$subject = $_POST["contact-subject" ];
$subject = check_symbol ($subject, "Subject sporočila" , "1" , "0" );
$komentar = $_POST["kontaktni-komentar"];
$komentar = kontrolni_simbol ($komentar, "Besedilo sporočila", "1"
, "0"
);
če
(!prazno($GLOBALS["opozorilo" ])) (
$opozorilo = "Podatki obrazca niso bili poslani. Najdene so bile naslednje napake:\n".$opozorilo;
vključujejo"alert.php" ;
drugače
{
//Povezovanje knjižnice
zahtevati"PHPMailer/src/PHPMailer.php" ;
zahtevati"PHPMailer/src/Exception.php" ;
zahtevati"PHPMailer/src/SMTP.php" ;
$mail = novo PHPMailer(); //Inicializacija razreda
$od = " [e-pošta zaščitena]"
; //E-poštni naslov, s katerega je pismo poslano
$to = " [e-pošta zaščitena]"
; //Naslov prejemnika
$mail -> isSMTP(); //Uporabi protokol SMTP
$mail -> Host = "smtp.yandex.ru" ; //Naslov poštnega strežnika
$mail -> SMTPAuth = prav
; //Omogoči avtorizacijski način
$mail -> Uporabniško ime = " [e-pošta zaščitena]"
; //Prijava iz e-pošte domene, povezane z e-poštno storitvijo tretje osebe (v tem primeru Yandex.Mail)
$pošta -> Geslo = "27MrDon89" ; //Geslo za domensko pošto
$mail -> SMTPSecure = "ssl" ; //Šifrirni protokol
$mail -> Port = "465" ; //Vrata strežnika SMTP
$mail -> CharSet = "UTF-8" ; //Kodiranje
$mail -> setFrom ($from, "Administrator"); //Naslov in ime pošiljatelja
$mail -> addAddress ($to, "Administrator"); //Naslov in ime prejemnika
$mail -> isHTML ( prav
); //Nastavi obliko elektronske pošte na HTML
$pošta -> Zadeva = "Obrazec za povratne informacije je poslan"; //Zadeva elektronske pošte (naslov)
$mail -> Telo = "
Ime pošiljatelja: $name
Naslov pošiljatelja: $e-pošta
Zadeva sporočila: $predmet
Vsebina sporočila: $komentar
"
; //Vsebina sporočila
$mail -> AltBody = "Besedilo nadomestne črke"; //Nadomestna e-pošta, če e-poštni odjemalec ne podpira zapisa HTML
$mail -> SMTPDebug = 0 ; //Omogoči odpravljanje napak SMTP: 0 - izklopljeno (za običajno uporabo), 1 = sporočila odjemalcev, 2 - sporočila odjemalcev in strežnikov
če($mail -> send()) (
$opozorilo = "Sporočilo poslano"; //V pogovornem oknu brskalnika izpišite sporočilo o uspešnem pošiljanju pisma
drugače
{
$opozorilo = "Napaka, e-pošte ni mogoče poslati: ".$mail -> ErrorInfo ; //Izpis sporočila o napaki
vključujejo"alert.php" ;
Slika 5 Skripta za pošiljanje e-pošte prek SMTP z avtorizacijo
Kot lahko vidite, vse vrstice, ki so neposredno povezane s pošiljanjem e-poštnega sporočila, v katerem so navedene potrebne metode in lastnosti, spremljajo komentarji. Zato se nima smisla ponavljati, temveč se lahko zadržimo le pri nekaterih izmed njih, ki sicer zahtevajo dodatna pojasnila, in sicer:
1. Ker je pismo poslano iz poštne storitve tretje osebe, se tukaj uporabljajo nastavitve, ki ustrezajo določenemu strežniku SMTP. V tem primeru se za primer uporabe strežnika Yandex.Mail uporabijo naslednje vrednosti lastnosti:
- Lastnina Gostitelj(pos.28) - naslov poštnega strežnika z vrednostjo smtp.yandex.ru;
- Lastnina SMTPSecure
- Lastnina Pristanišče
Te vrednosti lastnosti so bile vzete s strani Yandex.Help, prikazane na naslednjem posnetku zaslona.
Toda takšne informacije je mogoče dobiti tudi iz drugih virov. To storite tako, da v iskalnik vnesete ustrezno poizvedbo, na primer: »strežnik Yandex smtp«. Kje lahko najdete veliko število referenc o tej temi.
Na podoben način je mogoče pridobiti vrednosti nastavitev iz drugih strežnikov SMTP. Spodaj je posnetek zaslona strani s pomočjo Mail.ru, ki prikazuje nastavitve strežnika SMTP poštne storitve Mail.ru.
In tako je treba v primeru uporabe Mail.ru kot strežnika SMTP tretje osebe uporabiti naslednje vrednosti lastnosti razreda PHPMailer:
- Lastnina Gostitelj(pos.28) - Naslov poštnega strežnika (smtp.mail.ru);
- Lastnina SMTPSecure(poz.32) - šifrirni protokol (ssl);
- Lastnina Pristanišče(poz. 33) - Vrata strežnika SMTP (465).
Podoben pristop je treba uporabiti za druge e-poštne storitve.
2. V lastnini Uporabniško ime(poz. 30) je treba navesti polni naslov domenskega predala. V tem primeru, " [e-pošta zaščitena]".
Če pa za pošiljanje pisem uporabljate račun, ki ni domenski poštni račun, temveč naslov, ki je neposredno povezan s poštno storitvijo, na primer " [e-pošta zaščitena]", potem mora biti prijava samo del naslova do znaka "@". V tem primeru bi imela prijava vrednost "feedback".
3. PHPMailer zagotavlja lastnost SMTPDebug(poz. 50), ki omogoča prikaz različnih stopenj napak na zaslonu brskalnika. Ta funkcija močno poenostavi iskanje težav pri odpravljanju napak v skriptu.
Običajno je v običajnem načinu, ko je vrednost nastavljena na 0, izpis podrobnih informacij o napaki onemogočen. Če pa se pojavijo težave pri pošiljanju pošte ali med odpravljanjem napak, je mogoče uporabiti druge vrednosti za prikaz bolj smiselnih informacij o napaki.
Da bi videli, kako to izgleda v praksi, začasno vnesemo napako v nastavitve. Na primer, v geslu domene za pošto (last Geslo, poz.31). In tudi za prikaz podrobnih informacij o napaki, ki je začasno nastavljena v lastnosti SMTPDebug(poz.50) vrednost 1. Potem, ko je vse razhroščeno in preverjeno, bomo onemogočili način odpravljanja napak SMTP in 1 zamenjali z 0.
V zadnjem delu skripta, po določitvi vseh potrebnih lastnosti in metod, se metoda uporabi za pošiljanje pisma pošlji()) (poz. 51). In če je pismo poslano, in način pošlji() za predmet $mail vrne true, nato v pogovornem oknu brskalnika prek spremenljivke $opozorilo Prikaže se sporočilo o uspešnem pošiljanju pošte (poz. 52).
Če iz nekega razloga pošte ni bilo mogoče poslati in zato metoda ni mogla vrniti vrednosti true, bo to stanje spremljalo ustrezno sporočilo o napaki (poz. 55).
Preverjanje pošiljanja e-pošte
Ko smo ustvarili skripto za pošiljanje pošte, moramo seveda pogledati rezultat naše »ustvarjalnosti«. Ali smo tukaj vse upoštevali in nismo naredili nobene napake?
Če želite to narediti, poskusimo, kot je bilo predvideno, poslati sporočilo uporabnika skrbniku spletnega mesta iz obrazca za povratne informacije. Spodaj je posnetek zaslona obrazca za povratne informacije z izpolnjenimi polji pred oddajo.
In tukaj je rezultat oddaje obrazca.
Kjer je iz sporočila v pogovornem oknu brskalnika razvidno, da pisma ni mogoče poslati zaradi težave s povezavo SMTP.
Ampak, saj je zdaj premoženje SMTPDebug(poz. 50) je dodeljena vrednost 1, potem lahko vidimo podrobne informacije o nastali napaki in ugotovimo vzrok njenega nastanka.
Naslednji posnetek zaslona prikazuje, da je bila pri poskusu povezave zaznana napaka pri preverjanju pristnosti, kar pomeni uporabo napačne prijave ali gesla.
Po odpravi neujemanja gesla (prej je bilo uporabljeno napačno geslo, da smo lahko preverili izpis dodatnih informacij o napaki), bomo poskusili ponovno poslati pošto.
Tokrat je bilo vse videti dobro in prejeli smo sporočilo, da je bila pošta uspešno poslana. Očitno, razen namerno vnesene začasne napake v geslu domenske pošte, drugih napak nismo naredili.
Da pa se prepričamo, da je bilo pismo dejansko dostavljeno naslovniku, vpišemo pošto z naslovom [e-pošta zaščitena] in poglej rezultat.
Kot vidite, pismo z naslova [e-pošta zaščitena], s katerega smo poslali e-poštno sporočilo z imenom »Povratne informacije«, je uspešno prispelo do skrbnika strani. Hkrati telo pisma vsebuje vso vsebino, ki smo jo ustvarili v skriptu s pomočjo podatkov, prejetih iz obrazca za povratne informacije, in sicer:
- Ime pošiljatelja: Nikolay;
- Naslov pošiljatelja: [e-pošta zaščitena];
- Zadeva sporočila: Preverjanje pošiljanja pošte;
- Vsebina sporočila: Testno sporočilo.
Zdaj, po uspešnem preverjanju pošiljanja pošte, lahko onemogočite način odpravljanja napak SMTP tako, da dodelite lastnost SMTPDebug(pol.50) vrednost 0.
Tako smo zaključili nalogo izdelave orodja za pošiljanje pošte preko SMTP z avtorizacijo preko poštnega strežnika tretje osebe.
Na primer, v naslednjem članku si bomo ogledali, kako poslati potrditvena e-poštna sporočila za obnovitev registriranih podatkov uporabniškega računa.
Izvorne datoteke spletnega mesta
Izvorne datoteke spletnega mesta s posodobitvami, ki so bile narejene v tem članku, lahko prenesete iz priloženih dodatnih gradiv:
- datoteke imenika www
- Tabele baze podatkov MySQL
Pošiljanje pošte prek SMTP z lokalnega strežnika vam omogoča, da preizkusite pošiljanje sporočil s spletnega mesta, ki se nahaja na lokalnem računalniku ali preprosteje na lokalnem strežniku. Če želite to narediti, lahko uporabite katero koli poštno storitev Yandex, Google ali mail.ru.
Prvič, SMTP (Simple Mail Transfer Protocol) je široko uporabljen omrežni protokol, zasnovan za prenos e-pošte prek omrežij TCP/IP. In vse priljubljene e-poštne storitve imajo take protokole.
S prihodom lokalnih strežnikov ni bilo več treba izbirati ponudnika gostovanja za preverjanje delovanja posameznih skript ali cms sistemov, še manj pa za to plačevati. Veliko lažje je vse preizkusiti na računalniku in potem lahko vsem pokažeš, kaj si »naredil«.
Mnogi od teh strežnikov že imajo vgrajeno programsko opremo in potrebno funkcionalnost za delo s pošto, le pravilno jo morate konfigurirati.
Za preverjanje delovanja takšne pošte je potreben najmanjši minimum:
- Openserver lahko uporabljate kot lokalni strežnik.
- In preprost scenarij, katerega predlogo najdete tik spodaj.
- Uporabite lahko kateri koli poštni strežnik.
Pošiljanje php pošte prek nastavitve skripta SMTP
Urediti je treba preprosto skriptno predlogo, ki jo lahko kopirate spodaj ali prenesete s stotin podobnih spletnih mest.
Najprej morate spremeniti nekaj vrednosti v predlogi skripta.
do
— spremenite poštni naslov, na katerega bo poslano e-poštno sporočilo.
predmet
- predmet pisma
sporočilo
— samo sporočilo ali telo pisma.
Primer mojega scenarija:
Lahko pa seveda malo razširite funkcionalnost in naredite, da skripta prikaže sporočilo o pošiljanju pošte. Čeprav je v resnici strežnik SMTP tisti, ki pošilja, skript pa samo ustvari sporočilo.
Na primer, lahko napišete tole:
Vse zamenjane vrednosti morajo biti v narekovajih, sicer bo skript vrgel napako. Po tem lahko skript shranite v mapo lokalnega strežnika.
Na primer: domene/pošlji/index.php in začnite nastavljati pošiljanje pošte prek SMTP opensrerver.
![](https://i0.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_7.png)
Pošta bo prispela na kateri koli naslov, ki bo podan v skriptu namesto vrednosti 'za'
, vendar bo to pošto obdelal in poslal natanko tisti SMTP, ki bo naveden v nastavitvah odprtega strežnika.
- Zagon strežnika
- Odprite modul openserver z nastavitvami v meniju »mail«.
- Izpolnimo vsa polja, kot je prikazano na sliki, medtem ko zamenjamo uporabniško ime, e-pošto pošiljatelja in geslo iz pravega poštnega predala Yandex.
![](https://i2.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_1.png)
Nastavitve shranimo in po ponovnem zagonu strežnika lahko dostopate do samega skripta. V mapi »Moja spletna mesta« odprite mapo »pošlji«, v kateri se nahaja predhodno shranjen skript index.php.
![](https://i2.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_4.png)
Takoj ko se dostopi do tega skripta, se v novem oknu brskalnika prikažejo informacije, ki kažejo, da je skript dokončan.
![](https://i0.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_5.png)
Po tem morate preveriti svoj nabiralnik, katerega naslov je bil naveden v skripti, da vidite, ali je pismo prispelo.
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_6.png)
Če ga ni, pomeni, da nekaj ni pravilno konfigurirano ali pa je pismo končalo v mapi z neželeno pošto.
Vse ostale nastavitve izgledajo podobno, a za vsak slučaj dodatne informacije ne bodo škodile.
Če želite nastaviti pošiljanje pošte prek SMTP mail ru, morate preprosto zamenjati parametre Yandex s parametri mail ru.
In da ne bi vsakič znova zgradili lokalnega strežnika, je najbolje, da konfigurirate različne profile openserver. Kako to storiti, je prikazano v video vadnici.
V tem primeru bo dovolj, da preprosto naložite profil in vse nastavitve, ki so bile določene za ta profil, bodo na voljo po ponovnem zagonu strežnika. To je zelo priročna stvar in deluje zelo preprosto.
Za vsak profil (sploh ni pomembno, kako se bo imenoval) je treba narediti svoje nastavitve, razen če seveda nameravate uporabljati skripte, cms sisteme in aplikacije z različnimi parametri.
Če ne, potem lahko opravite s privzetimi nastavitvami.
Kar zadeva SMTP mail ru, je tukaj vse enako.
Podatki Yandex se spremenijo v podatke mail ru
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_2.png)
Pošiljanje pošte preko smtp google
Če želite nastaviti pošiljanje pošte prek Google SMTP, se morate malo potruditi.
Prvič, ustvariti profil v Googlu je težje kot v drugih sistemih Yandex in mail ru
Drugič, sistem ne bo preprosto spustil pisma skozi, tudi če navedete svoje podatke za prijavo. Za začetek bo poslala pismo z vsemi potrebnimi informacijami o nadaljnjih navodilih.
V nasprotnem primeru Za Google je konfiguriran na popolnoma enak način. Samo vsi podatki se spremenijo.
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_3.png)
Če želite konfigurirati pošiljanje pošte prek drugega SMTP, bodo vsi podatki približno enaki.
Če se vam je vse izšlo in so pisma dosegla določenega naslovnika, je bilo vse opravljeno pravilno. Super bi bilo, če bi svoje izkušnje delili v komentarjih.
Da bi določeno spletno mesto lahko delovalo učinkovito in produktivno, je treba k njegovi izdelavi pristopiti čim bolj odgovorno in skrbno. Posebno pozornost si zasluži izbira sistema, ki bo uporabljen za izdelavo spletne trgovine. Dejstvo je, da mora komercialna platforma, specializirana za prodajo blaga ali storitev, omogočati izvajanje vseh potrebnih funkcionalnosti in biti enostavna za uporabo, tako za skrbnike, ki sodelujejo pri vzdrževanju in polnjenju spletnih mest, kot za stranke spletnih trgovin. Mnogi ljudje in podjetja, ki se soočajo z vprašanjem izbire primernega CMS zase, analizirajo, ali izbrati Magento ali OkayCMS. Primerjajmo lastnosti in zmogljivosti teh motorjev spletnih mest.
Pri delu na lastnem spletnem mestu bo morala oseba ali podjetje vložiti veliko truda - le v tem primeru lahko računate na pozitivne rezultate in pridobitev resnično učinkovitega orodja. Eno izmed temeljnih vprašanj, ki si jih je treba rešiti že pred začetkom izdelave spletne strani, bo, kako se odločiti za najprimernejšo možnost CMS. Nato bomo primerjali dva CMS: Joomla ali OkayCMS in se posvetili značilnostim vsakega od njih.
Imeti lastno spletno stran je eden temeljnih pogojev za učinkovito in uspešno poslovanje. Statistika jasno kaže na porast nakupov različnega blaga in naročil storitev preko interneta. Glede na to se večina gospodarskih družb že zaveda potrebe po lastni spletni strani. Vendar samo dejstvo, da imate internetni vir, ni dovolj za računanje na njegovo učinkovitost, donosnost in pričakovane poslovne koristi.
Ko se pripravljate na ustvarjanje lastne spletne strani ali odprtje spletne trgovine, morate upoštevati in analizirati številna vprašanja, pa tudi rešiti različne težave. Samo v tem primeru lahko računate na dejstvo, da bo vaš projekt prinesel pozitivne rezultate in da bo lahko v celoti izpolnil vaša pričakovanja. Med različnimi vprašanji, povezanimi z razvojem spletne trgovine, si posebno pozornost zasluži vprašanje izbire CMS. Da se boste lažje odločili za optimalen motor zase, znotraj
Pri načrtovanju izdelave lastne spletne strani za bodočo spletno trgovino se dokaj veliko število ljudi in celo podjetij, specializiranih za prodajo, znajde pred težko in izjemno pomembno izbiro: katerega od obstoječih CMS izbrati. Če razmišljate, kaj izbrati: PrestaShop ali OkayCMS, vam predlagamo, da preberete ta članek, v katerem bomo primerjali ta dva sistema za ustvarjanje spletnih strani, zlasti spletnih trgovin.
Ker je pošiljanje anonimnih sporočil z navideznih Windows gostiteljskih strežnikov prepovedano, naj pošiljanje pisem poteka preko SMTP strežnika, za kar je možno uporabiti tudi naš poštni sistem.
Kako pošiljati e-pošto z PHP?
Uporaba katerega koli razreda PHP, ki podpira avtorizacijo na strežniku smtp. Uporabite lahko na primer nabor razredov PHPMailer.
Uporabite lahko tudi naš primer, ki implementira pošiljanje pisem s strežnikom smtp, ki zahteva avtorizacijo. Zato ne pozabite skriptu dodati ustreznih podrobnosti o dostopu, na primer:
// Če morate prikazati dnevnik seje SMTP, lahko odkomentirate naslednjo vrstico. // $_SERVER["debug"] = res; funkcija MailSmtp ($reciever, $subject, $content, $headers, $debug = 0) ( $smtp_server = "smtp.site"; // Naslov strežnika SMTP$smtp_port = 25 ; // Vrata strežnika SMTP$smtp_user = " [e-pošta zaščitena]"
;
// Uporabniško ime za avtorizacijo na strežniku SMTP$smtp_password = "pAsSwORd" ; // Geslo za avtorizacijo na strežniku SMTP$mail_from = " [e-pošta zaščitena]"
;
// Nabiralnik, iz katerega je pismo poslano$sock = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $str = fgets ($sock, 512); if (! $sock ) ( printf ( "Vtičnica ni ustvarjena\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock, "AUTH LOGIN"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($sock, base64_encode ($smtp_password)); smtp_msg ($sock, "MAIL OD:<"
.
$mail_from
.
">"); smtp_msg ($sock, "RCPT TO:<"
.
$reciever
.
">"); smtp_msg ($sock, "DATA"); $headers = "Zadeva: ". $subject. "\r\n" . $headers; $data = $headers. "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); ) funkcija smtp_msg ($sock , $msg ) ( če ( ! $sock ) ( printf ("Pokvarjena vtičnica!\n" ); exit(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ( "Pošljite od nas : %s
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512); if (! $sock ) ( printf ( "Vtičnica je navzdol\n" ); exit(1); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Pridobljeno s strežnika: %s
" , nl2br (htmlspecialchars ($str )); ) $e = eksplozija (" ", $str ); $code = array_shift ($e); $str = implode ( " ", $e); if ($code > 499 ) ( printf ( "Težave s pogovorom SMTP.
Koda %d.
Sporočilo %s
"
, $code, $str); izhod(1); ) ) ) ?>
Prenesite primer že pripravljenega skripta s funkcijo MailSmtp(): smtpauth.php.sample
Zgoraj opisano funkcijo MailSmtp() lahko uporabite za neposredno zamenjavo funkcije mail(); razmislite o primeru najpreprostejše oblike v PHP:
// Glave sporočil, določajo kodiranje sporočil, polja From, To itd.$headers = "Različica MIME: 1.0\r\n" ; $headers .= "Vrsta vsebine: besedilo/html; nabor znakov=windows-1251\r\n"; $headers .= "Za: $to \r\n" ; $headers .= "Od: Ime pošiljatelja "
;
// pošta ($to, $subject, $message, $headers); require_once "smtpauth.php" ; MailSmtp ($to, $subject, $message, $headers); ) ?>
Da bi ta obrazec deloval brez funkcije mail(), smo vključili datoteko smtpauth.php prek require_once in poklicali funkcijo MailSmtp(), opisano v njej, z argumenti, podobnimi mail(). Hkrati smo komentirali sam klic mail() v kodi, da bi se izognili napakam pri izvajanju skripta.
Kako poslati e-pošto z uporabo ASP.NET?
Če uporabljate različico 2.0, uporabite razred MailMessage System.Net.Mail), dobro opisano.
Spodaj so primeri njegove uporabe za jezika C# in VisualBasic:
Primer za jezik C#:
<% @Page Language="c#" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
MailMessage message = new MailMessage(); // ustvarjanje nove črke message.To.Add(" [e-pošta zaščitena]"); // dodajanje naslova prejemnika sporočilo.Od = nov poštni naslov("od@ domena.tld", "Ime pošiljatelja"); // z navedbo imena in naslova pošiljatelja message.Subject = "Zadeva sporočila"; // navedba predmeta pisma message.BodyEncoding = System.Text.Encoding.UTF8; // določanje črkovnega kodiranja message.IsBodyHtml = false; // določanje oblike črk (true - HTML, false - ne HTML) message.Body = "Besedilo sporočila"; // določanje besedila (telesa) pisma SmtpClient client = new SmtpClient("smtp.site",25); // ustvarjanje nove povezave s strežnikom "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // definira način pošiljanja sporočil client.EnableSsl = false; // onemogoči potrebo po uporabi varne povezave s strežnikom client.UseDefaultCredentials = false; // onemogoči uporabo privzetih podrobnosti avtorizacije client.Credentials = new NetworkCredential("postmaster@ domena.tld", "***geslo***"); // podajanje potrebnih podrobnosti (uporabniško ime in geslo) za avtorizacijo na strežniku SMTP odjemalec.Pošlji(sporočilo); // Pošlji sporočilo
%>
Prenesite primer dokončanega obrazca, ki prikazuje uporabo te metode: MailForm.aspx.
Primer za jezik VisualBasic:
<% @Page Language="VB" Debug="true" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
Dim smtpMssg AS new MailMessage
smtpMssg.From = New MailAddress ("admin@domena.tld", "Ime_pošiljatelja") smtpMssg.To.Add (" [e-pošta zaščitena]") " dodajanje naslova prejemnika smtpMssg.Subject = "Zadeva elektronske pošte" "navedba predmeta pisma smtpMssg.Body = "Besedilo sporočila" " navedba besedila (telesa) pisma smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " navedba črkovnega kodiranja smtpMssg.IsBodyHtml = false " navedba oblike črke (true - HTML, false - ni HTML) Zatemni SmtpMail kot novega SmtpClient("smtp.site", 25) " deklaracija novega objekta tipa "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "navedba načina dostave pisma SmtpMail.UseDefaultCredentials = False "privzeto onemogočanje uporabe avtorizacijskih poverilnic" SmtpMail.EnableSsl = False " onemogoči potrebo po uporabi varne povezave s strežnikom SmtpMail.Credentials = new NetworkCredential("postmaster@ domena.tld", "***geslo***") ", ki navaja potrebne podrobnosti (uporabniško ime in geslo) za avtorizacijo na strežniku SMTP SmtpMail.Send(smtpMssg) " pošiljanje sporočila
%>
Obstaja tudi zastarel (in zastarel) razred SmtpMail (z uporabo imenskega prostora System.Web.Mail). Spodaj je primer njegove uporabe za jezik VisualBasic:
<% @Page Language="VB" Debug="true" %>
<% @Import Namespace="System.Web" %>
<% @Import Namespace="System.Web.Mail" %>
<%
Dim smtpMssg = new MailMessage " deklaracija novega objekta tipa "MailMessage" smtpMssg.From = "Ime_pošiljatelja domena.tld>" „Navedba imena in naslova pošiljatelja smtpMssg.To = "admin@ domena.tld" " navedba naslova prejemnika smtpMssg.BodyFormat = MailFormat.Text " navedba oblike črke smtpMssg.BodyEncoding = Encoding.UTF8 ", ki označuje črkovno kodiranje smtpMssg.Subject = "Zadeva elektronske pošte" "navedba predmeta pisma smtpMssg.Body = "Besedilo sporočila" " navedba besedila pisma smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) ", kar kaže na potrebo po avtorizaciji SMTP na strežniku smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ domena.tld") "uporabniško ime za avtorizacijo smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***geslo***") "geslo za avtorizacijo SmtpMail.SmtpServer = "smtp.site" ", ki določa naslov strežnika SMTP SmtpMail.Send(smtpMssg) " pošiljanje sporočila
%>
Kako pošiljati e-pošto z ASP?
Upoštevajte, da je pri uporabi našega strežnika smtp potrebna avtorizacija, zato ne pozabite skriptu dodati ustreznih podrobnosti o dostopu, na primer:
<%
iConfig = Server.CreateObject("CDO.Configuration")
Set iConfig = Server.CreateObject("CDO.Configuration")
With iConfig.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@domena.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "geslo" .Update End With Set cdoMessage = CreateObject("CDO.Message") With cdoMessage Set .Configuration = iConfig .From = "Testni uporabnik domena.tld>" .To = "Uporabnik " .Subject = "Pozdravljeni, uporabnik" .TextBody = "To sporočilo pišem iz skripta ASP." .Send End With Set cdoMessage = Nothing Set iConfig = Nothing %>
Nekateri CMS že imajo vgrajena orodja za pošiljanje korespondence ali ustrezne module; poglejmo najbolj priljubljene.
Wordpress
Za ta CMS obstaja poseben modul "WP Mail SMTP", primer njegove konfiguracije je opisan na strani modula.
Bodite pozorni na ilustracijo v primeru, v našem poštnem sistemu je treba uporabiti vrata 25 in SSL šifriranje ni potrebno.
Joomla
Na skrbniški plošči pojdite na razdelek »Splošne nastavitve«, izberite zavihek »Strežnik«. V polju »Pošta« morate izbrati način pošiljanja kot »strežnik SMTP«, v poljih »naslov strežnika SMTP« ter »prijava SMTP« in »geslo SMTP« določite ustrezne podrobnosti poštnega sistema, na primer: smtp.site, box@vaša_domena in ustrezno geslo.
Drupal
Ta CMS ima tudi svoj modul za delo s strežnikom SMTP, ki temelji na PHPMailer. Ta modul lahko prenesete na njegovi strani na spletnem mestu CMS Drupal, opis namestitve modula je na voljo v arhivu z njim.
NetCat
Ta CMS nima vgrajenih funkcij za delo s strežnikom SMTP. Za pošiljanje pošte s skripti spletnega mesta vam lahko ponudimo uporabo naše rešitve; za povezavo morate izvesti naslednje korake:
domena.tld zamenjati z imenom vaše domene.
Predlagana rešitev deluje z vsemi moduli NetCat, ki uporabljajo standardne funkcije tega CMS za pošiljanje pošte.