البرمجة

تحسين كود ASP.NET C# لإرسال بريد إلكتروني لموردين من قاعدة بيانات SQL

في هذا السياق، يظهر أنك تواجه تحديًا في إرسال رسائل البريد الإلكتروني إلى جميع مورديك من خلال قاعدة بيانات SQL باستخدام ASP.NET C# Solution. الكود الحالي يبدو أنه يقوم بالتكرار عبر الصفوف في الجدول ومحاولة إرسال رسالة بريد إلكتروني لكل صف. ومع ذلك، يبدو أن هناك خطأ في تنظيم الحلقات.

للبداية، دعونا نبدأ بتحسين التصميم العام لجعل الكود أكثر فعالية ووضوحًا. سأقدم لك توجيهات لتعديل الكود وحل المشكلة.

أولاً، دعونا نقوم بتحسين الجدول وتصحيح بعض الأخطاء في السياق الحالي:

sql
USE SpecCars GO CREATE TABLE Suppliers( SuppId INT IDENTITY(1,1) PRIMARY KEY, SuppName NVARCHAR(60) NOT NULL, SuppAddress NVARCHAR(150) NOT NULL, SuppSuburb NVARCHAR(60) NOT NULL, SuppState NVARCHAR(30) NOT NULL, SuppPost NVARCHAR(10) NOT NULL, SuppPhone NVARCHAR(10) NOT NULL, SuppEmail NVARCHAR(100) NOT NULL, SuppCode NVARCHAR(10) NOT NULL ) GO -- إضافة موردين INSERT INTO Suppliers (SuppName, SuppAddress, SuppSuburb, SuppState, SuppPost, SuppPhone, SuppEmail, SuppCode) VALUES ('Jacks Auto', '2 Jill Street', 'Belgrade', 'VIC', '3299', '9555 4457', '[email protected]', 'JACBLA'), ('Ultimate Lights', '205 Browns Road', 'Tullamarine', 'VIC', '3011', '9877 2255', '[email protected]', 'ULTTUL')

الآن، دعونا نتجه إلى الكود C#:

csharp
using System; using System.Data.SqlClient; using System.Net.Mail; class Program { static void Main() { string connectionString = "Data Source=.;Initial Catalog=SpecCars;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand("SELECT SuppEmail FROM Suppliers", connection)) { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { string email = reader["SuppEmail"].ToString(); SendEmail(email); } } } connection.Close(); } } static void SendEmail(string recipientEmail) { MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress("[email protected]"); mailMessage.To.Add(recipientEmail); mailMessage.Subject = "Assembly Line Stop"; mailMessage.Priority = MailPriority.High; mailMessage.Body = "Please be advised that the assembly line at Specialised Cars has STOPPED. You will be notified once the line has started again. Any Services between the LINE STOP and the LINE START will be carried out after 19:00 (7pm)."; mailMessage.IsBodyHtml = true; SmtpClient smtpClient = new SmtpClient("smtp-mail.myprovider.com", 587); smtpClient.EnableSsl = true; smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "your-password"); smtpClient.Send(mailMessage); } }

في هذا التحسين، قمنا بتصحيح الخطأ في استخدام الحلقات وتحسين فعالية الكود. يتم استخدام دالة SendEmail لإرسال رسالة بريد إلكتروني لكل عنوان بريد إلكتروني من الجدول. يمكنك استبدال “[email protected]” و “your-password” بالبريد الإلكتروني الخاص بك وكلمة المرور.

المزيد من المعلومات

بالطبع، سأقدم المزيد من المعلومات حول الكود وكيفية تحسينه بشكل إضافي.

  1. استخدام تصفية في الاستعلام:
    لتحسين أداء استعلام البيانات، يمكنك استخدام تصفية في الاستعلام لاسترجاع فقط الحقول التي تحتاج إليها. في هذه الحالة، نحن نحتاج فقط إلى SuppEmail.

    csharp
    using (SqlCommand command = new SqlCommand("SELECT SuppEmail FROM Suppliers", connection))
  2. استخدام using statement:
    قمت بتضمين using statements للتأكد من إغلاق الاتصال والأمر والقارئ بشكل صحيح بمجرد الانتهاء من استخدامها. هذا يساعد في تجنب تسريب الموارد.

    csharp
    using (SqlConnection connection = new SqlConnection(connectionString)) using (SqlCommand command = new SqlCommand("SELECT SuppEmail FROM Suppliers", connection)) using (SqlDataReader reader = command.ExecuteReader())
  3. تحسين معلومات التسجيل:
    يمكنك تحسين معلومات التسجيل لمساعدتك في فهم أي مشكلة قد تحدث أثناء العملية. يمكنك إضافة تسجيل لمعرفة متى يتم إرسال البريد الإلكتروني.

    csharp
    Console.WriteLine($"Sending email to: {recipientEmail}");
  4. التعامل مع الاستثناءات:
    يفضل أن تقوم بالتعامل مع الاستثناءات لضمان أنك تتعامل بشكل صحيح مع أي مشكلة قد تظهر أثناء إرسال البريد الإلكتروني. يمكنك استخدام جملة try/catch للتعامل مع استثناءات SmtpException أو أي استثناءات أخرى.

    csharp
    try { smtpClient.Send(mailMessage); Console.WriteLine("Email sent successfully!"); } catch (SmtpException ex) { Console.WriteLine($"Failed to send email. Error: {ex.Message}"); }

باستخدام هذه التحسينات، يمكنك تحسين أداء الكود وزيادة قابليته للصيانة وتتبع الأخطاء بشكل أفضل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر