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

تأكد من صحة البريد الالكتروني Email

مغلق
بدأه madi في 6 فبراير 2002 · 6 رد · 2,663 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام

احيانا تحتاج من التأكد من أن المكتوب داخل جملة String , مكتوب بصيغة عنوان بريد الكتروني صحيح ,

[l]



function InvalidEmail(const s: string): Boolean;

var

  i: Integer;

  c: string;

begin // ' ', ?, ?, ü, ?, [, ], (, ), : in EMail-Address

  Result := (Trim(s) = '') or (Pos(' ', AnsiLowerCase(s)) > 0) or

    (Pos('?', AnsiLowerCase(s)) > 0) or (Pos('?', AnsiLowerCase(s)) > 0) or

    (Pos('ü', AnsiLowerCase(s)) > 0) or (Pos('?', AnsiLowerCase(s)) > 0) or

    (Pos('[', AnsiLowerCase(s)) > 0) or (Pos(']', AnsiLowerCase(s)) > 0) or

    (Pos('(', AnsiLowerCase(s)) > 0) or (Pos(')', AnsiLowerCase(s)) > 0) or

    (Pos(':', AnsiLowerCase(s)) > 0);

  if Result then Exit;

   // @ not in EMail-Address;

  i      := Pos('@', s);

  Result := (i = 0) or (i = 1) or (i = Length(s));

  if Result then Exit;

  Result := (Pos('@', Copy(s, i + 1, Length( s ) - 1)) > 0);

  if Result then Exit;



  // Domain <= 1

  c      := Copy(s, i + 1, Length(s));

  Result := Length( c ) <= 1;

  if Result then Exit;

  i      := Pos('.', c);

  Result := (i = 0) or (i = 1) or ( i = Length( c ) );

end;





procedure TForm1.Button1Click(Sender: TObject);

begin

 if( InvalidEmail(Edit1.text) ) then

   ShowMessage('Error ')

   else

   ShowMessage('OK')



end;



[/l]

وشكرا

#2

السلام عليكم

مشكور أخ Madi

كيف يمكن التأكد من ان الـ email صحيح ؟ أقصد ان الـ account موجود فعلا .

في رسالة خاصة لك . :)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

السلام عليكم

يبدو انه ليس لنا بالطيب نصيب مع هذه الرسائل الخاصة :P

أخي العزيز tmaaa اذا لم يكن لديك مانع نريد أن نعرف كيف يتم التأكد من أن حساب البريد الالكتروني موجود فعلا ، انا كانت لي تجارب سابقة في ذلك ولم أنجح ثم انشغلت عن الموضوع ونسيته :)

اذا كانت لديك الأمثلة التي تأتي مع أفضل مكونات الانترنت Indy ( يمكن تحميلها من هنا http://www.nevrona.com/indy ) فهناك مثال اسمه SMTPRelay يقوم بارسال الرسائل الى المستقبلين مباشرة دون الحاجة الى سيرفر SMTP وطريقة عمله أنه يحول جهازك الى سيرفر SMTP ! لكنه يطلب DNS Server وهذا الذي لم أعرفه :(

أيضا هناك مكون له نفس الفكرة اسمه TSMTPRelayServer ( تجده في هذه الوصلة http://www.delphihackerspages.nl/TSmtpRelayServer.htm ) والغرض منه ارسال الرسائل مباشرة الى العناوين المرغوبة دون أن يتصل بأي سيرفر SMTP ذلك لأنه يقوم بنفس عمل السيرفر وأيضا يمكن من خلاله أن يعرف المرسل مباشرة هل وصلت الرسالة ، أو هل الحساب موجود أصلا أو مفعل active . ولكن عند تنفيذ المثال المرفق معه يقول ان هناك مشكلة في DNS Server

تحياتي للجميع

#4

السلام عليكم

أخي العزيز fsl

بالنسبة للرسالة الشخصية للاخ madi فليس لها اي علاقة بالبرمجة :D

اما بالنسبة للتاكد من ان حساب البريد الالكتروني موجود فعلا فلا اعلم كيف يمكن ذلك . انا كنت اسال ان كان هناك من يعلم :D .

ربما بارسال نوع من الـ packages الى الـ server يمكن معرفة ذلك ...

بالنسبة لموضوع الـ smtp فساطلع على الموقعين الذين تفضلت بذكرهما , و بمشاركة جميع الاخوان ان شاء الله نعرف الطريقة ;)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

السلام عليكم

أخي fsl

بالنسبة لـ DNS اي (Domain Name System ) يمكن معرفته بكتابة الامر nslookup في الـ command prompt و ستحصل على

Default Server , Address. لمزيد من المعلومات عن nslookup راجع windows help .

في البرنامج SMTPRelay اكتب الـ address الذي حصلت عليه من الخطوة السابقة في المكان المخصص لـ DNS server IP address وارسل الرسالة الى الايميل الخاص بك و اخبرنى النتيجة .

بالنسبة لي فقد نجحت عملية الارسال :D . حظ موفق لك .

تحياتي

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#6

السلام عليكم

أخ fsl وينــــــــــــك؟

لا يكون ما عجبك الامر nslookup . منتظر ردك ...

ما رايك ان تحصل على الـ DNS بنفسك في برنامجك ؟

من اجل ذلك عليك استخدام الدالة GetNetworkParams الموجودة في iphlpapi.dll ..

-كيف يمكن استخدام الدالة السابقة ؟:(

- سر المهنة :D :D :D كما يقول البعض ...

لا سر و لا شئ . تجد ما يتعلق بذلك هنا :

http://www.whirlwater.com/frames.php?http:...phelperapi.html

وهذا مثال رائع

http://www.whirlwater.com/downloads/2001/u...iphelperapi.zip

اعتذر للاخ Madi لاستغلال الموضوع الذي قام بنشره و الحديث عن شئ اخر

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#7

السلام عليكم

آسف على التأخير في الرد فأنا مشغول قليلا وبعيد عن الدلفي :D

في الوندوز 98 لا يوجد nslookup ولكنني حصلت عليه بواسطة winipcfg :)

لكن عندما قرأت الموجود في الموقع الذي وضعت وصلته يقول أن ملف iphlpapi.dll لايوجد الا في وندوز 2000 ! لكنه موجود عندي في 98 :D

انا محمل على الجهاز أيضا Windows XP لكنني قبل قليل ومن خلال 98 حذفت أحد الأقسام المنطقية للقرص الصلب بواسطة برنامج Partition Magic وعندما أعدت تشغيل الجهاز لم أتمكن من تشغيل XP ، سأصلح المشكلة وأجرب في XP فهو نظام رائع !

شكرا لك مرة أخرى وان شاء الله أعود الى الدلفي عن قريب :)

هذه لك (f)

وهذه لأحلى منتدى (f)

:D

سلام

هذا الموضوع مغلق.

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