Rad s e-poštom. Programsko slanje e-pošte korištenjem raznih usluga Slanje poruke na poštu c
Programski pošaljite e-poštu pomoću razne usluge
- .NETO,
Vrlo često morate imati posla s slanjem e-poruke iz programskog koda. Za primjerima ne morate ići daleko.
Ovaj članak je nagovještaj i ne otkriva ništa novo, ali prije nego što sam ga napisao, pogledao sam nešto slično na internetu i prilično se iznenadio što gotovo svugdje nude ili nefunkcionalno ili zastarjelo rješenje, ili je jednostavno nepismeno napisano.
Prva stvar koju ne smijete raditi s ovim primjerima je korištenje System.Web.Mail, koji je već dugo zastario, a počevši od Vizualni studio 2010., ne možete ni dodati biblioteku System.Web bez poznavanja punog puta do odgovarajućeg DLL-a.
Umjesto toga, predlaže se korištenje knjižnice System.Net.
koristeći System.Net; korištenjem System.Net.Mail;
Dakle, najjednostavnije, najvažnije i često korišteno je slanje vašeg pisma poslužitelj pošte na kojem je konfiguriran SMTP klijent. Kao što razumijete, poslužitelj može biti ili onaj na kojem se pokreće aplikacija ili udaljeni, na kojem imate pravo slati pisma bez dodatne autorizacije.
Primjer koda za slanje pisma s lokalnog stroja:
Korištenje poštanske usluge kao što su Gmail, Yandex, Mail.ru itd. sve je isto, samo se dodaju parametri s autorizacijom.
SMTP poslužitelj: smtp.gmail.com
Luka: 587
koristeći (MailMessage mm = nova MailMessage ("Naziv
SMTP poslužitelj: smtp.yandex.ru
Luka: 25
koristeći (MailMessage mm = nova MailMessage ("Naziv
SMTP poslužitelj: smtp.mail.ru
Luka: 25
koristeći (MailMessage mm = nova MailMessage ("Naziv
Ako imate poštanski sandučić na usluzi mail.ru završava s inbox.ru, list.ru ili bk.ru, tada se adresa SMTP poslužitelja mijenja u skladu s tim (smtp.inbox.ru, smtp.list.ru i smtp.bk.ru).
Kao što vidite, da biste koristili bilo koju drugu uslugu e-pošte u svojim programima, trebate samo saznati adresu i port SMTP poslužitelja, kao i pravila autorizacije.
Također treba imati na umu da gotovo sve treće strane poštanske usluge nametnuti ograničenja na broj e-poruka poslanih tijekom određenog vremenskog razdoblja.
Oznake: e-pošta, slanje e-pošte, smtp
Jedna od najtraženijih funkcija na web mjestu je aplikacija ili obrazac za narudžbu, čiji se podaci šalju poštom vlasniku web stranice. U pravilu su takvi obrasci jednostavni i sastoje se od dva ili tri polja za unos podataka. Kako kreirate takav obrazac za narudžbu? To će zahtijevati korištenje jezika HTML označavanje i programski jezik PHP.
Sam HTML jezik za označavanje je jednostavan, samo trebate shvatiti kako i gdje staviti određene oznake. S programskim jezikom PHP stvari su malo složenije.
Programeru neće biti teško izraditi takav obrazac, ali HTML koderu neke radnje mogu izgledati teške.
Napravite obrazac za slanje podataka u html-u
Prvi red će biti sljedeći
Sad da sve to spojimo.
Sada ćemo polja u obrascu učiniti obaveznim. Imamo sljedeći kod:
Izradite datoteku koja prihvaća podatke iz HTML obrasca
Ovo će biti datoteka pod nazivom send.php
U datoteci, u prvoj fazi, trebate prihvatiti podatke iz polja posta. Da bismo to učinili, kreiramo dvije varijable:
$ fio = $ _POST ["fio"];
$ email = $ _POST ["e-pošta"];
Prije naziva varijabli u php -u stavlja se znak $, na kraju svakog retka stavlja se točka -zarez. $ _POST je niz u koji se prosljeđuju podaci iz obrasca. U html obrascu, submit metoda je navedena kao method = "post". Dakle, dvije varijable su preuzete iz html forme... Kako biste zaštitili svoje web mjesto, morate ove varijable proći kroz nekoliko filtara - php funkcija.
Prva funkcija pretvara sve znakove koje korisnik pokuša dodati u obrazac:
U ovom slučaju se nove varijable u php-u ne kreiraju, već se koriste postojeće. Filtar će pretvoriti znak "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Druga funkcija će dekodirati url ako ga korisnik pokuša dodati u obrazac.
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
U trećoj funkciji ćemo ukloniti razmake s početka i kraja niza, ako ih ima:
$ fio = trim ($ fio);
$ email = trim ($ email);
Postoje i druge funkcije za filtriranje php varijabli. Njihova upotreba ovisi o tome koliko se bojite da će napadač pokušati dodati kod ovom obliku slanja podataka na html poštu.
Provjera valjanosti podataka proslijeđenih iz HTML obrasca u PHP datoteku
Kako biste provjerili radi li ovaj kôd, prenose li se podaci, jednostavno ga možete prikazati na zaslonu pomoću funkcije echo:
echo $ fio;
jeka "
";
echo $ email;
Drugi redak je ovdje da podijeli izlaz php varijabli u različite retke.
Slanje primljenih podataka iz HTML obrasca na poštu pomoću PHP-a
Za slanje podataka na poštu, trebate koristiti funkciju pošte u PHP-u.
mail ("na koju adresu poslati", "predmet pisma", "Poruka (tijelo poruke)", "Od: s koje e-pošte je pismo poslano \ r \ n");
Na primjer, trebate poslati podatke na e-mail vlasnika ili upravitelja stranice [e-mail zaštićen]
Predmet e-pošte trebao bi biti jasan, a poruka e-pošte trebala bi sadržavati ono što je korisnik naveo u HTML obrascu.
pošta (" [e-mail zaštićen]"," Aplikacija sa stranice "," Puno ime: ". $ Fio.". E-pošta: ". $ E-pošta," Od: [e-mail zaštićen]\ r \ n ");
Morate dodati uvjet koji će provjeriti je li obrazac poslan pomoću PHP-a na navedenu adresu e-pošte.
ako (pošta (" [e-mail zaštićen]"," Naručite sa web mjesta "," Puni naziv: ". $ Fio.". E-pošta: ". $ Email," Od: [e-mail zaštićen]\ r \ n "))
{
echo "poruka uspješno poslana";
) drugo (
}
Dakle, programski kod datoteke send.php koja će slati podatke HTML obrasca na poštu izgledat će ovako:
$ fio = $ _POST ["fio"];
$ email = $ _POST ["e-pošta"];
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = trim ($ fio);
$ email = trim ($ email);
// odjek $ fio;
// jeka "
";
// echo $ email;
ako (pošta (" [e-mail zaštićen]"," Aplikacija sa stranice "," Puno ime: ". $ Fio.". E-pošta: ". $ E-pošta," Od: [e-mail zaštićen]\ r \ n "))
(echo "poruka je uspješno poslana";
) drugo (
echo "došlo je do pogrešaka tijekom slanja poruke";
}?>
Tri retka za provjeru jesu li podaci proslijeđeni datoteci komentirani. Ako je potrebno, možete ih ukloniti jer su bili potrebni samo za ispravljanje pogrešaka.
Postavljanje HTML i PHP koda za slanje obrasca u jednu datoteku
U komentarima na ovaj članak mnogi ljudi postavljaju pitanje kako napraviti i HTML obrazac i PHP kod za slanje podataka na poštu u jednoj datoteci, a ne u dvije.
Da biste implementirali takav rad, trebate staviti HTML kod obrasca u datoteku send.php i dodati uvjet koji će provjeravati prisutnost varijabli u POST nizu (ovaj se niz prosljeđuje iz obrasca). Odnosno, ako varijable u nizu ne postoje, tada morate pokazati obrazac korisniku. U suprotnom, trebate prihvatiti podatke iz niza i poslati ih primatelju.
Pogledajmo kako promijeniti PHP kod u datoteci send.php:
// provjeriti postoje li varijable u POST polju
if (! isset ($ _ POST ["fio"]) i! isset ($ _ POST ["email"]))) (
?> ) drugo (
// pokazati obrazac
$ fio = $ _POST ["fio"];
$ email = $ _POST ["e-pošta"];
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = trim ($ fio);
$ email = trim ($ email);
ako (pošta (" [e-mail zaštićen]"," Aplikacija sa stranice "," Puno ime: ". $ Fio.". E-pošta: ". $ E-pošta," Od: [e-mail zaštićen]\ r \ n ")) (
echo "Poruka je uspješno poslana";
) drugo (
echo "Došlo je do pogrešaka prilikom slanja poruke";
}
}
?>
Provjeravamo postojanje varijable u POST polju pomoću funkcije PHP isset (). Uskličnik ispred ove funkcije u uvjetu znači negaciju. To jest, ako varijabla ne postoji, tada moramo pokazati svoj oblik. Da nisam stavio uskličnik, onda bi uvjet doslovno značio - "ako postoji, onda pokaži oblik." A to je u našem slučaju pogrešno. Naravno, možete ga preimenovati u index.php. Ako preimenujete datoteku, ne zaboravite preimenovati naziv datoteke i u retku