בשוק ישנם כמה אובייקטים להתחברות באמצעות קוד לשרת POP3 וקבלת דואר אלקטרוני.
דבר זה יכול להועיל במגוון דרכים, מיצירת WEBMAIL שמאפשר למשתמשים למשוך את הדוא"ל האישי שלהם מכל שרת POP3 (אינטרנט זהב,בזק בינ"ל, GMAILוכו') ועד להפעלת סקריפטים שונים המתבססים על מידע שהגיע במייל.
בדוגמא זו נשתמש בJMAIL:
לצורך הקלת הגישה למשתמש לחשבון הדוא"ל שלו נכין דאטה בייס עם העמודות הבאות:
- pop3 – שדה טקסט שיכיל את כתובת הPOP3 של השרת
- server_name – שיכיל את שם ידידותי לשרת
- port – שיכיל את הפורט גישה לדואר הנכנס, ברובם זה יהיה 110, לGMAIL יש פורט שונה
צד לקוח: נציג ללקוח טופס שיורכב משני שדות טקסט, אחד לשם משתמש ואחד לסיסמא ותיבת בחירה שתכיל את כל הרשומות שנמלא מבעוד מועד לדאטה בייס
המשתמש ימלא את השדות ויבחר בשרת החביב עליו
צד שרת: נקבל את המשתנים מהטופס לתוך משתנים ונבצע שליפה של הפורט והשרת POP3 מהדאטה בייס בהתאם לבחירת הלקוח.
|
<% sql="select * from servers where serverID=" & request.form("server") oRs.open sql,Conn,3,1 session("server")=oRs("server") session("user")=request.form("user") session("pass")=request.form("pass") session("port")=oRs("port") oRs.close
user=session("user") pass=session("pass") server1=session("server") port=session("port") %>
|
|
|
עכשיו נוכל לגשת לאובייקט ולבצע שליפה של ההדוא"ל:
קודם נמנע שגיאה אפשרית של TIMEOUT:
|
server.ScriptTimeout=99999999
|
|
|
אח"כ נוודא שיש לנו לפחות נתון אחד שיעיד על כך שאנחנו יכולים לגשת לשרת:
|
if port<>"" then Set pop3 = Server.CreateObject( "JMail.POP3" )
|
|
|
ההתחברות לשרת תעשה כאשר שם המשתמש והסיסמה תמיד יהיו באותיות קטנות (אין דבר כזה מייל באותיות גדולות):
|
pop3.Connect lcase(user), lcase(pass), server1,port
|
|
|
נציין כמה הודעות ממתינות למשתמש בשרת:
|
Response.Write( "You have " & pop3.count & " emails in your mailbox!<br>" & session("server"))
|
|
|
אם יש יותר מ0 הודעות נתחיל את הלופ:
|
<%if pop3.count > 0 then%> <table> <%for i=1 to pop3.count 't%> <tr> <td><%=pop3.Messages.item(i).subject%></td> <td><%=pop3.Messages.item(i).Date%></td>
|
|
|
ניצור לינק מיוחד שיאפשר למשתמש לפתוח את ההודעה ספציפית
|
<td><a href="webmail.asp?id=<%=pop3.GetMessageUID(i)%>">open</a></td> </tr>
|
|
|
במידה והמשתמש ביקש לפתוח את ההודעה הספציפית נשתמש בתנאי כדי להצוציא את ההודעה החוצה לקריאה:
|
<% if request.querystring("id")<>"" then if pop3.GetMessageUID(i)=request.querystring("id") then set msg=pop3.Messages.item(i) exit for end if end if next%> </table> <%end if%> |
|
|
נוכל גם לקבל חיווי על ההודעה האחרונה שהגיעה ושלא נקראה:
|
<% lastMessage = pop3.GetLastUnreadMessage response.write "<br>Lust messege<br>" & pop3.Messages.item(lastMessage).subject %>
|
|
|
הצגת הודעה ספציפית (במידה והמשתמש לחץ על הלינק למעלה)
|
if request.querystring("id")<>"" then
|
|
|
נאתחל משתנים:
|
ReTo = "" ReCC = ""
Set Recipients = msg.Recipients separator = ", "
|
|
|
נבדוק את נמעני ההודעה:
|
For i = 0 To Recipients.Count – 1 If i = Recipients.Count – 1 Then separator = "" End If
Set re = Recipients.item(i) If re.ReType = 0 Then ReTo = ReTo & re.Name & " (" & re.EMail & ")" & separator else ReCC = ReTo & re.Name & " (" & re.EMail & ")" & separator End If Next
|
|
|
ניצור פונקציה שמטפלת בקבצים המצורפים:
|
Function getAttachments() Set Attachments = msg.Attachments separator = ", "
For i = 0 To Attachments.Count – 1 If i = Attachments.Count – 1 Then separator = "" End If
Set at = Attachments(i) |
|
|
נבדוק במאצעות FSO אם הקובץ לא קיים על השרת, אם הוא קיים נמחוק אותו ונאפשר שמירה של הקובץ המצורף במקומו
|
dim filesys, filetxt, getname, path ,demofile Set filesys = CreateObject("Scripting.FileSystemObject") file= at.Name path = filesys.GetAbsolutePathName(server.mappath("/jmail/att") & "/" & file ) response.write path If filesys.FileExists(path) Then set demofile = filesys.GetFile(path) demofile.Delete end if set filesys=nothing |
|
|
נשמור את הקובץ מהמייל לשרת ונציג קישור אליו
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
|
response.write "<br>" & path at.SaveToFile( path ) getAttachments = getAttachments & "<a href=""att/" & file &""">" & file & "(" & at.Size & " bytes)</a>" & separator Dim FSO Set fso = Server.CreateObject("Scripting.FileSystemObject") Set demofile = fso.GetFile(path) Next End Function
'start working on the file %> <br /> <b><%= msg.Subject %></b><br /> From: <%= msg.FromName %><br /> To: <%= ReTO %><br /> CC: <%= ReCC %><br /> <hr /> <%= msg.Body %> <% getAttachments %>
<%end if%>
<% end if pop3.Disconnect end if %> |
|
|
בתוך החלק האחרון יש גם עבודה מסוימת עם FSO שבודקת עם קובץ בשם זהה כבר קיים בשרת כדי למנוע שגיאה שהJMAIL זורק במידה ומתבצעת שמירה של קובץ מצורף בעל שם זהה לזה הקיים בשרת. אפשר להתחכם פה יותר
אז מה היה לנו כאן?
התחברות לPOP3 עם JMAIL, בצורה הכי בסיסית שיש, אפשר להתחכם פה יותר ובמיוחד להשקיע בצד לקוח.
תיעוד ניתן למצוא כאןדוגמא חיה ניתן למצוא כאן בהצלחה
תגובות בפייסבוק