ולידציה של מיילים
-
באתר הזה תגלה את כל הקוד מקור
אתה יכול גם להוריד את כל הפרימוורק למחשב שלךסליחה על הבורות...
אבל מה הכוונה להוריד את הפרימוורק? הרי הוא מותקן לי במחשב בלעדיו התוכנות לא היו רצות, לא?
או שאתה מתכוון שאני יכול להוריד את כולו בתור קבצי טקסט?פורסם במקור בפורום CODE613 ב28/08/2015 16:11 (+03:00)
-
לדעתי הדרך שהבאת בקישור היא הדרך הכי טובה
bool IsValidEmail(string email) { try { var addr = new System.Net.Mail.MailAddress(email); return addr.Address == email; } catch { return false; } }
וזאת משום שאם תסתכל בקוד מקור של המחלקות MailAddress ו MailAddressParser תראה שהבדיקה של המייל נעשית בצורה מאוד יסודית.
ממש מוזר :?: :?:
אני מקליד את כתובת המייל הזאת: "אברהם@אברהם" ומקבל תשובה חיובית..פורסם במקור בפורום CODE613 ב30/08/2015 16:27 (+03:00)
-
כתבתי כך:
static void Main(string[] args) { var b = ValidationEmail.IsValidEmail("אברהם@אברהם"); Console.WriteLine(b); }
וקיבלתי true.
והקוד של המתודה:public static bool IsValidEmail(string email) { try { MailAddress ma = new MailAddress(email); return ma.Address == email; } catch { return false; } }
מעניין איך אתה מימשת? ומדוע יש הבדלים..
פורסם במקור בפורום CODE613 ב30/08/2015 18:09 (+03:00)
-
-
הנה
ממש מוזר :?: :?:
אני מריץ את הקובץ שלך אצלי במחשב (ויזואל סטודיו 2015)
והתוצאה שאני מקבל בקונסול היא: True
ללא שום שגיאה..
אולי יש הבדל בין הגרסאות של הפריימוורק שלנו כך שבחדשים יותר זה נהיה חוקי???
(או שאני מקשקש שטויות...)פורסם במקור בפורום CODE613 ב30/08/2015 18:53 (+03:00)
-
עשיתי דיבוג ברפלקטור בדוטנט 4
וכן דיבוג ברפלקטור בדוטנט 4.6 במחשב וירטואלי להלן ההבדליםהפונקציה שזורקת את החריג בדוטנט 4 היא זו:
internal static int ReadReverse(string data, int index) { int num = index; while (0 <= index && (int)data[index] <= MailBnfHelper.Ascii7bitMaxValue && (data[index] == MailBnfHelper.Dot || MailBnfHelper.Atext[(int)data[index]])) { index--; } if (num == index) { throw new FormatException(SR.GetString("MailHeaderFieldInvalidCharacter", new object[] { data[index] })); } if (data[index + 1] == MailBnfHelper.Dot) { throw new FormatException(SR.GetString("MailHeaderFieldInvalidCharacter", new object[] { MailBnfHelper.Dot })); } return index; }
בדוטנט 4.6 הכל אותו דבר חוץ מהשורה באה:
while (0 <= index && ((int)data[index] > MailBnfHelper.Ascii7bitMaxValue || data[index] == MailBnfHelper.Dot || MailBnfHelper.Atext[(int)data[index]]))
יש פה הוספה, החלפה, החלפה, ומחיקה.
ולכן הוא מחזיר אמת במקום שקר
כך שלסיכום אכן יש פה באג לכאורא בדוטנט החדש...פורסם במקור בפורום CODE613 ב30/08/2015 19:46 (+03:00)
-
יש דרך לעדכן אותם בבאג הזה???
וחוצמיזה לא בדיוק הבנתי מה הולך בקוד הזה :shock: :shock:
מה בדיוק הוא מנסה לעשות..
אני כנראה ממש בור ועם הארץ.. אשמח אם יהיה לך כוח להסביר..
או שבשביל זה צריך לקרוא את הקוד של הפריימוורק??פורסם במקור בפורום CODE613 ב30/08/2015 20:41 (+03:00)
-
לא הבנתי אותך, גם לפי התקן הזה יש לאחר השטרודל מילה ואז נקודה ועוד מילה
לא, זה לא נכון בשום תקן. מעשית אתה צודק, אבל דוט נט לא יכול לעשות לך שגיאה כי "כמעט בטוח" שזה טעות... תיאורטית יכולה להיות לך כתובת מקומית ללא דומיין עילי (מעשי ברשתות פנימיות ועוד).
פורסם במקור בפורום CODE613 ב31/08/2015 12:19 (+03:00)
-
נראה לי שאתה צודק, פשוט בדוטנט החדש כל תו ביוניקוד הוא חוקי בכתובת המייל
הנה הקוד מקור, שים לב להערותinternal static int ReadReverse(string data, int index) { Debug.Assert(0 <= index && index < data.Length, "index was outside the bounds of the string: " + index); int startIndex = index; // Scan for the first invalid chars (including whitespace) for ( ; 0 <= index; index--) { if (data[index] <= MailBnfHelper.Ascii7bitMaxValue // Any Unicode allowed && (data[index] != MailBnfHelper.Dot && !MailBnfHelper.Atext[data[index]])) // Invalid char { break; } } // Check for empty/invalid dot-atom if (startIndex == index) { throw new FormatException(SR.GetString(SR.MailHeaderFieldInvalidCharacter, data[index])); } // Check for leading dot else if (data[index + 1] == MailBnfHelper.Dot) { throw new FormatException(SR.GetString(SR.MailHeaderFieldInvalidCharacter, MailBnfHelper.Dot)); } return index; }
פורסם במקור בפורום CODE613 ב31/08/2015 12:55 (+03:00)
-
אגב ריפרופי הזכרת לי את זה
http://tchumim.com/topic/456
לא יודע אם זה עוזר לך או לא. אבל זה מעניין...פורסם במקור בפורום CODE613 ב31/08/2015 22:03 (+03:00)
-
אגב ריפרופי הזכרת לי את זה
http://tchumim.com/topic/456
לא יודע אם זה עוזר לך או לא. אבל זה מעניין...ראיתי את זה.
זה הדבר היחיד שמצאתי בפורום בנושא של ולידציה :lol:
ראיתי את הקישורים שהבאתם שם לגבי טלפונים ולכן התייאשתי (בשלב זה :lol: ) מלכתוב פונקציה שתטפל בזה...פורסם במקור בפורום CODE613 ב31/08/2015 22:46 (+03:00)