Rad s e-poštom. Najjednostavniji oblik slanja podataka na e-poštu koristeći HTML i PHP Slanje poruka c#

Zdravo. Kako moja grafomanija napreduje, odlučio sam dodati još jedan članak. Članak će, kao i uvijek, sadržavati primjere u C#, ali više ili manje vješt VB stručnjak će lako prepisati sav kod pod VB.NET.

Počnimo, valjda

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 dizajnera:

SmtpClient(string host, int port);

Kreirajmo instancu klase MailMessage:

Var msg = new MailMessage("from", "to");

Sada postavimo predmet i sadržaj pisma (usput, sve se može postaviti u konstruktoru). Također i prijavu i lozinku za smtp klijent. Zatim ćemo poslati pismo koristeći Send metodu našeg klijentskog objekta:

Var client = new SmtpClient("smtp.yandex.ru"); var msg = new MailMessage("from", "to"); msg.Subject = "Moja probna poruka"; msg.Body = "Zdravo, prijatelju! Zamisli samo da sam upravo napisao nevjerojatan program da ti pošaljem ovo besmisleno pismo milijardu puta uz samo nekoliko klikova!"; msg.SubjectEncoding = Encoding.UTF8; msg.BodyEncoding = Encoding.UTF8; // prioritet msg.Priority = MailPriority.High; // tijelo e-pošte u html-u? msg.IsBodyHtml = false; client.Credentials = new NetworkCredential("prijava", "lozinka"); klijent.Pošalji(msg);

To je sve. Ne zaboravite ispravno ispuniti sve potrebne podatke.


Komentari ()

ruslang02 30

CoolHacker, mogu li od tebe posuditi ovaj kod za treći dio web preglednika?

Coolhacker 770 ruslang02 30

Hvala, koristit ću ga za slanje linkova e-poštom
kao u FireFoxu

LetSevI 10

Zadnja izmjena: 31.10.2015

Za slanje pošte na Internetu koristi se SMTP (Simple Mail Transfer Protocol) protokol. Ovaj protokol određuje kako poslužitelji pošte komuniciraju prilikom prijenosa e-pošte.

Klasa SmtpClient iz imenskog prostora System.Net.Mail dizajnirana je za rad sa SMTP protokolom i slanje e-pošte u .NET-u.

Ova klasa definira niz svojstava koja vam omogućuju da konfigurirate slanje:

    Domaćin: smtp poslužitelj s kojeg se šalje pošta. Na primjer, smtp.yandex.ru

    Port: Port koji koristi smp poslužitelj. Ako nije navedeno, port 25 se koristi prema zadanim postavkama.

    Vjerodajnice: podaci za autentifikaciju pošiljatelja

    EnableSsl: Određuje hoće li se SSL koristiti prilikom slanja

Druga ključna klasa koja se koristi pri slanju je MailMessage. Ova klasa predstavlja poruku koja se šalje. Među njegovim svojstvima su sljedeća:

    Prilozi: sadrži sve priloge pisma

    Tijelo: tekst samog pisma

    Od: adresa pošiljatelja. Predstavlja objekt MailAddress

    Za: adresu primatelja. Također predstavlja objekt MailAddress

    Predmet: definira predmet pisma

    IsBodyHtml: Označava predstavlja li e-pošta sadržaj s html kodom

Iskoristimo ove klase i pošaljimo pismo:

Korištenje sustava; koristeći System.Net; koristeći System.IO; koristeći System.Threading.Tasks; koristeći System.Net.Mail; namespace NetConsoleApp ( class Program ( static void Main(string args) ( // pošiljatelj - postavite adresu i ime prikazano u slovu MailAddress from = new MailAddress(" [e-mail zaštićen]", "Tom"); // kome šaljemo MailAddress = nova MailAddress(" [e-mail zaštićen]"); // kreirajte objekt poruke MailMessage m = new MailMessage(from, to); // predmet pisma m.Subject = "Test"; // tekst pisma m.Body = "

Letter test rada smtp klijenta

"; // slovo predstavlja html kod m.IsBodyHtml = true; // adresa smtp servera i port s kojeg ćemo poslati pismo SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587) ; // prijava i lozinka smtp.Credentials = new NetworkCredential(" [e-mail zaštićen]", "mypassword"); smtp.EnableSsl = true; smtp.Send(m); Console.Read(); ) ) )

Za slanje se koristi metoda Send() kojoj se prosljeđuje objekt MailMessage.

Možemo koristiti i asinkronu verziju slanja metodom SendMailAsync:

Korištenje sustava; koristeći System.Net; koristeći System.IO; koristeći System.Threading.Tasks; koristeći System.Net.Mail; namespace NetConsoleApp ( class Program ( static void Main(string args) ( SendEmailAsync().GetAwaiter(); Console.Read(); ) private static async Task SendEmailAsync() ( MailAddress from = new MailAddress(" [e-mail zaštićen]", "Tom"); MailAddress to = nova MailAddress(" [e-mail zaštićen]"); MailMessage m = nova MailMessage(from, to); m.Subject = "Test"; m.Body = "Letter test 2 smtp klijenta"; SmtpClient smtp = new SmtpClient("smtp.gmail.com" , 587); smtp.Credentials = new NetworkCredential(" [e-mail zaštićen]", "mypassword"); smtp.EnableSsl = true; čekaj smtp.SendMailAsync(m); Console.WriteLine("Poruka poslana"); ) ) )

Dodavanje privitaka

Pismu možemo priložiti priloge pomoću svojstva Attachments. Svaki privitak predstavlja objekt System.Net.Mail.Attachment:

MailAddress from = nova MailAddress(" [e-mail zaštićen]", "Tom"); MailAddress to = nova MailAddress(" [e-mail zaštićen]"); MailMessage m = nova MailMessage(od, do); m.Attachments.Add(new Attachment("D://temlog.txt"));

g. Olympia 14. listopada 2013. u 19:29

Programsko slanje e-pošte korištenjem različitih usluga

  • .NETO

Vrlo često se morate nositi sa slanjem e-pošte iz programskog koda. Ne morate daleko tražiti primjere.

Ovaj članak je nagovještaj i ne otkriva ništa novo, ali prije nego što sam ga napisao, slično sam pogledao na Internetu i nemalo se iznenadio da gotovo svugdje nude ili neko rješenje koje ne radi ili je zastarjelo ili je jednostavno nepismeno napisano.

Prva stvar koju ne biste trebali učiniti na temelju ovih primjera je koristiti System.Web.Mail, koji je odavno zastario, a počevši od Visual Studio 2010, ne možete ni dodati System.Web biblioteku bez poznavanja punog puta u odgovarajući DLL.
Umjesto toga predlaže se korištenje knjižnice System.Net.
koristeći System.Net; koristeći System.Net.Mail;
Dakle, najjednostavnija stvar, koja je ujedno i najvažnija i najčešće korištena, je slanje pisma sa vašeg mail servera 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 prava slati pisma bez dodatne autorizacije.

Primjer koda za slanje pisma s lokalnog stroja:
", "[e-mail zaštićen]"))( mm.Subject = "Predmet pošte"; mm.Body = "Tijelo pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("127.0.0.1"))(//Adresa bi trebala biti ovdje poslužitelj pošte i port, ako je potrebno sc.Send(mm); ) )

Korištenje usluga e-pošte kao što su Gmail, Yandex, Mail.ru itd. sve je isto, samo su dodani parametri s autorizacijom.

SMTP poslužitelj: smtp.gmail.com
Luka: 587
koristeći (MailMessage mm = new MailMessage("Ime ", "[e-mail zaštićen]"))( mm.Subject = "Predmet e-pošte"; mm.Body = "Tijelo e-pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-mail zaštićen]", "GmailPassword"); sc.Send(mm); ) )

SMTP poslužitelj: smtp.yandex.ru
Luka: 25
koristeći (MailMessage mm = new MailMessage("Ime ", "[e-mail zaštićen]"))( mm.Subject = "Predmet e-pošte"; mm.Body = "Tijelo e-pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-mail zaštićen]", "YandexPassword"); sc.Send(mm); ) )

SMTP poslužitelj: smtp.mail.ru
Luka: 25
koristeći (MailMessage mm = new MailMessage("Ime ", "[e-mail zaštićen]"))( mm.Subject = "Predmet e-pošte"; mm.Body = "Tijelo e-pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-mail zaštićen]", "MailRuPassword"); sc.Send(mm); ) )
Ako vaš poštanski sandučić na usluzi mail.ru završava na 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 je važno zapamtiti da gotovo sve usluge e-pošte trećih strana nameću ograničenja na broj poslanih e-poruka u određenom vremenskom razdoblju.

Oznake: e-pošta, slanje pisama, smtp

Slanje poruka e-poštom u Visual Studio 2013 C++


Čini se, zašto ponovno izumiti kotač? Postoji mnogo programa koji mogu slati e-poštu: i plaćeni i besplatni. U ovim programima možete slati pisma ne jednom, već više primatelja odjednom. No, dodavanje primatelja i dalje se obavlja ručno, unos njihovih adresa je posao, pogotovo ako ih ima više od desetak. Što ako trebate redovito slati stotine e-poruka? I ne govorim o spamu, nego mislim na potpuno legalne mailinge?

U ovom slučaju, poseban program može doći u pomoć. Ovaj članak neće sadržavati takav cijeli program, već mali program koji jednostavno šalje jedno pismo na jednu adresu. U ovom slučaju, autorizacija se događa putem smpta, odnosno pismo se ne šalje s nepoznatog mjesta, već iz vrlo stvarnog poštanskog sandučića. Primjer koristi mail.ru.

Dakle, evo teksta programa.

#uključi "stdafx.h" #upotrebom korištenje imenskog prostora Sustav; korištenje imenskog prostora System::Net; korištenje imenskog prostora System::Net::Mail; korištenje imenskog prostora System::Net::Mime; korištenje imenskog prostora System::Threading; korištenje imenskog prostora System::ComponentModel; int main() ( SmtpClient ^Smtp = gcnew SmtpClient("smtp.mail.ru", 25); Smtp->Credentials = gcnew NetworkCredential("[email protected]", "your_password"); Smtp->EnableSsl = true ; MailMessage ^Poruka = ​​gcnew MailAddress(); Poruka->Od = gcnew MailAddress("vaš[email protected]"); Poruka->Prima->Dodaj(gcnew MailAddress("[email protected]")); Poruka- >Subject = "Header"; Message->Body = "Message"; Smtp->Send(Message); ) Vrijedno je odmah spomenuti koji uvjeti moraju biti ispunjeni: projekt u Visual Studio 2013 kreiran je ne samo za C++, također mora biti konzola, podržavati CLR okruženje. Pogledajmo pobliže što se događa i na kojoj liniji u ovom C++ programu koji šalje poruku u odabrani pretinac e-pošte.

Od redaka 1 do 8 povezane su datoteke zaglavlja i prostori imena. Linija 13 inicijalizira smpt poslužitelj. Yandex i Google koriste svoje: smtp.yandex.ru odnosno smtp.google.ru. Broj 25 na ovoj liniji je luka. Ako vaš pružatelj usluga blokira ovaj priključak ili se ne možete spojiti, možete isprobati sljedeće opcije: 465 ili 587. U retku 14 trebate unijeti svoj račun e-pošte (s kojeg će pismo biti poslano) i lozinku za ovaj poštanski sandučić.

Posebnu pozornost posvećujemo liniji 15 - ovdje je spojen sigurni ssl protokol. Ovo je potrebno za Yandex i Mail. Redak 17 stvara poruku; na 18 - povratna adresa; na 19 - adresa primatelja; 20 - zaglavlje pisma; 21 - poruka; linija 22 šalje. Ako se nakon pokretanja programa ne pojavljuju greške, ništa se ne događa, onda je sve u redu - provjerite poštanski sandučić primatelja.

Ako imate barem neke manje vještine programiranja, završiti ostatak će biti vrlo lako. Trebate napraviti prozor, obrazac, nekoliko polja za unos u obrascu, natjerati program da učita popis adresa iz npr. tekstualne datoteke ili MS Access baze podataka. Ako vam to još nije sasvim jasno, onda ću vam u sljedećim člancima sve detaljnije ispričati.

Sva pitanja o programima u C++, java, skriptama u java script i php, izradi i izgledu web stranica možete postaviti putem pošte [e-mail zaštićen] ili pokucaj na Skype up777up2. Za vrlo razumnu naknadu, rado ću vam pomoći.

Dodatak

Jedan od posjetitelja bloga postavio je pitanje: kako priložiti datoteku u ovom programu? Odgovor je jednostavan: trebate dodati nekoliko redaka koda u aplikaciju:

String^ att = L"att.xls"; Attachment^ dan = gcnew Attachment(att, MediaTypeNames::Application::Octet); Poruka->Prilozi->Dodaj(dan); U prvom retku definiramo priloženu datoteku, u drugom definiramo podatak i nalog da se ne tumači (Content-Type zaglavlje MIME protokola) i u trećem ga dodamo u pismo. To je sve.

Vrlo često se morate nositi sa slanjem e-pošte iz programskog koda. Ne morate daleko tražiti primjere.

Ovaj članak je nagovještaj i ne otkriva ništa novo, ali prije nego što sam ga napisao, slično sam pogledao na Internetu i nemalo se iznenadio da gotovo svugdje nude ili neko rješenje koje ne radi ili je zastarjelo ili je jednostavno nepismeno napisano.

Prva stvar koju ne biste trebali učiniti na temelju ovih primjera je koristiti System.Web.Mail, koji je odavno zastario, a počevši od Visual Studio 2010, ne možete ni dodati System.Web biblioteku bez poznavanja punog puta u odgovarajući DLL.
Umjesto toga predlaže se korištenje knjižnice System.Net.
koristeći System.Net; koristeći System.Net.Mail;
Dakle, najjednostavnija stvar, koja je ujedno i najvažnija i najčešće korištena, je slanje pisma sa vašeg mail servera 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 prava slati pisma bez dodatne autorizacije.

Primjer koda za slanje pisma s lokalnog stroja:
", "[e-mail zaštićen]"))( mm.Subject = "Predmet pošte"; mm.Body = "Tijelo pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("127.0.0.1"))(//Adresa bi trebala biti ovdje poslužitelj pošte i port, ako je potrebno sc.Send(mm); ) )

Korištenje usluga e-pošte kao što su Gmail, Yandex, Mail.ru itd. sve je isto, samo su dodani parametri s autorizacijom.

SMTP poslužitelj: smtp.gmail.com
Luka: 587
koristeći (MailMessage mm = new MailMessage("Ime ", "[e-mail zaštićen]"))( mm.Subject = "Predmet e-pošte"; mm.Body = "Tijelo e-pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-mail zaštićen]", "GmailPassword"); sc.Send(mm); ) )

SMTP poslužitelj: smtp.yandex.ru
Luka: 25
koristeći (MailMessage mm = new MailMessage("Ime ", "[e-mail zaštićen]"))( mm.Subject = "Predmet e-pošte"; mm.Body = "Tijelo e-pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-mail zaštićen]", "YandexPassword"); sc.Send(mm); ) )

SMTP poslužitelj: smtp.mail.ru
Luka: 25
koristeći (MailMessage mm = new MailMessage("Ime ", "[e-mail zaštićen]"))( mm.Subject = "Predmet e-pošte"; mm.Body = "Tijelo e-pošte"; mm.IsBodyHtml = false; using (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-mail zaštićen]", "MailRuPassword"); sc.Send(mm); ) )
Ako vaš poštanski sandučić na usluzi mail.ru završava na 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 je važno zapamtiti da gotovo sve usluge e-pošte trećih strana nameću ograničenja na broj poslanih e-poruka u određenom vremenskom razdoblju.

Oznake: e-pošta, slanje pisama, smtp