דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. ולידציה של מיילים

ולידציה של מיילים

מתוזמן נעוץ נעול הועבר ארכיון code613m
23 פוסטים 4 כותבים 1.4k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    חיפשתי בגוגל בנושא הנ"ל, ולא מצאתי לי מנוח..
    ראיתי כאן כל מיני שיטות איך לעשות ולידציה לכתובת מייל.
    היו שהמליצו על אימות עם ביטויי regex (וכל אחד יש לו ביטוי שאינו דומה לחברו...)
    והיו שהמליצו על שימוש במחלקה MailAddress של system.net.mail
    השאלה האם יש איזו דרך מקובלת או מומלצת?
    או שיש ביטוי מסויים פשוט שעונה על רוב האפשרויות, לדוג' לכאו' הביטוי הזה מספיק, לא?

    ^[A - Z0 - 9._ % +-] +@[A-Z0-9.-]+\.[A-Z]{2,6}$
    

    תודה רבה ושבת שלום!!

    פורסם במקור בפורום CODE613 ב28/08/2015 15:50 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      כתב ב נערך לאחרונה על ידי
      #2

      לדעתי הדרך שהבאת בקישור היא הדרך הכי טובה

      bool IsValidEmail(string email)
      {
          try {
              var addr = new System.Net.Mail.MailAddress(email);
              return addr.Address == email;
          }
          catch {
              return false;
          }
      }
      

      וזאת משום שאם תסתכל בקוד מקור של המחלקות MailAddress ו MailAddressParser תראה שהבדיקה של המייל נעשית בצורה מאוד יסודית.

      פורסם במקור בפורום CODE613 ב28/08/2015 15:56 (+03:00)

      תגובה 1 תגובה אחרונה
      1
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        תודה רבה!!

        איך אני יכול לראות את קוד המקור שלהם? הרי בדרך כלל בספריה של msdn הם מראים רק את דרך השימוש ולא את הקוד עצמו..

        פורסם במקור בפורום CODE613 ב28/08/2015 16:00 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • רחמיםר מנותק
          רחמיםר מנותק
          רחמים מורחק
          כתב ב נערך לאחרונה על ידי
          #4

          באתר הזה תגלה את כל הקוד מקור
          אתה יכול גם להוריד את כל הפרימוורק למחשב שלך 🙂

          פורסם במקור בפורום CODE613 ב28/08/2015 16:04 (+03:00)

          תגובה 1 תגובה אחרונה
          2
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

            @רחמים

            באתר הזה תגלה את כל הקוד מקור
            אתה יכול גם להוריד את כל הפרימוורק למחשב שלך 🙂

            סליחה על הבורות...
            אבל מה הכוונה להוריד את הפרימוורק? הרי הוא מותקן לי במחשב בלעדיו התוכנות לא היו רצות, לא?
            או שאתה מתכוון שאני יכול להוריד את כולו בתור קבצי טקסט?

            פורסם במקור בפורום CODE613 ב28/08/2015 16:11 (+03:00)

            תגובה 1 תגובה אחרונה
            0
            • רחמיםר מנותק
              רחמיםר מנותק
              רחמים מורחק
              כתב ב נערך לאחרונה על ידי
              #6

              כן אתה יכול להוריד את כל הקוד מקור של כולו, זה מאוד נפלא לעבור על זה.

              פורסם במקור בפורום CODE613 ב28/08/2015 16:45 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • A מנותק
                A מנותק
                avr416
                כתב ב נערך לאחרונה על ידי
                #7

                @רחמים

                לדעתי הדרך שהבאת בקישור היא הדרך הכי טובה

                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)

                תגובה 1 תגובה אחרונה
                1
                • רחמיםר מנותק
                  רחמיםר מנותק
                  רחמים מורחק
                  כתב ב נערך לאחרונה על ידי
                  #8

                  דווקא אני קיבלתי את השגיאה הבאה

                  An invalid character was found in the mail header: 'ם'.
                  

                  השתמשתי כך:

                  static void Main(string[] args)
                          {
                              var b = IsValidEmail("אברהם@אברהם");
                          }
                  

                  פורסם במקור בפורום CODE613 ב30/08/2015 17:25 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • A מנותק
                    A מנותק
                    avr416
                    כתב ב נערך לאחרונה על ידי
                    #9

                    כתבתי כך:

                    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)

                    תגובה 1 תגובה אחרונה
                    0
                    • רחמיםר מנותק
                      רחמיםר מנותק
                      רחמים מורחק
                      כתב ב נערך לאחרונה על ידי
                      #10

                      הנה

                      ValidationEmail.rar

                      פורסם במקור בפורום CODE613 ב30/08/2015 18:29 (+03:00)

                      תגובה 1 תגובה אחרונה
                      0
                      • A מנותק
                        A מנותק
                        avr416
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @רחמים

                        הנה

                        ממש מוזר :?: :?:
                        אני מריץ את הקובץ שלך אצלי במחשב (ויזואל סטודיו 2015)
                        והתוצאה שאני מקבל בקונסול היא: True
                        ללא שום שגיאה..
                        אולי יש הבדל בין הגרסאות של הפריימוורק שלנו כך שבחדשים יותר זה נהיה חוקי???
                        (או שאני מקשקש שטויות...)

                        פורסם במקור בפורום CODE613 ב30/08/2015 18:53 (+03:00)

                        תגובה 1 תגובה אחרונה
                        0
                        • רחמיםר מנותק
                          רחמיםר מנותק
                          רחמים מורחק
                          כתב ב נערך לאחרונה על ידי
                          #12

                          יכול להיות
                          לי מותקן דוטנט 4
                          אצלך מן הסתם 4.6

                          פורסם במקור בפורום CODE613 ב30/08/2015 19:22 (+03:00)

                          תגובה 1 תגובה אחרונה
                          0
                          • רחמיםר מנותק
                            רחמיםר מנותק
                            רחמים מורחק
                            כתב ב נערך לאחרונה על ידי
                            #13

                            עשיתי דיבוג ברפלקטור בדוטנט 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)

                            תגובה 1 תגובה אחרונה
                            1
                            • A מנותק
                              A מנותק
                              avr416
                              כתב ב נערך לאחרונה על ידי
                              #14

                              יש דרך לעדכן אותם בבאג הזה???

                              וחוצמיזה לא בדיוק הבנתי מה הולך בקוד הזה :shock: :shock:
                              מה בדיוק הוא מנסה לעשות..
                              אני כנראה ממש בור ועם הארץ.. אשמח אם יהיה לך כוח להסביר..
                              או שבשביל זה צריך לקרוא את הקוד של הפריימוורק??

                              פורסם במקור בפורום CODE613 ב30/08/2015 20:41 (+03:00)

                              תגובה 1 תגובה אחרונה
                              0
                              • dovidD מנותק
                                dovidD מנותק
                                dovid ניהול
                                כתב ב נערך לאחרונה על ידי
                                #15

                                רחמים, אני משנה את הTarget Type לדוט נט 4, ועדיין אין חריג, והתוצאה חיובית...

                                פורסם במקור בפורום CODE613 ב30/08/2015 21:24 (+03:00)

                                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                תגובה 1 תגובה אחרונה
                                0
                                • רחמיםר מנותק
                                  רחמיםר מנותק
                                  רחמים מורחק
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  נכון, כי בפועל ה DLL של 4.6 הוא זה שרץ
                                  אני עשיתי יותר מזה, קימפלתי את התוכנה במחשב הרגיל בדוטנט 4 ואז העתקתי אותו לוירטואלי לדוטנט 4.6 והוא החזיר אמת.

                                  פורסם במקור בפורום CODE613 ב30/08/2015 21:26 (+03:00)

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • dovidD מנותק
                                    dovidD מנותק
                                    dovid ניהול
                                    כתב ב נערך לאחרונה על ידי
                                    #17

                                    ב3.5 אכן יש חריג...

                                    פורסם במקור בפורום CODE613 ב30/08/2015 21:31 (+03:00)

                                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • dovidD מנותק
                                      dovidD מנותק
                                      dovid ניהול
                                      כתב ב נערך לאחרונה על ידי
                                      #18

                                      תשמעו, זה לא באג, זה פשוט יכול להיות תקני... לפי התקן SMTPUTF8 (שכרגע אף אחד לא חושב לממש אותו כנראה) אז אפשר... ראו כאן: https://en.wikipedia.org/wiki/International_email.

                                      פורסם במקור בפורום CODE613 ב30/08/2015 21:47 (+03:00)

                                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • רחמיםר מנותק
                                        רחמיםר מנותק
                                        רחמים מורחק
                                        כתב ב נערך לאחרונה על ידי
                                        #19

                                        לא הבנתי אותך, גם לפי התקן הזה יש לאחר השטרודל מילה ואז נקודה ועוד מילה

                                        פורסם במקור בפורום CODE613 ב30/08/2015 21:50 (+03:00)

                                        תגובה 1 תגובה אחרונה
                                        0
                                        • dovidD מנותק
                                          dovidD מנותק
                                          dovid ניהול
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          @רחמים

                                          לא הבנתי אותך, גם לפי התקן הזה יש לאחר השטרודל מילה ואז נקודה ועוד מילה

                                          לא, זה לא נכון בשום תקן. מעשית אתה צודק, אבל דוט נט לא יכול לעשות לך שגיאה כי "כמעט בטוח" שזה טעות... תיאורטית יכולה להיות לך כתובת מקומית ללא דומיין עילי (מעשי ברשתות פנימיות ועוד).

                                          פורסם במקור בפורום CODE613 ב31/08/2015 12:19 (+03:00)

                                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                          תגובה 1 תגובה אחרונה
                                          2

                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום