Elektron pochta serveri yordamida ishlovchi mijoz dasturini yaratish


C# da Net.mail kutubxonasi bilan ishlash



Download 1,88 Mb.
Pdf ko'rish
bet6/8
Sana06.04.2022
Hajmi1,88 Mb.
#531885
1   2   3   4   5   6   7   8
Bog'liq
elektron pochta serveri yordamida ishlovchi mijoz dasturini yaratish

2.2.C# da Net.mail kutubxonasi bilan ishlash. 
SMTP Klient sinfi elektron pochta uchun SMTP serverida ishlaydi. SMTP 
protokoli manzilga yo‘naltiruvchi RFC 2821 standarti uchun mo‘ljallangan.
SMTP Klient sinfida xabararni elektron pochtada yuborish uchun quyidagi 
tushunchalarni bilishimiz kerak bo‘ladi:

Attachment sinfi-fayllar joylashuvini boshqaradi. Bu sinf elektron pochta 


xabarlarining fayl, potok yoki matnligiga qarab ularni saralaydi.


33 
MailAddress- Elektron pochta yuboruvchisi va qabul qiluvchi manzilini namoyish 
etadi. 
MailMessage -Elektron pochta xabarlarini ko‘rsatadi 
Elektron pochta xabarlarini yasash va yuborish uchun Smtp Klient yordamidan 
foydalanish zarur. Buning uchun quyidagi vazifalarni bajarish kerak bo‘ladi: 
- SMTP server-xost, Elektron pochta jo‘natmalari uchun foydalaniladi. Host va 
Port tarkibida qarab chiqiladi. 
-Credentials ma‘lumotlarni to‘liqligicha tekshiradi,agar bu SMTP server uchun 
zarur bo‘lsa. 
-Send va SendAsync-elektron pochta jo‘natuvchilari manzili shu metodlar orqali 
amalga oshiriladi. Xuddi shunday vazifani MailMessage.From ham amalga oshira 
oladi. 
-Elektron xabarlarni jo‘natuvchi manzili Send va SendAsync qabul qiluvchi metod 
amalga oshiradi. Xuddi shunday vazifani MailMessage.To ham amalga oshira 
oladi. 
-MailMessage.Body- Send va SendAsync metodidagi xabarlarni o‘zida saqlovchi. 
Elektron pochta xabarlari xizmatini yoqish uchun, avvalo Attachment sinfi 
yordamida ruxsatni tashkil qilish lozim, undan keyin esa unga xabar qo‘shish 
uchun MailMessage.Attachments buyrug‘idan foydalanamiz. Elektron pochta 
foydalanuvchilari har ikkala qabul qiluvchi tomonlar va fayl tipi ko‘rinishi bir xil 
bo‘lishi kerak, aks holda ular xabarlarni o‘qiy olmasligi mumkin. Ba‘zi 
ma‘lumotlarni o‘qiy olmagan foydalanuvchi uchun MailMessage.AlternateViews 
buyrug‘i yordamida universal xabar o‘qish va yuborish imkoniyati yaratiladi.
Taqdimotlar konfiguratsiyasi va kompyuter fayllar yordamida SmtpClient xost, 
port va quriladigan ma‘lumotlarning barcha obyektlarining parametrlarini 
belgilashi mumkin.


34 
Elektron pochta xabarlarini yuborish uchun va xabarlarning SMTP serverda 
xabar yuborilayotgan vaqtini bloklash uchun Send metodi kerak bo‘ladi. Bosh 
patokka dasturda xabar yuborishni davom ettirish uchun SendAsync metodidan 
foydalaniladi. SendCompleted hodisasi SendAsync operatsiyasi ishida ruxsat 
vazifasini bajaradi. Bu hodisani amalga oshirish uchun SendCompleted ga 
SendCompletedEventHandler delegatni qo‘shish kerak bo‘ladi. Delegat 
SendCompletedEventHandler hodisasida so‘rovni qaytaruvchi SendCompleted 
metodga murojaat qilishi zarur. Elektron pochta jo‘natmalari sinxronligini 
yo‘qotish, ishni yakunlash uchun SendAsyncCancel metodidan foydalaniladi. 
Quyida berilgan kodda elektron pochtada xabarlarni qanday yuborish ko‘rsatilgan: 
using System; 
using System.Net; 
using System.Net.Mail; 
using System.Net.Mime; 
using System.Threading; 
using System.ComponentModel; 
namespace Examples.SmptExamples.Async 

public class SimpleAsynchronousExample 

static bool mailSent = false; 
private static void SendCompletedCallback(object sender, 
AsyncCompletedEventArgs e) 

// Get the unique identifier for this asynchronous operation. 
String token = (string) e.UserState; 
if (e.Cancelled) 



35 
Console.WriteLine("[{0}] Send canceled.", token); 

if (e.Error != null) 

Console.WriteLine("[{0}] {1}", token, e.Error.ToString()); 
} else 

Console.WriteLine("Message sent."); 

mailSent = true; 

public static void Main(string[] args) 

// Command line argument must the the SMTP host. 
SmtpClient client = new SmtpClient(args[0]); 
// Specify the e-mail sender. 
// Create a mailing address that includes a UTF8 character 
// in the display name. 
MailAddress from = new MailAddress("jane@contoso.com",
"Jane " + (char)0xD8+ " Clayton",
System.Text.Encoding.UTF8); 
// Set destinations for the e-mail message. 
MailAddress to = new MailAddress("ben@contoso.com"); 
// Specify the message content. 
MailMessage message = new MailMessage(from, to); 
message.Body = "This is a test e-mail message sent by an application. "; 
// Include some non-ASCII characters in body and subject. 
string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', 
'\u2193'}); 


36 
message.Body += Environment.NewLine + someArrows; 
message.BodyEncoding = System.Text.Encoding.UTF8; 
message.Subject = "test message 1" + someArrows; 
message.SubjectEncoding = System.Text.Encoding.UTF8; 
// Set the method that is called back when the send operation ends. 
client.SendCompleted += new
SendCompletedEventHandler(SendCompletedCallback); 
// The userState can be any object that allows your callback
// method to identify this send operation. 
// For this example, the userToken is a string constant. 
string userState = "test message1"; 
client.SendAsync(message, userState); 
Console.WriteLine("Sending message... press c to cancel mail. Press any 
other key to exit."); 
string answer = Console.ReadLine(); 
// If the user canceled the send, and mail hasn't been sent yet, 
// then cancel the pending operation. 
if (answer.StartsWith("c") && mailSent == false) 

client.SendAsyncCancel(); 

// Clean up. 
message.Dispose(); 
Console.WriteLine("Goodbye."); 



MailMessage sinfining ketma-ketlik iyerarxiyasi: 


37 
System.Object  
System.Net.Mail.MailMessage 
Jo‘natiluvchi nomi:  System.Net.Mail 
to‘plam : System ( System.dll) 
MailMessage konstruktori: 
-
 
MailMessage()-MailMessage sinfida bo‘sh nusxa(ekzemplyar) ro‘yxatdan 
o‘tkazadi; 
-
 
MailMessage(MailAddress, MailAddress)- MailAddress yordamida 
MailMessage sinfida yangi nusxa yaratadi; 
-
 
MailMessage(String, String)- String sinfi obyaktlari uchun MailMessage 
sinfida yangi nusxa yaratadi; 
-
 
MailMessage(String, String, String, String)- MailMessage sinfida yangi nusxa 
yaratadi. 
MailMessage sinfining tarkibi: 
-
 
AlternateViews-altarnativ formadagi xabarlarni saqlovchi amallar to‘plamini 
qaytaradi; 
-
 
Attachments-shu elektron pochtadagi ma‘lumotlarni saqlovchi amallar 
to‘plamini qaytaradi; 
-
 
Bcc-shu elektron pochta xabarlarida yopiq holdagidagi to‘plamlar manzilini 
qaytaradi; 
-
 
Body-jo‘natuvchi yoki, xabarlarning asosiy qismi saqlanadigan joy; 
-
 
BodyEncoding- egalik qiluvchi yoki kodlashrituvchi xabarlar; 
-
 
BodyTransferEncoding-asosiy matndagi qaytaruvchi yoki jo‘natmalarni 
kodlashtiruvchi imkoniyatlarni yaratadi; 
-
 
CC-qabul qiluvchi elektron pochta xabarlarini manzil to‘plamiga qaytaradi. 
-
 
DeliveryNotificationOptions-elektron pochta xabarlarining yuborilgani yoki 
qabul qilingani to‘g‘risidagi ma‘lumotni qaytaradi. 
-
 
From- elektron pochta yuborilgani yoki qabul qilingan xabarlarining manzili; 
-
 
Headers- elektron pochtada yuborilgan xabarning nomini qaytaradi; 


38 
-
 
HeadersEncoding-elektron pochtada yuborilgan xabarning nomi 
foydalanuvchi uchun yuborish yoki qabul qilish uchun kodlashtiradi; 
-
 
IsBodyHtml-pochta xabarlarini HTML formatidami yo‘qmi, shuni tekshiradi; 
-
 
ReplyTo-pochta xabarlari uchun ReplyTo manzilini yuboradi yoki qabul 
qiladi; 
-
 
ReplyToList-ushbu elektron pochta so‘rovlariga javob beruvchi manzillar 
ro‘yxati; 
-
 
Sender-jo‘natuvchi manzilini ko‘rsatadi; 
-
 
Subject-elektron pochta xabarlarining temasini ko‘rsatadi; 
-
 
SubjectEncoding-elektron pochta xabarlarining temasi kodirovkasini 
yuboradi; 
-
 
To-elektron pochta xabarlarini jo‘natuvchi manzillar to‘plami; 
-
MailMassage sinfi ekzemplyarlari elektron pochta xabarlarini tayyorlashda 
SMTP serverga SmtpClient sinfi yordamida jo‘natuvchi sinf hisoblanadi. 
MailMassage dan foydalanishdan oldin MailMassage obyektlari 
initsializatsiyalovchi jo‘natuvchi parametrlari, qabul qiluvchi, nomi va 
elektron pochta xabarlarini ko‘rsatadi. Bu parametrlar ustida ishlash uchun 
ruxsat MailMessage obyektlari tarkibi orqali amalga oshiriladi. 
Quyidagi misolda xabar yasash va jo‘natish uchun bajarilgan amallar ketma-ketligi 
ko‘rsatilgan: (C#da) 
public static void CreateMessageWithAttachment(string server) 

// Specify the file to be attached and sent. 
// This example assumes that a file named Data.xls exists in the 
// current working directory. 
string file = "data.xls"; 
// Create a message and set up the recipients. 
MailMessage message = new MailMessage( 
"jane@contoso.com", 


39 
"ben@contoso.com", 
"Quarterly data report.", 
"See the attached spreadsheet."); 
// Create the file attachment for this e-mail message. 
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); 
// Add time stamp information for the file. 
ContentDisposition disposition = data.ContentDisposition; 
disposition.CreationDate = System.IO.File.GetCreationTime(file); 
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); 
disposition.ReadDate = System.IO.File.GetLastAccessTime(file); 
// Add the file attachment to this e-mail message. 
message.Attachments.Add(data); 
//Send the message. 
SmtpClient client = new SmtpClient(server); 
// Add credentials if the SMTP server requires them. 
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
try { 
client.Send(message); 

catch (Exception ex) { 
Console.WriteLine("Exception caught in CreateMessageWithAttachment(): {0}", 
ex.ToString() ); 

// Display the values in the ContentDisposition for the attachment. 
ContentDisposition cd = data.ContentDisposition; 
Console.WriteLine("Content disposition"); 


40 
Console.WriteLine(cd.ToString()); 
Console.WriteLine("File {0}", cd.FileName); 
Console.WriteLine("Size {0}", cd.Size); 
Console.WriteLine("Creation {0}", cd.CreationDate); 
Console.WriteLine("Modification {0}", cd.ModificationDate); 
Console.WriteLine("Read {0}", cd.ReadDate); 
Console.WriteLine("Inline {0}", cd.Inline); 
Console.WriteLine("Parameters: {0}", cd.Parameters.Count); 
foreach (DictionaryEntry d in cd.Parameters) 

Console.WriteLine("{0} = {1}", d.Key, d.Value); 

data.Dispose(); 

MailAddress sinfi SmtpClient и MailMessage sinflari bilan birgalikda ishlaydi. Bu 
electron pochta xabarlarining saqlanishi uchun foydalaniladi. 
Pochta manzili User nomi, Host nomi, unchalik muhim bo‘lmagan DisplayName 
nomlaridan iborat bo‘ladi. DisplayName o‘zida belgilar, agar kodlashtirilmagan 
bo‘lsa, ASCII naborida chiqmaydi. 
MailAddress sinfi elektron pochta manzillarining quyidagi formatlarini o‘zida 
jamlagan: 
-user@host- oddiy format manzili. Agar DisplayName e‘lon qilinmagan bo‘lsa, 
shu formatdan foydalaniladi. 
-DisplayName-standart format bo‘lib, qavs ichida "display name"
so‘zi yoziladi. Agar DisplayName e‘lon qilingan bo‘lsa, shu format yaratiladi. 
-User nomi atrofida burchak to‘plam qo‘shiladi, agar Host"display name" 
user@host yoqilmagan bo‘lsa. 
- display name  uchun DisplayName qavs ichiga olinadi, agar ular 
yoqilmagan bo‘lsa. 


41 
-Yunikod belgisi DisplayName ni qo‘llab quvvatlaydi(поддерживаются). 
-User moni qavs ichida, masalan, "user name"@host. 
-foydalanuvchining davomiy ba yakuniy nuqtalarda e‘lon qilinishi: 
user...name..@host. 
-kvadrat to‘plamlarda domenlar literali, masalan, .
- (Примечания) fikr yuborilishdan oldin o‘chirib yuboriladi: (comment)"display 
name"(comment)<(comment)user(comment)@(comment)domain(comment)>(com
ment). 
Agar foydalanuvchi nomi qavs ichida bo‘lsa, butun matn qatordan boshlab 
manzilgacha DisplayName ning qismi hisoblanadi. Tahlilning yoqilishi:masalan:( 
tahlil qilinmaydi) qatnashchi nomi(tahlil qilinmaydi)qavssiz(tahlil qilinmaydi) < 
user@host > 
Quyidagi misolda jo‘natiluvchi elektron pochta xabarlari SmtpClient, MailAddress 
va MailMessage sinflari yordamida yaratiladi: 
public static void CreateCopyMessage(string server) 

MailAddress from = new MailAddress("ben@contoso.com", "Ben Miller"); 
MailAddress to = new MailAddress("jane@contoso.com", "Jane Clayton"); 
MailMessage message = new MailMessage(from, to); 
// message.Subject = "Using the SmtpClient class."; 
message.Subject = "Using the SmtpClient class."; 
message.0+- 
8*Body = @"Using this feature, you can send an e-mail message from an 
application very easily."; 
// Add a carbon copy recipient. 
MailAddress copy = new MailAddress("Notification_List@contoso.com"); 
message.CC.Add(copy); 
SmtpClient client = new SmtpClient(server); 
// Include credentials if the server requires them. 


42 
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
Console.WriteLine("Sending an e-mail message to {0} by using the SMTP host 
{1}.", 
to.Address, client.Host); 
try { 
client.Send(message); 

catch (Exception ex) { 
Console.WriteLine("Exception caught in CreateCopyMessage(): {0}", 
ex.ToString() ); 


Local mashinada xat yuborish kodi 
using (MailMessage mm = new MailMessage("Name ", 
"to@site.com")){ 
mm.Subject = "Mail Subject"; 
mm.Body = "Mail Body"; 
mm.IsBodyHtml = false; 
using (SmtpClient sc = new SmtpClient("127.0.0.1")){//Здесь должен быть 
адрес почтового сервера и порт, если необходимо 
sc.Send(mm); 


SMTP-сервер: smtp.gmail.com
Порт: 587
Gmail xizmati yordamida xat yuborish kodi: 
using (MailMessage mm = new MailMessage("Name ", 


43 
"to@site.com")){ 
mm.Subject = "Mail Subject"; 
mm.Body = "Mail Body"; 
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("from@gmail.com", 
"GmailPassword"); 
sc.Send(mm); 


Yandex xizmati orqali xat yuborish kodi: 
Mail.ru xizmati orqali xat yuborish kodi: 
using (MailMessage mm = new MailMessage("Name ", 
"to@site.com")){ 
mm.Subject = "Mail Subject"; 
mm.Body = "Mail Body"; 
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("from@mail.ru", 
"MailRuPassword"); 
sc.Send(mm); 


44 



Download 1,88 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish