שליחת מייל באמצעות CDOSYS

‏ • 4 בספטמבר, 2004

מהו CDOSYS

CDO הוא ההמשך של CDONTS, CDONTS שקיים רק בNT4 עד NT5, בXP NT5.1
כאן יש שיפור בשם CDOSYS שהסינטקס שלו שונה. במאמר זה אלמד על CDO (Collaboration Data Object).


התחלת בנייה


קודם כל מגדירים אובייקט חדש:











1  








<%Set M = Server.CreateObject("CDO.Message")%>


זה אומר לשרת (IIS5.1) ללכת לASP.dll, ASP.dll מפנה אותו לCDOSYS.dll שמכיל את הספרייה לשליחת אימייל של CDO ומכניס את כל הפונקציות לM
עכשיו נגדיר את המאפיינים הרגילים של שליחת דואר:











1
2
3
4
5
6  








<%
M.From = "fromme@hotmail.co.il" 'ממי זה
M.To = "Recpiment@host.com" 'למי זה
M.CC = "CC@domain.com" 'העתק
M.BCC = "Bcc@domain.com" 'העתק חבוי (האחרים לא יודעים שנשלח אליו
%>


השדות CC וBCC הם לא חובה.
From יכול להיות כל כתובת דואר אשר הדומיין שלה קיים (למשל CDO@walla.co.il)
To חייב להיות כתובת דואר אמיתי לגמרי וכנ"ל CC וBCC.
בשביל לשלוח להרבה אנשים צריך להפריד את הכתובת עם נקודה פסיק ; למשל alon@walla.co.il;alon@hotmail.co.il


תוכן ההודעה


הנושא נרשם עם הפונקצייה Subject










1  








<%M.Subject = "Subject of CDO Message"%>


תוכן ההודעה נרשם באמצעות השיטות TextBody ו- HTMLBody, הנה דוגמא:











1  








<%M.TextBody = "This is the CDO Message"%>

שיטה זו תשלח את ההודעה כtext/plain;










1  








<%M.HTMLBody = "<html><body>this is a HTML Message</body></html>"%>


שיטה זו תשלח את ההודעה כtext/html;
חובה לשים בHTML תגיות Meta לCharset!!!!!
בשביל לשלב אנטרים בהודעות צריך לרשום אותם בתוך ההודעה
אם ההודעה מסוג text/plain והשפה של הASP היא VBScript אפשר לשים Chr(13) או VBNewLine מחוץ להודעה בשירשור ("a" & chr(13) & "a")
או VBCrLf, אם ההודעה מסוג text/plain והשפה של הASP היא Javascript צריך לעשות n בתוך ההודעה
אם ההודעה מסוג text/html צריך לעשות בתוך ההודעה <BR>


צירוף קבצים וקידוד עברי


בשביל לצרף קבצים מפעילים את הפונקצייה AddAttachment











1  








<%M.AddAttachment "c:File.doc"%>


קידוד: חייבים לקודד את הטקסט כי הברירת מחדל כנראה Western European
הקוד הבא יקודד את ההודעה לwindows-1255 (עברית לוגית)











1
2
3
4
5  








<%
M.BodyPart.Charset = "windows-1255"
M.HTMLBodyPart.charset = "Windows-1255"
%>
 


הגדרות ושליחה


במחשבים מסויימים ההגדרות לא ייתנו לשלוח CDO בגלל העדפות אבטחה
צריך ללכת לInternet Information Services Management (בלוח בקרה-ניהול)
לבחור מאפיינים מהתפריט הימני על Default Web Site, לעבור לתווית Home-Directory
וב Application Protection לבחור Low (IIS Process)
מי שמפחד לגעת בהגדרות האלה תמיד יכול להתחבר לשרת SMTP אחר לללא שינוי ההגדרות.
ההגדרות:











1
2
3
4  








<%
M.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "127.0.0.1"
M.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
%>


קוד זה יעשה את ההגדרות לשליחה דרך המחשב (במידה ושרת SMTP פועל)











1
2
3
4  








<%
M.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "out.inter.net.il"
M.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
%>


קוד זה ישלח את ההודעה דרך השרתי SMTP של אינטרנט זהב (שהם סגרו כרגע בגלל ספאם)
אחרי שרשמתם את ההגדרות שלכם, תעדכנו את CDO לגביהם עם הקוד:











1  








<%M.Configuration.Fields.Update%>


זהו, כל מה שנשאר זה לשלוח…











1  








<%M.Send%>


הנה קוד המאפשר למשתמש לבחור למי לשלוח וכו':











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
29
30
31
32
33
34
35
36  








<%if request.form.count <= 0 then%>
     <form method=post><br>
     למי <input name=to><br>
     ממי <input name=from><br>
     העתק <input name=cc><br>
     העתק חסוי <input name=bcc><br>
     נושא <input name=subject><br>
     HTML <input type=radio value=HTML name=sendvia><br> Text <input type=radio value=Text name=sendvia checked="checked"><br>
     <textarea cols=30 rows=10 name=M></textarea><br>
     שרת <input name=server value=127.0.0.1><br>
     יציאה <input name=port value=25><br>
     קידוד <input name=charset value=windows1255><br>
     <input type=submit value="שלח"><br>
<%else
     if request.form("to") = "" or request.form("from") = "" or request.form("server") = "" or request.form("port") = "" or request.form("charset") = "" then
          response.redirect("mail.asp")
     end if

     set M = server.createobjecT("cdo.message")
     m.from = request.form("from")
     m.to = request.form("to")
     if request.form("cc") <> "" then m.cc = request.form("cc")
     if request.form("bcc") <> "" then m.bcc = request.form("bcc")
     if request.form("subject") <> "" then m.subject = request.form("subject")
     if request.form("sendvia") = "Text" then m.textbody = request.form("m")
     if request.form("sendvia") = "HTML" then m.HTMLbody = request.form("m")
     m.BodyPart.Charset = request.form("charset")
     M.HTMLBodyPart.charset = request.form("charset")
     M.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = request.form("server")
     M.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = request.form("port")
     M.Configuration.Fields.Update
     M.send
     %>השליחה הושלמה<%
end if
%>
 


זהו להיום 😀
אתם יכולים להשתמש חופשי בקוד 😀
אלון (Alon12)

תגיות: , , ,

תגובות בפייסבוק