Zdravo. Pošto moja grafomanija napreduje, odlučio sam da dodam još jedan članak. Članak će, kao i uvek, sa primerima u C#, ali će manje-više vešt VB "schnik lako prepisati sav kod pod VB.NET.
Počnimo, možda
Za slanje e-pošte trebamo koristiti tri objekta. System.Net.Mail.SmtpClient za slanje poruke, System.Net.Mail.MailMessage za predstavljanje poruke i System.Net.NetworkCredential za autorizaciju.
Kreirajmo klijenta:
Var client = new SmtpClient("$Mail-Server-Address$", $Mail-Server-Port$);
referenca konstruktora:
SmtpClient(string host, int port);
Kreirajmo instancu klase MailMessage:
Var msg = nova MailMessage("od", "do");
Sada postavimo temu i sadržaj pisma (usput, sve se može podesiti u konstruktoru). Kao i login i lozinka za smtp klijenta. Zatim ćemo poslati e-mail koristeći Send metodu našeg klijentskog objekta:
Var client = novi SmtpClient("smtp.yandex.ru"); var msg = nova MailMessage("od", "do"); msg.Subject = "Moja test poruka"; msg.Body = "Zdravo, prijatelju! Zamislite da sam upravo napisao nevjerovatan program da vam pošalje ovo besmisleno pismo milijardu puta samo u nekoliko klikova!"; msg.SubjectEncoding = Encoding.UTF8; msg.BodyEncoding = Encoding.UTF8; // prioritet msg.Priority = MailPriority.High; // tijelo poruke u html? msg.IsBodyHtml = false; client.Credentials = new NetworkCredential("login", "password"); client.Send(msg);
To je sve. Obavezno unesite sve tražene podatke ispravno.
Komentari()
ruslang02 30
CoolHacker, mogu li od tebe da posudim ovaj kod za treći dio web pretraživača?
Coolhacker 770 ruslang02 30Hvala, koristiću ga za slanje linkova e-mailom
kao u Firefoxu
Programski šaljite e-poštu koristeći različite usluge
- .net,
Vrlo često morate imati posla sa slanjem emails od programski kod. Ne morate daleko tražiti primjere.
Ovaj članak je nagovještaj i ne otkriva ništa novo, ali prije nego što sam ga napisao, izgledao sam slično na internetu i bio sam prilično iznenađen što skoro svugdje nude ili nefunkcionalno ili zastarjelo rješenje, ili jednostavno nepismeno napisano.
Prva stvar koju ne biste trebali raditi s ovim primjerima je da koristite System.Web.Mail, koji je već duže vrijeme zastario, a od vizuelni studio 2010. System.Web biblioteka ne može se čak ni dodati bez znanja puni put na odgovarajući DLL.
Umjesto toga, predlaže se korištenje System.Net biblioteke.
koristeći System.Net; koristeći System.Net.Mail;
Dakle, najjednostavnije, ujedno i najvažnije i često korišteno je slanje vašeg pisma mail server Na kojem je konfiguriran SMTP klijent. Kao što razumijete, server može biti ili onaj na kojem se aplikacija pokreće, ili udaljeni, na kojem imate prava slanja pisama bez dodatnog ovlaštenja.
Primjer koda za slanje e-pošte s lokalnog stroja:
Korištenje mail servisa kao što su Gmail, Yandex, Mail.ru, itd. sve je isto, samo se dodaju parametri sa autorizacijom.
SMTP server: smtp.gmail.com
Luka: 587
koristeći (MailMessage mm = new MailMessage("Ime
SMTP server: smtp.yandex.ru
Luka: 25
koristeći (MailMessage mm = new MailMessage("Ime
SMTP server: smtp.mail.ru
Luka: 25
koristeći (MailMessage mm = new MailMessage("Ime
Ako imate Mailbox na usluzi mail.ru završava se inbox.ru, list.ru ili bk.ru, a zatim se adresa SMTP servera (smtp.inbox.ru, smtp.list.ru i smtp.bk.ru) mijenja u skladu s tim.
Kao što vidite, da biste koristili bilo koju drugu uslugu pošte u svojim programima, potrebno je samo da saznate adresu i port SMTP servera, kao i pravila autorizacije.
Također treba imati na umu da gotovo sve usluge e-pošte trećih strana nameću ograničenja na broj e-poruka poslanih u određenom vremenskom periodu.
Oznake: email, slanje e-pošte, smtp
Jedna od najtraženijih funkcija na sajtu je formular za prijavu ili narudžbu, sa koje se podaci šalju na mail vlasnika sajta. Takvi obrasci su po pravilu jednostavni i sastoje se od dva ili tri polja za unos podataka. Kako napraviti takav obrazac za narudžbu? Ovo će zahtijevati korištenje HTML jezika za označavanje i jezika PHP programiranje.
Sam jezik za označavanje HTML-a je jednostavan, samo trebate shvatiti kako i gdje staviti određene oznake. Sa programskim jezikom PHP, stvari su malo komplikovanije.
Programeru nije teško napraviti takav obrazac, ali neke radnje mogu izgledati teške za HTML kodera.
Kreiranje html obrasca za slanje
Prvi red će biti sljedeći
Sad hajde da sve to spojimo.
Sada neka polja u obrascu budu obavezna. Imamo sljedeći kod:
Kreirajte datoteku koja prihvata podatke iz HTML obrasca
Ovo će biti datoteka pod nazivom send.php
U datoteci, u prvoj fazi, morate primiti podatke iz polja posta. Da bismo to učinili, kreiramo dvije varijable:
$fio = $_POST["fio"];
$email = $_POST["e-pošta"];
Imenima varijabli u php prethodi znak $, a na kraju svakog reda stavlja se tačka i zarez. $_POST je niz kojem se prosljeđuju podaci iz obrasca. U html formi je specificiran metod slanja="post". Dakle, dvije varijable su uzete iz html forme. U svrhu zaštite vaše stranice, ove varijable morate proći kroz nekoliko filtera - php funkcija.
Prva funkcija će pretvoriti sve znakove koje će korisnik pokušati dodati u obrazac:
U ovom slučaju, nove varijable u php-u se ne kreiraju, već se koriste postojeće. Filter će pretvoriti karakter "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Druga funkcija dekodira url ako ga korisnik pokuša dodati u obrazac.
$fio = urldecode($fio);
$email = urldecode($email);
Sa trećom funkcijom ćemo ukloniti razmake s početka i kraja niza, ako ih ima:
$fio = trim($fio);
$email = trim($email);
Postoje i druge funkcije koje vam omogućavaju da filtrirate php varijable. Njihova upotreba zavisi od toga koliko se plašite da će napadač pokušati da doda programski kod ovom obliku slanja podataka u html poštu.
Potvrdite podatke proslijeđene iz HTML obrasca u PHP datoteku
Da biste provjerili funkcionira li ovaj kod, ako se podaci prenose, jednostavno ga možete prikazati na ekranu pomoću funkcije echo:
echo $fio;
eho"
";
echo $email;
Drugi red ovde je potreban da bi se odvojio izlaz php varijabli u različite redove.
Slanje primljenih podataka iz HTML obrasca na mail koristeći PHP
Da biste poslali podatke na poštu, morate koristiti funkciju pošte u PHP-u.
mail("na koju adresu poslati", "predmet pisma", "Poruka (tijelo pisma)","Od: s koje e-pošte je pismo poslano \r\n");
Na primjer, trebate poslati podatke na e-mail vlasnika ili menadžera stranice [email protected]
Predmet e-pošte treba da bude jasan, a poruka e-pošte treba da sadrži ono što je korisnik naveo u HTML obrascu.
mail(" [email protected]", "Aplikacija sa sajta", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n");
Morate dodati uslov koji će provjeriti da li je obrazac poslat pomoću PHP-a na navedenu adresu e-pošte.
if (mail(" [email protected]", "Narudžba sa stranice", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n"))
{
echo "poruka je uspješno poslana";
) drugo (
}
Tako će programski kod datoteke send.php, koji će poslati podatke HTML obrasca na mail, izgledati 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);
//echo $fio;
// echo "
";
//echo $email;
if (mail(" [email protected]", "Aplikacija sa sajta", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n"))
( echo "poruka je uspješno poslana";
) drugo (
echo "došlo je do greške prilikom slanja poruke";
}?>
Tri reda za provjeru da li se podaci prosljeđuju u datoteku su komentirane. Ako je potrebno, mogu se ukloniti, jer su bili potrebni samo za otklanjanje grešaka.
Stavite HTML i PHP kod za podnošenje obrasca u jednu datoteku
U komentarima na ovaj članak, mnogi ljudi pitaju kako da i HTML obrazac i PHP kod za slanje podataka na poštu budu u jednoj datoteci, a ne u dvije.
Da biste implementirali ovaj posao, potrebno je da postavite HTML kod obrasca u datoteku send.php i dodate uslov koji će provjeriti prisustvo varijabli u POST nizu (ovaj niz se prenosi iz obrasca). To jest, ako varijable u nizu ne postoje, onda morate pokazati korisniku obrazac. U suprotnom, trebate uzeti podatke iz niza i poslati ih primaocu.
Pogledajmo kako promijeniti PHP kod u send.php datoteci:
//provjerava da li varijable postoje u POST nizu
if(!isset($_POST["fio"]) i !isset($_POST["email"]))(
?> ) drugo (
//prikaži formu
$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);
if (mail(" [email protected]", "Aplikacija sa sajta", "Naziv:".$fio.". Email: ".$email ,"Od: [email protected]\r\n"))(
echo "Poruka je uspješno poslana";
) drugo (
echo "Došlo je do greške prilikom slanja poruke";
}
}
?>
Provjeravamo postojanje varijable u POST nizu s PHP isset() funkcijom. Uskličnik ispred ove funkcije u uvjetu znači negaciju. Odnosno, ako varijabla ne postoji, onda moramo pokazati našu formu. Da nisam stavio uzvičnik, onda bi uslov doslovno značio - "ako postoji, onda pokaži formu". A ovo je pogrešno u našem slučaju. Naravno, možete ga preimenovati u index.php. Ako preimenujete datoteku, onda ne zaboravite preimenovati naziv datoteke i u retku