קבלת אימייל בקוד
-
מה תעשה עם הזמן שיישאר לך ביד? תוכל לכתוב אפליקצייה שתימכר ב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)