קבלת אימייל בקוד
-
שלום לכולם, יש מחלקות בדוט נט שמטפלות בשליחת מיילים, אולם לקבל מייל זה כבר סיפור יותר מורכב, עיין כאן
למעשה יצא לי לראות source code של אימייל, אותנטי לגמרי כפי שהוא מגיע מהשרת. זה עבודת פרך לפענח את זה כמו שאאוטלוק עושה וכולי. האם יש מישהו שיודע על דרך/מחלקה שעושה את כל העבודה ומסוגלת להציג את כל המידע כולל תמונות מוטבעות/קבצים מצורפים' לחלק אותם כראוי ולהציג הכל בדף HTML נחמד למראה וטוב למאכל כמו GMAIL בדפדפן.תודה.
פורסם במקור בפורום CODE613 ב22/02/2014 22:50 (+02:00)
-
יש את הפרוייקט הזה
וזה לא כזה סיפורלכתוב מחלקה שממירה את התוצאה לHTML, זה יכול לקחת בין 2-4 שעות לא יותר על כל הדיבוג המצטרך.
בסה''כ זה בנוי עם תגים עם מאפיינים ותוכן, התמונות מוטבעות עם base64 והכל שם בקידוד ANSI
בהצלחה.פורסם במקור בפורום CODE613 ב22/02/2014 23:03 (+02:00)
-
בעבר נגעתי בזה, יש לך את זה, ואת זה, ואני זוכר שהייתה לי חבילה נוספת באיזשהוא מקום, אבל אני לא מוצא אותו עכשיו משום מה..
אם אתה רוצה משהו שתוכל להגדיר לו שרת, ואז הוא ייתן לך ממשק ווב לאותו שרת, יש הרבה כאלה, (גם חופשיים) לדוגמא יש את זה (נראה לי שהוא חופשי), ועוד אחרים.פורסם במקור בפורום CODE613 ב22/02/2014 23:04 (+02:00)
-
מצ"ב אחת הדוגמאות שבדקתי בעבר.read mail c_.rar
פורסם במקור בפורום CODE613 ב22/02/2014 23:12 (+02:00)
-
זה הכי קצר שעולה בחכתי כרגע:
וחובה להכיר את זה: בעל פה נבחנים על זה לישיבות גדולות :lol: :lol: :lol: :lol:
ואז יש את ההדרכה הרשמית של גוגל:
המחלה שלי ללכת על המתקדם ביותר אז אני מתעקש בינתיים על IMAP...פורסם במקור בפורום CODE613 ב23/02/2014 00:07 (+02:00)
-
בלי ספק שהכי טוב זה ללכת על המתקדם ביותר, אבל הייתי מציע ללמוד ולדעת את המתקדם ביותר, ובפועל להשתמש כלים שכבר כתבו בשבילך והוכחו כיעילים. (מה תעשה עם הזמן שיישאר לך ביד? תוכל לכתוב אפליקצייה שתימכר ב16 מילארד $ :lol: )
פורסם במקור בפורום CODE613 ב23/02/2014 00:12 (+02:00)
-
מה תעשה עם הזמן שיישאר לך ביד? תוכל לכתוב אפליקצייה שתימכר ב16 מילארד $
אתה עונה על שאלה על ידי כך שאתה מעביר אותה אל התשובה שלך. מה אני יעשה עם 16 מיליארד שיישארו לי ביד??? התשובה היחידה שאני יכול לשמוע היא....... תוכל להשקיע את שארית ימיך בלימודים!!! אז פורד והדייג עדיין רלוונטי כאן.... :lol: :lol: :lol: :lol: :lol:
פורסם במקור בפורום CODE613 ב23/02/2014 01:21 (+02:00)
-
יש תגית שאומרת לו שהשיחה נקראה לפי הID שלה.
אני חושב שזה uidl.
אבל ארכיטקט, אתה משתמש בספריה כלשהיא, או מימשת לבד את הפרוטוקול? כי ספריות אמורות להכיל מתודה לזה.
אגב, אם אתה רק קורא, וזה GMAIL, בדוק את זה http://stackoverflow.com/q/989986/1271037. סמן בצד שלך מה כבר קראת וזהו.
פורסם במקור בפורום CODE613 ב24/02/2015 15:25 (+02:00)
-
הפרוטוקול POP3 לא מאפשר לשמור מידע כל שהוא בצד שרת, וממילא הדרך היחידה שלו לדלג על מיילים שהוא קרא זה ע"י שמירת הID שלהם בצד הלקוח ודילוג עליהם בכל קריאה.
מחיפוש באינטרנט:
http://stackoverflow.com/a/352347/1271037It's the responsibility of the POP3 client to check for this.
ובעברית: עניין זה הוא באחריותו של הלקוח - התוכנה שמושכת את המיילים.
פורסם במקור בפורום CODE613 ב24/02/2015 16:31 (+02:00)
-
@דוד ל.ט.
הפרוטוקול POP3 לא מאפשר לשמור מידע כל שהוא בצד שרת, וממילא הדרך היחידה שלו לדלג על מיילים שהוא קרא זה ע"י שמירת הID שלהם בצד הלקוח ודילוג עליהם בכל קריאה.
מחיפוש באינטרנט:
http://stackoverflow.com/a/352347/1271037It's the responsibility of the POP3 client to check for this.
ובעברית: עניין זה הוא באחריותו של הלקוח - התוכנה שמושכת את המיילים.
זה לא נכון כי הוא מאפשר לסמן את המייל כנקרא
מה שאפשר לעשות בג'ימייל זה להגדיר בטאב של ה POP3 שאחרי שהמייל נקרא הוא עובר ל archive המסתורי של הגימייל או נמחק ואז לא תקבל אותו באיטרציה הבאה
אני עשיתי את זה עם ספריה של LUMISOFT
אבל זה לא עובד לבד צריך לסמן את המייל למחיקה וגם לקרוא ל DISCONNECT בסוף אחרת זה לא יקרהDim client As New POP3_Client client.Timeout = 360000 Try client.Connect(My.Settings.InServer, My.Settings.InPort, True) client.Authenticate(My.Settings.InUser, My.Settings.InPassword, True) Catch ex As Exception 'TODO LOG Exit Sub End Try Dim sErr As String = "" For Each m As POP3_ClientMessage In client.Messages Dim msg As Mail_Message = Mail_Message.ParseFromByte(m.MessageToByte) For Each at As LumiSoft.Net.Mime.MIME_Entity In msg.Attachments If at.ContentDisposition Is Nothing Then Continue For End If Dim FileName As String = at.ContentDisposition.Param_FileName Dim file As Byte() = GetBody(at) Next 'כאן מעדכנים את השרת אבל זה לא נשמר עד שלא קוראים לDISCONNECT m.MarkForDeletion() Next client.Disconnect()
פורסם במקור בפורום CODE613 ב24/02/2015 17:05 (+02:00)
-
מן הסתם זה ילך ל TRASH ולא ממש יימחק והרווחת שזה לא יופיע יותר
שין לב שהוא ביקש שיהיה כ"נקרא". לא אשפה. אולי זה עוזר לו אבל לא מה שהוא שאל.
וחוץ מזה מסוכן להציע את זה בעיניים עצומות זה הרי תלוי במדיניות שרת המייל.פורסם במקור בפורום CODE613 ב24/02/2015 20:04 (+02:00)
-
תשתמש ב
pop.GetMessageUid(i)
כדי לקבל את הID בלי להוריד את כל ההודעה, ותבדוק בDB אם הורדת כבר את ההודעה הזו. (כמו שsofts כבר כתב)
ואיך אאוטלוק מצליח להתמודד עם זה?
נראה לי שכשאאוטלוק משתמש בPOP3 הוא לא מסמן הודעות כהודעות שנקראו.
אבל בד"כ הוא משתמש בMAPI - ונראה לי שבMAPI זה כן אפשריפורסם במקור בפורום CODE613 ב24/02/2015 21:15 (+02:00)
-
@דוד ל.ט.
מן הסתם זה ילך ל TRASH ולא ממש יימחק והרווחת שזה לא יופיע יותר
שין לב שהוא ביקש שיהיה כ"נקרא". לא אשפה. אולי זה עוזר לו אבל לא מה שהוא שאל.
וחוץ מזה מסוכן להציע את זה בעיניים עצומות זה הרי תלוי במדיניות שרת המייל.צודק, צריך לבדוק כל שרת לגופו.
אם נתעמק במה שארכיטקט שליט"א כתב נראה לי שהבעיה שלו היא שהמיילים נקראים שוב ושוב ולא ממש משנה לו דווקא שיסומן כנקרא,
ועוד יש לומר שהרי POP3 לא יודע להפריד בין נקרא ללא נקרא ותמיד יביא הכל, ולכן מעיקרא לא טוב הפתרון של לסמן כנקרא.
אז יש את הדרך של לשמור את ה UniqueID, יש את הדרך של למחוק מהשרת (שעדיפה בעבודה עם ג'ימייל) וכמובן אפשר להשתמש ב IMAP ואיש הישר בעיניו יעשה.עוד נקודה חשובה, למי שמממש את הפתרון של לשמור UniqueID בצד CLIENT, צריך לשים לב שיכול להיות אותו UniqueID לשני הודעות עם הבדל בcasing, לכן אם שומרים ב SQL צריך להגדיר את השדה על COLLATION שהוא CS וגם בקוד לשים לב לזה
פורסם במקור בפורום CODE613 ב25/02/2015 11:15 (+02:00)