عادةً، يتم استخدام CGI لـ mailto.exe لتنفيذ WEBMAIL، وكتابة عبارة "< form action = "mailto:email title"" = post >" في ملف HTML أو استدعاء وظيفة WINDOWS API. يتطلب استخدام WINDOWS API وكتابة عبارة "<form action="mailto:email Address"=post >" في ملف HTML أن يقوم متصفح المستخدم بتحميل برامج مثل EXCHANGE أو OutlookEXPRESS أو OUTLOOK، وهناك أيضًا بعض التصفح الخادم لا يدعم بيان MAILTO. إن استخدام CGI لتنفيذ WEBMAIL ليس له أي متطلبات على متصفح المستخدم، ولكنه غير فعال. يتم استبدال تقنية CGI تدريجيًا بتقنية ISAPI/NSAPI. ستناقش هذه المقالة تنفيذ WEBMAIL باستخدام تقنية ISAPI.
من السهل جدًا تطوير برامج خادم الويب باستخدام دلفي 4. توفر دلفي 4 عددًا كبيرًا من المكونات والكائنات لدعم تطوير برامج خادم الويب. ما يلي هو مثال لكيفية استخدام DELPHI لتطوير برنامج ISAPI WEBMAIL الذي يستجيب لإدخالات المستخدم. يمكن فقط للمستخدمين المسجلين على خادم الإرسال إرسال رسائل البريد الإلكتروني من خلال المتصفح. ومن أجل التبسيط، لا يوفر البرنامج السرية للبيانات المرسلة.
أولاً، قم بتثبيت محرك قاعدة البيانات dbe على خادم الويب، وقم بتعيين الاسم المستعار لقاعدة البيانات: yh، مع الإشارة إلى ملف قاعدة البيانات user.db الذي يحتوي على اسم المستخدم وكلمة مرور المستخدم. ثم قم بإنشاء ملفين HTML، بالاسم: dl.html، qd.html على التوالي، ووضعهما في الدليل الافتراضي لخادم الويب (على سبيل المثال: C: INETPUBWWWROOT).
محتوى dl.html هو كما يلي:
<أتش تي أم أل>
< head >< title > نظام إرسال البريد الإلكتروني </ /title >< /head >
<الجسم>
<h1>نظام إرسال البريد الإلكتروني</h1>
<p> الرجاء إدخال اسم المستخدم وكلمة المرور. </ص>
< طريقة النموذج = "post" action = "/scripts/xsmd" >
< p > اسم المستخدم: < نوع الإدخال = "نص" الطول = 10
الاسم = "اسم المستخدم" >
كلمة المرور: < نوع الإدخال = "passWord"
الطول = 10 اسم = "كلمة المرور" >< /p >
< p >< نوع الإدخال = "إرسال" القيمة = "موافق" >
< نوع الإدخال = "إعادة تعيين" القيمة = "مسح" >< /p >
< / النموذج >
</الجسم>
</أتش تي أم أل>
محتويات الملف qd.html هي كما يلي:
< html >< head >< title > املأ النموذج </ /title >< /head >
<الجسم>
< طريقة النموذج = "نشر" الإجراء = "التعليقات" >
< p >الرجاء إدخال عنوان البريد الإلكتروني المتلقي:toaddress:
< نوع الإدخال = "نص" الطول = 20
الاسم=”العنوان”>< /p>
<p>يرجى ملء الموضوع. <نوع الإدخال = "نص"
الطول = 20 اسم = "الموضوع" >< /p >
<p>المحتوى:</p>
< p >< نوع الإدخال = "منطقة النص" الطول = 40
العرض=40 الاسم=”الجسم”>< /p>
< p >< نوع الإدخال = "إرسال" القيمة = "موافق" >
< نوع الإدخال = "إعادة تعيين" القيمة = "مسح" >< /p >
< / النموذج >
</الجسم>
</أتش تي أم أل>
أنشئ تطبيق WEB SERVER جديد يستند إلى ISAPI في DELPHI وأضف nmsmtp1 وquery1 وpageproducer1 يدويًا.
من بينها: خاصية pageproducer1: htmlfile: c:inetpubwww.rootqd.html. الخاصية: مضيف nmsmtp1 (عنوان خادم البريد المرسل) هو smtp.netease.com هنا. المنفذ: 25. المتغيرات العامة هي: sername:string;flag:boolean;
قم بإضافة عنصر عمل بالمسار /feedback، ويكون الكود كما يلي:
الإجراء TWebModule1.WebModule1WebActionItem1
الإجراء (المرسل: TObject؛
الطلب: استجابة TWebRequest:
TWebResponse; var Handled: Boolean);
عدد فار: عدد صحيح؛
S:سلسلة؛
يبدأ
الاستعلام 1. إغلاق؛
Query1.sql.clear;
S:='اختر العد (اسم المستخدم) من
user.db حيث اسم المستخدم =”';
S:=s+request.contentfields.values['username']+'"';
S:=s+' وكلمة المرور=”';
S:=s+request.contentfields.values['psword']+'"';
Query1.sql.add(S);
Query1.open;
إذا query1.count=0
ثم Response.content:='< html >< head >< title >
</title >< body >اسم المستخدم وكلمة المرور غير صحيحين، يرجى إعادة إدخالهما.
</body> >< /html >'
آخر
اسم المستخدم:=request.contentfields.values['username'];
Response.content:=pageproducer1.content;
نهاية؛
أضف عنصر عمل آخر بالمسار /sendmail.
رمز البرنامج الخاص به هو كما يلي:
الإجراء TWebModule1.WebModule1Web
ActionItem2Action(Sender: TObject;
الطلب: استجابة TWebRequest:
TWebResponse; var Handled: Boolean);
فار الجسم: سلسلة؛
يبدأ
العلم:=صحيح؛
body:=request.contentfields.values['body'];
Pageproducer1.htmldoc.clear;
Pageproducer1.htmldoc.add('< html >< body >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=اسم المستخدم+
'@netease.com';
Nmsmtp1.postmessage.from:=username;
Nmsmtp1.postmessage.body.add(body);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.subject:=
request.contentfields.values['subject'];
Nmsmtp1.connect;
إذا كانت العلامة = true، فابدأ Nmsmtp1.sendmail؛
nmsmtp1.disconntent;end
pageproducer1.htmldoc.add
('< /body >< /html >');
Response.content:=pageproducer1.content;
نهاية؛
الأحداث التي تزيد من nmsmtp1 هي كما يلي:
الإجراء TWebModule1.NMSMTP1Connect(Sender: TObject);
يبدأ
pageproducer1.htmldoc.add
('< p >متصل بالفعل بخادم البريد الصادر</p>');
نهاية؛
الإجراء TWebModule1.NMSMTP1Connection
فشل (المرسل: TObject)؛
يبدأ
العلم:=خطأ؛
pageproducer1.htmldoc.add
('< p >فشل الاتصال< /P >');
نهاية؛
الإجراء TWebModule1.NMSMTP1ConnectionRequired
(تم التعامل مع فار: منطقي)؛
يبدأ
pageproducer1.htmldoc.add('< p >يتطلب الاتصال</p>');
نهاية؛
الإجراء TWebModule1.NMSMTP1Failure(Sender: TObject);
يبدأ
pageproducer1.htmldoc.add('< p >فشل في إرسال البريد الإلكتروني</p>');
العلم:=خطأ؛
نهاية؛
الإجراء TWebModule1.NMSMTP1Header
غير مكتمل (تم التعامل مع فار: منطقي؛
hiType: عدد صحيح)؛
يبدأ
pageproducer1.htmldoc.add('< p >الرأس غير مكتمل</ /p >');
العلم:=خطأ؛
نهاية؛
الإجراء TWebModule1.NMSMTP1InvalidHost
(تم التعامل مع فار: منطقي)؛
يبدأ
pageproducer1.htmldoc.add('<p >
عنوان خادم البريد الإلكتروني المرسل غير صالح</p>');
العلم:=خطأ؛
نهاية؛
الإجراء TWebModule1.NMSMTP1RecipientNot
تم العثور عليه (المستلم: سلسلة)؛
يبدأ
pageproducer1.htmldoc.add
('< p >عنوان البريد الإلكتروني المستلم غير صحيح</p>');
العلم:=خطأ؛
نهاية؛
الإجراء TWebModule1.NMSMTP1Success(
المرسل: TObject)؛
يبدأ
pageproducer1.htmldoc.add('<p >
تم إرسال البريد الإلكتروني بنجاح</p >');
نهاية؛
احفظ المشروع باسم sendmail.dpr، وقم بتجميعه ووضعه في مسار الملف القابل للتنفيذ لخادم الويب (مثل: c:intpubscripts)، ويمكنك الاستجابة لإدخال المستخدم لملف HTML dl.htm، وإذا كان المستخدم اسم المستخدم وكلمة المرور صحيحان، يمكنك الدخول إلى الصفحة الخاصة بإرسال رسائل البريد الإلكتروني. يمكن للمستخدم إرسال رسائل البريد الإلكتروني بعد ملء عنوان البريد الإلكتروني والموضوع والمحتوى. اجتاز هذا البرنامج التصحيح على NT SERVER.