الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارسال رسالة بريد الكتروني من خلال صفحة aspx

رائج
بدأه Tammam_KD في 31 يناير 2011 · 71 رد · 8,843 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ارسال رسالة الكترونية من صفحة aspx

كثيرا ماتم سؤالي عن كيفية ارسال رسالة بريد الكتروني من خلال صفحة aspx قمت بتصميمها فالكثير منا يقف عاجزا أمام smtp فهو لا يملك سيرفر خاص به كي يتعلم هذا الأمر ............... اليوم ومن خلال بحثي وجدت طريقة تقوم فيها بارسال رسالة من خلال صفحتك الالكترونية من خلال بريد الجي ميل .....

متطلبات العمل : فقط أن يكون لديك بريد الكتروني في موقع غوغل أي من خلال الجي ميل (gmail) ...............

حسنا لن أطيل الشرح وسأترككم مع الكود ........... ومن خلال الكود سأقوم بشرح كل شيء خطوة بخطوة ........

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
//*********************************************//
//يتوجب عليك بداية استيراد هذين الفضائين التاليين //
//************* using System.Net.Mail;         //
//************* using System.Net;              //
//*********************************************//
using System.Net.Mail;
using System.Net;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //قم الآن بتعريف متحول الرسالة وحدد فيه
        //عنوان المرسل والمرسل إليه
        //ونص الرسالة وعنوان الرسالة
        //ولو احتاج الأمر قم بعمل مرفق
        MailMessage msg = new MailMessage("FromEmail@gmail.com", "ToEmail@windowslive.com", "Subject", "Message Body");
        //هل تريد تفعيل كتابة نص منسق بتنسيق
        //HTML
        //وارسال الرسالة فيه
        msg.IsBodyHtml = false;
        //قم بوضع معرف الارسال
        // احجز بداية مساحة بالذاكرة من خلال التعريف عن متحول كما يلي
        NetworkCredential mailAuth = new NetworkCredential();
        //قم بتحديد البريد الإلكتروني المستخدم لتسجيل الدخول لبريد الجي ميل
        mailAuth.UserName = "MyEmail@gmail.com";
        //قم بوضع كلمة المرور الخاصة ببريدك الإلكتروني
        mailAuth.Password = "MyPassword";
        //قم بتعريف متحول من نوع
        //SmtpClient
        // وقم بتزيده بالإعدادات التالية الخاصة بالمضيف والمنفذ المستخدم له
        SmtpClient mailClieant = new SmtpClient("smtp.gmail.com",587);
        //تفعيل ssl للارسال الآمن للبيانات
        mailClieant.EnableSsl = true;
        //عدم استخدام البيانات الافتراضية لجملة الإعتماد
        mailClieant.UseDefaultCredentials = false;
        //قم باستخدام بيانات الإعتماد الخاصة بي والتي قمت بتزيدها
        // من خلال المتحول mailAuth
        mailClieant.Credentials = mailAuth;
        //أخيرا قم بارسال الرسالة
        mailClieant.Send(msg);

    }
}

أرجو أن تكونوا قد استفدتم من الدرس ولا تنسوا أن تجربوا هذا المثال وأن تطبقوا محتوياته خطوة بخطوة

ملاحظة : يمكنك البحث عن اعدادات smtp الخاصة بالياهو أو الهوت ميل واستخدمها للارسال من بريد الياهو أو الهوت ميل ..........

لا تنسونا من صالح الدعاء

5

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#2

جزاك الله خيرا أخي على الدرس

وفقك الله للمزيد

ولكن آخر شيئ وهي الملاحظة لم أفهم ماذا تقصد بها

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#3

السلام عليكم ...............

كما رأيت أخي الكريم من خلال المثال الخاص بي أني قمت بتعريف

SmtpClient mailClieant = new SmtpClient("smtp.gmail.com",587);

هذه الإعدادت خاصية ببريد الجي ميل ...................... يوجد اعدادات خاصة بمزوادت البريد الإلكتروني الأخرى مثل الياهو وغوغل ........... يمكنك وضعها واستخدامها في عمليات الارسال من بريد الياهو او الهوت ميل بدلا من الجي ميل ...............

2

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#4

شكرا ع الدرس

بس اذا كنت عاوزة ارسل ايميل للمستخدم اذا نسي الباسوورد كيف ممكن اعملها؟؟

#5

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

ولكت هذه القيمة هي :

asjjjs88sjf88ssk

قومي بتخزين القيمة في قاعدة البيانات ومن ثم ارسلي للمستخدم رابط على بريده الالكروني بالطريقة السبقة بالشكل :

www.mywebsite.com/restorepassword.aspx?id=asjjjs88sjf88ssk

الآن في الصفحة التي تم ارسالها للمستخدم وفي البيج لود تأكدي من ان هنالك قيمة مخزنة في قاعدة البيانات هي

asjjjs88sjf88ssk

إذا وجدت فأعطي المستخدم امكانية لتغيير كلمة المرور وإلا .......... يعتبر نوع من التطفل

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#6

طيب أستاذي هل نستطيع إستخدام هذه الطريقة في جعل الموقع يرسل رسالة إلى كل الأعضاء المسجلين في المنتدى

على سبيل المثال يوجد جدول فيه كل إيميلات الأعضاء وأريد عند إضافة موضوع للمنتدى يتم إرسال رابط هذا الموضوع إلى كل العناوين

في هذا الجدول

وبالنسبة لإجابتك السابقة عن توليد كلمة سر للمستخدم

كيف يتم توليد كلمة سر عشوائية؟

شكرا جزيلاً

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#7

للارسال لأكثر من مستخدم قم بعمل التالي :

MailMessage msg = new MailMessag ("FromMail@gmail.com","To1@svuonline.org,To2@hotmail.com", "Hi", "How r u ?");

ولكن من الممكن أن تصادف بعض المشاكل وهي انك تقوم بارسال بريد الكتروني من خلال برنامج خارجي ........ وهي ما يمسى بالبريد العشوائي ........... هذا النوع على الأغلب تحاربه مزودات البريد الالكتروني والصراحة لا اعرف الآليه التي يستخدمونها

وأعيد لك قد تواجه هذه المشكلة وقد لا تواجهها

1

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#8

أما بالنسبة لعملية توليد كود فغليكم طريقتين :

        // first way ...........................
        Random r = new Random();
        r.Next(125);
        lab1.Text = r.GetHashCode().ToString();
        // second way ...........................
        Guid g = Guid.NewGuid() ;
        lab1.Text =  g.GetHashCode().ToString();

تم تعديل هذه المشاركة بواسطة Tammam_KD في 26 فبراير 2011 في 21:09

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#9

جزاك الله خيراً أستاذي تمام

ولكن كيف إذا كانت عناوين هذه الإيميلات في جدول في قاعدة بيانات

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#10

بسيطة أخي اجلبها باستعلام ............ ليست بصعبة

string s = "select email from users";
sqlcommand cmd = new sqlcommand(s,con);
object Obj = cmd.executeReader();

أظن أصبح المثال واضح .......... يمكنك تطبيق مثيل له ....................

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#11

شكرا أخي

جاري التطبيق

وبالنسبة لهذه الملاحظة التي وضعتها وهي:

ملاحظة : يمكنك البحث عن اعدادات smtp الخاصة بالياهو أو الهوت ميل واستخدمها للارسال من بريد الياهو أو الهوت ميل ..........

أين نبحث؟

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#12

ابحث في غوغل عن اعدادات smtp الخاصة ببريدك الالكتروني

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#13

السلام عليكم

انا حاولت في هذه الموضوع كثير ...بس للاسف ولا مره زبط

وحتى هذه المره... ما زبط

انا اتبعت هذا الخطوات /index.php?showtopic=175256&st=0&p=1086471&hl=+contact%20+us&fromsearch=1entry1086471

والحمدلله زبطت....

بس اللي لفت نظري ...طريقه ارسال باسورد جديده لليوزر ...ياريت تطبق بمثال لانى والله ما فهمتها ....وكمان انا كنت واضعه استفسار قبل فتره عن هذا الكلام PasswordRecovery

هلا انا بعرف كيف يرجع الباسورد على نفس صفحة الويب

اما على الايميل ...ما عرفت ..

شكرا على المساعده مسبقا

***تحياتي***

سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا

اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم

#14

حاولت وظهر مع الخطأ التالي :

post-218064-003831300 1299189918_thumb.j

المرفقات
mail.jpg

تم تعديل هذه المشاركة بواسطة mamababadada في 4 مارس 2011 في 01:05

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#15
mamababadada كتب:

حاولت وظهر مع الخطأ التالي :

تأكد من تطبيقك للكود بشكل صحيح وتأكد من بريدك الالكتروني وكلمة المرور

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#16
ضحى حسان كتب:

السلام عليكم

انا حاولت في هذه الموضوع كثير ...بس للاسف ولا مره زبط

وحتى هذه المره... ما زبط

انا اتبعت هذا الخطوات /index.php?showtopic=175256&st=0&p=1086471&hl=+contact%20+us&fromsearch=1entry1086471

والحمدلله زبطت....

بس اللي لفت نظري ...طريقه ارسال باسورد جديده لليوزر ...ياريت تطبق بمثال لانى والله ما فهمتها ....وكمان انا كنت واضعه استفسار قبل فتره عن هذا الكلام PasswordRecovery

هلا انا بعرف كيف يرجع الباسورد على نفس صفحة الويب

اما على الايميل ...ما عرفت ..

شكرا على المساعده مسبقا

***تحياتي***

وشو بالنسبه اللي .... :mellow:

سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا

اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم

#17
ضحى حسان كتب:

السلام عليكم

انا حاولت في هذه الموضوع كثير ...بس للاسف ولا مره زبط

وحتى هذه المره... ما زبط

انا اتبعت هذا الخطوات /index.php?showtopic=175256&st=0&p=1086471&hl=+contact%20+us&fromsearch=1entry1086471

والحمدلله زبطت....

بس اللي لفت نظري ...طريقه ارسال باسورد جديده لليوزر ...ياريت تطبق بمثال لانى والله ما فهمتها ....وكمان انا كنت واضعه استفسار قبل فتره عن هذا الكلام PasswordRecovery

هلا انا بعرف كيف يرجع الباسورد على نفس صفحة الويب

اما على الايميل ...ما عرفت ..

شكرا على المساعده مسبقا

***تحياتي***

يمكنك تجريب الكود التالي

         string connectionstring = WebConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(connectionstring);
        con.Open();
        string sql = "SELECT EmailAddress FROM Users WHERE EmailAddress = '"+TextBox_recover.Text+"'";
        SqlTransaction tran = con.BeginTransaction();
        SqlCommand cmd = new SqlCommand(sql, con,tran);
        object Obj = cmd.ExecuteScalar();
        if (Obj == null)
        {
            Label1.Text = "Email not found";
            tran.Rollback();
        }
        else
        {
            string EmailAddress = Obj.ToString();
            Guid MyGuid = new Guid();
            string NewPassword = MyGuid.GetHashCode().ToString();
            sql = "Update Users set Password ='" + NewPassword + "' where EmailAddress ='"+TextBox_recover.Text+"'";
            Obj = cmd.ExecuteNonQuery();
            if (Obj == null)
            {
                Label1.Text = "Error";
                tran.Rollback();
            }
            else
            {

                MailMessage msg = new MailMessage("YourEmail@Site.com", EmailAddress , "Subject", "Your New Password is : "+NewPassword);
                msg.IsBodyHtml = false;
                NetworkCredential mailAuth = new NetworkCredential();
                mailAuth.UserName = "YourGmailEmail";
                mailAuth.Password = "YourGmailPassword";
                SmtpClient mailClieant = new SmtpClient("smtp.gmail.com", 587);
                mailClieant.EnableSsl = true;
                mailClieant.UseDefaultCredentials = false;
                mailClieant.Credentials = mailAuth;
                mailClieant.Send(msg);
                tran.Commit();
            }
        }
1

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#18
اقتباس

تأكد من تطبيقك للكود بشكل صحيح وتأكد من بريدك الالكتروني وكلمة المرور

تأكدت من جميع الخطوات وكل شيء صحيح ؟!! علما انني استخدم فيجوال استديو 2008 .

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#19

بجد موضوع مهم جدا جدا

وفادنى كتيييييييييييييييير

شكرا جزيلا ليك يا Tammam

ليا استفسار صغير بس

 mailAuth.Password = "MyPassword";

كدا لو اى حد شاف الكود هيعرف الباسورد

فهل يوجد طريقة اعمل بيها نفس المهمة ولكن الباسورد متظهرش ؟؟

شكرا جزيلا لك

#20
shamy789 كتب:

بجد موضوع مهم جدا جدا

وفادنى كتيييييييييييييييير

شكرا جزيلا ليك يا Tammam

ليا استفسار صغير بس

 mailAuth.Password = "MyPassword";

كدا لو اى حد شاف الكود هيعرف الباسورد

فهل يوجد طريقة اعمل بيها نفس المهمة ولكن الباسورد متظهرش ؟؟

شكرا جزيلا لك

أهلا بك أخي الكريم ............ بالنسبة للكود أنت قمت بوضعه على السيرفر أولا ولا يمكن للمستخدمين رؤيته

ثانيا يمكنك وضع textbox تمرر من خلاله البريد الالكتروني الخاص بك وتمرر ايضا كلمة المرور ....... عن طريق كتابتهما فيها ........... الكود الذي قمت بكتابته لحضراتكم ما هو إلا كود بأبسط أشكاله يمكنكم التحكم به كيفما شئتم ...........

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#21

انا هخلى اليوزر يبعتو من ايميل ثابت والرسايل برده تروح لايميل ثابت

-

-

بس هل معنى كلامك ان الكود محدش يقدر يشوفه حتى لو حصل هاك ؟؟

#22

الهاك موضوع خطير جداااا......... يعني لازم تكون بتعرف كيف تحمي ملفاتك ........ وتمنع المستخدمين من فتحها عن طريق اضافة roles ...... لو عامل رول مارح يحصل هاك

بس لو حصل هاك رح يشوفوا الباسوورد

ومشان ما تبقى خايف من الموضوع هاد ضع كلمة المرور ضمن textbox عندها ارسال كلمة المرور سيتم اثناء التصفح فقط ولن يخزن شيء على السيرفر وحتى لو حصل هاك لا احد سيكشف كلمة مرورك

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#23

بعد البحث وجدت الحل ولمشاركة الفائدة لقد نجح معي هذا الكود بارسال بريد الى أي خادم بريد على الانترنت

using System.Web.Mail;



public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        SendMail("smtp.gmail.com",
                465,
                "u_email@gmail.com",
                "password" ,
                "majed Sender",
                "gid.net",
                "Stefan Receiver",
                "majed@yahoo.com",
                "مرحبا عزيزي الزائر",
                "يمكنك فحص بريدك والدخول على الرابط التالي <br/>http://www.google.com",
                true);

        Response.Write("Email Go");
    }



    private static void SendMail(string sHost, int nPort, string sUserName, string sPassword, string sFromName, string sFromEmail,
        string sToName, string sToEmail, string sHeader, string sMessage, bool fSSL)
    {
        if (sToName.Length == 0) sToName = sToEmail;

        if (sFromName.Length == 0) sFromName = sFromEmail;


        MailMessage Mail = new MailMessage();
        Mail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"] = sHost;
        Mail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2;

        Mail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"] = nPort.ToString();
        if (fSSL)
            Mail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"] = "true";

        if (sUserName.Length == 0)
        {
            //Ingen auth 
        }
        else
        {
            Mail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
            Mail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = sUserName;
            Mail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = sPassword;
        }

        Mail.To = sToEmail;
        Mail.From = sFromEmail;
        Mail.Subject = sHeader;
        Mail.Body = sMessage;
        Mail.BodyFormat = MailFormat.Html;

        SmtpMail.SmtpServer = sHost;
        SmtpMail.Send(Mail);
    } 

}

تم تعديل هذه المشاركة بواسطة mamababadada في 6 مارس 2011 في 03:04

1

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#24

السلام عليكم ورحمة من الله وبركاته

اخواني لدي طلب أخي تمام

لدي موقع صغير فيه صفحة التسجيل - الزائر بملأ بعض المعلومات ويتسجل عادي في الموقع وعندما يضعط على Ok ترسل رسالة الى البريد الذي أدخله كما أن كل المعلومات تسجل في قاعدة البيانات وهناك خانه اسمه etat

تكون في حالة no اي أن الزائر أو العضو الذي قام بالتسجيل لم يضغط على الرسالة المبعوثة له في بريده أي أنه بالأحرى لم ينشط حسابه بعد

طلبي هو كود يعالج هاته المسألة أي أن عندما ينشط حسابه خانة etat في قاعدة البيانات تصبح yes وبالتالي امكانيه التمتع بصلاحية العضوية

اخواني اريد الكود ب (asp.net +sql 2008+vb.net 2008)

وشكرا لكم جزييييييييييييلا

#25
paranoia كتب:

السلام عليكم ورحمة من الله وبركاته

اخواني لدي طلب أخي تمام

لدي موقع صغير فيه صفحة التسجيل - الزائر بملأ بعض المعلومات ويتسجل عادي في الموقع وعندما يضعط على Ok ترسل رسالة الى البريد الذي أدخله كما أن كل المعلومات تسجل في قاعدة البيانات وهناك خانه اسمه etat

تكون في حالة no اي أن الزائر أو العضو الذي قام بالتسجيل لم يضغط على الرسالة المبعوثة له في بريده أي أنه بالأحرى لم ينشط حسابه بعد

طلبي هو كود يعالج هاته المسألة أي أن عندما ينشط حسابه خانة etat في قاعدة البيانات تصبح yes وبالتالي امكانيه التمتع بصلاحية العضوية

اخواني اريد الكود ب (asp.net +sql 2008+vb.net 2008)

وشكرا لكم جزييييييييييييلا

أخي سأقوم بشرح آلية عمل هذه الطريقة وعليك أن تجرب بنفسك وضع الكود الذي تقوم بعمله حتى نكتشف الأخطاء سوية ......

أولا قمت بارسال رابط إلى بريد العضو الإلكتروني ............. الرابط يجب أن يكون من الشكل

www.website.com/registerationCompllete.aspx?UserCode=125422225544

عندما يفتح المستخدم هذه الصفحة يتم قراءة quiryString فإذا احتوت على قيمة ما يتم مقارنة هذه القيمة مع قاعدة البيانات فإذا تطابقت القيمتان عندها يتم وضع علامة yes للمستخدم وإلا لا يفعل شيء

العملية بسيطة جربها أخي

2

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

مواضيع مشابهة