SMTP Server (Library) لتلقي رسائل البريد الإلكتروني ، المكتوبة في PHP Pure. توفر هذه المكتبة واجهة لبروتوكول جانب خادم SMTP مع PHP. إنه ينشئ كائن فئة ZendMailMessage لكل بريد إلكتروني وارد ويسلم هذا الكائن إلى وظيفة PHP مخصصة لمزيد من المعالجة. المشروع في حالة تجريبية ، لذلك لا ينصح باستخدام الإنتاج.
d في SMTPd يقف على الخفي. يمكن أن يعمل هذا البرنامج النصي في الخلفية مثل أي عملية خفية أخرى. ليس المقصود تشغيله باعتباره webapplication.
صدق أو لا تصدق ، لا يزال البريد الإلكتروني هو ميزة القاتل على الإنترنت . هناك الكثير من المشاريع مثل phpmailer: لإرسال رسائل البريد الإلكتروني برمجياً (مع PHP). ولكن لا يوجد الكثير لتلقي رسائل البريد الإلكتروني من SMTP.
مع هذه الواجهة ، يمكنك القيام بشيء مثل هذا لمستخدمي التطبيق:
+------+ +------------------------+ +-------+ +--------------+
| User +---> | MUA (like Thunderbird) +---> | SMTPd +---> | Your PHP App |
+------+ +------------------------+ +-------+ +--------------+
يكون هذا مفيدًا عندما يكون لديك تطبيق مراسلة مكتوب في PHP ولكن لا توجد واجهة مستخدم رسومية لذلك. لذلك يمكن أن تكون واجهة المستخدم الرسومية أي عميل بريد إلكتروني. Thunderbird على سبيل المثال.
يحدد المشروع الخطوط العريضة كما هو موضح في منشور مدونتي حول تعاون البرامج المفتوحة المصدر.
ZendMail بحل أفضل. الطريقة المفضلة للتثبيت هي عبر حزمة وملحن. قم بتشغيل الأمر التالي لتثبيت الحزمة وإضافته كشرط لـ Composer.json:
composer require thefox/smtpd في الوقت الحالي ، يقبل الخادم جميع رسائل البريد الإلكتروني الواردة. يمكنك أن تقرر ما يحدث مع رسائل البريد الإلكتروني الواردة عن طريق إضافة Event S إلى كائن Server ( $server->eventAdd($event) ). يمكن للخادم التعامل مع بعض الأحداث. سيتم تنفيذ كل حدث على مشغل معين. حتى لو لم تضيف أي أحداث إلى الخادم ، فإنه يقبل جميع رسائل البريد الإلكتروني الواردة.
في الوقت الحالي هناك اثنين من مشغلات الحدث.
TRIGGER_NEW_MAIL : سيتم تشغيله عندما ينتهي العميل من إرسال بريد إلكتروني جديد.TRIGGER_AUTH_ATTEMPT : سيتم تشغيله عندما يريد العميل المصادقة. أعد منطقية من وظيفة رد الاتصال سواء كانت المصادقة ناجحة أم لا. انظر أيضًا ملف example.php للحصول على أمثلة كاملة.
$ server = new Server (...);
$ event = new Event (Event:: TRIGGER_NEW_MAIL , null , function ( Event $ event , $ from , $ rcpts , $ mail ){
// Do stuff: handle email, ...
});
$ server -> addEvent ( $ event );
$ server -> loop (); $ server = new Server (...);
$ event = new Event (Event:: TRIGGER_AUTH_ATTEMPT , null , function ( Event $ event , $ type , $ credentials ): bool {
// Do stuff: Check credentials against database, ...
return true ;
});
$ server -> addEvent ( $ event );
$ server -> loop (); $ server = new Server (...);
// Set up server here.
// Add Events, etc, ...
while ( myApplicationRuns ()){
// Do stuff your application needs.
// ...
// Run main SMTPd loop, once.
$ server -> run ();
usleep ( 10000 ); // Never run a main thread loop without sleep. Never!
}