محلل بريد إلكتروني تم اختباره بالكامل لـ PHP 8.0+ (مجمع ملحق mailparse).
إنه محلل البريد الإلكتروني PHP الأكثر فعالية من حيث الأداء، وترميز الأحرف الأجنبية، والتعامل مع المرفقات، وسهولة الاستخدام. تنسيق رسائل الإنترنت RFC 822، 2822، 5322.
يمكن استخدام هذا الامتداد ل...
.eml
)نعم. تم إعادة إنتاج جميع المشكلات المعروفة وإصلاحها واختبارها.
نحن نستخدم GitHub Actions وCodecov وCodacy للمساعدة في ضمان جودة التعليمات البرمجية. يمكنك رؤية الإحصائيات في الوقت الفعلي أدناه:
أسهل طريقة هي عبر الملحن.
لتثبيت أحدث إصدار من PHP MIME Mail Parser، قم بتشغيل الأمر أدناه:
composer require php-mime-mail-parser/php-mime-mail-parser
الإصدارات التالية من PHP مدعومة:
الإصدارات السابقة:
التوافق مع لغة PHP | إصدار |
---|---|
همفم | محلل البريد php-mime 2.11.1 |
بي إتش بي 5.4 | محلل البريد php-mime 2.11.1 |
PHP 5.5 | محلل البريد php-mime 2.11.1 |
بي إتش بي 5.6 | محلل البريد php-mime 3.0.4 |
PHP 7.0 | محلل البريد php-mime 3.0.4 |
بي إتش بي 7.1 | محلل البريد php-mime 5.0.5 |
بي إتش بي 7.2 | محلل البريد php-mime 7.1.2 |
بي إتش بي 7.3 | محلل البريد php-mime 7.1.2 |
PHP 7.4 | محلل البريد php-mime 7.1.2 |
تأكد من تثبيت ملحق mailparse (http://php.net/manual/en/book.mailparse.php) بشكل صحيح. سطر الأوامر php -m | grep mailparse
يحتاج php -m | grep mailparse
إلى إرجاع "mailparse".
sudo apt install php-cli php-mailparse
brew install php
pecl install mailparse
sudo apt install php-cli php-pear php-dev php-mbstring
pecl install mailparse
يجب أن يكون AAAAMMDD php-config --extension-dir
git clone https://github.com/php/pecl-mail-mailparse.git
cd pecl-mail-mailparse
phpize
./configure
sed -i 's/#ifs!HAVE_MBSTRING/#ifndef MBFL_MBFILTER_H/' ./mailparse.c
make
sudo mv modules/mailparse.so /usr/lib/php/AAAAMMDD/
echo "extension=mailparse.so" | sudo tee /etc/php/8.4/mods-available/mailparse.ini
sudo phpenmod mailparse
تحتاج إلى تنزيل mailparse DLL من http://pecl.php.net/package/mailparse وإضافة السطر extension=php_mailparse.dll
إلى php.ini
وفقًا لذلك.
يمكنك تحميل بريد إلكتروني بأربع طرق مختلفة:
require_once __DIR__ . ' /vendor/autoload.php ' ;
$ path = ' path/to/email.eml ' ;
$ parser = new PhpMimeMailParser Parser ();
// 1. Either specify a file path (string)
$ parser -> setPath ( $ path );
// 2. or specify the raw mime mail text (string)
$ parser -> setText ( file_get_contents ( $ path ));
// 3. or specify a php file resource (stream)
$ parser -> setStream ( fopen ( $ path , " r " ));
// 4. or specify a stream to work with a mail server (stream)
$ parser -> setStream ( fopen ( " php://stdin " , " r " ));
الحصول على المرسل والمستقبل:
$ rawHeaderTo = $ parser -> getHeader ( ' to ' );
// return "test" <[email protected]>, "test2" <[email protected]>
$ arrayHeaderTo = $ parser -> getAddresses ( ' to ' );
// return [["display"=>"test", "address"=>"[email protected]", false]]
$ rawHeaderFrom = $ parser -> getHeader ( ' from ' );
// return "test" <[email protected]>
$ arrayHeaderFrom = $ parser -> getAddresses ( ' from ' );
// return [["display"=>"test", "address"=>"[email protected]", "is_group"=>false]]
الحصول على الموضوع:
$ subject = $ parser -> getHeader ( ' subject ' );
احصل على رؤوس أخرى:
$ stringHeaders = $ parser -> getHeadersRaw ();
// return all headers as a string, no charset conversion
$ arrayHeaders = $ parser -> getHeaders ();
// return all headers as an array, with charset conversion
$ text = $ parser -> getMessageBody ( ' text ' );
// return the text version
$ html = $ parser -> getMessageBody ( ' html ' );
// return the html version
$ htmlEmbedded = $ parser -> getMessageBody ( ' htmlEmbedded ' );
// return the html version with the embedded contents like images
حفظ كافة المرفقات في الدليل
$ parser -> saveAttachments ( ' /path/to/save/attachments/ ' );
// return all attachments saved in the directory (include inline attachments)
$ parser -> saveAttachments ( ' /path/to/save/attachments/ ' , false );
// return all attachments saved in the directory (exclude inline attachments)
// Save all attachments with the strategy ATTACHMENT_DUPLICATE_SUFFIX (default)
$ parser -> saveAttachments ( ' /path/to/save/attachments/ ' , false , Parser:: ATTACHMENT_DUPLICATE_SUFFIX );
// return all attachments saved in the directory: logo.jpg, logo_1.jpg, ..., logo_100.jpg, YY34UFHBJ.jpg
// Save all attachments with the strategy ATTACHMENT_RANDOM_FILENAME
$ parser -> saveAttachments ( ' /path/to/save/attachments/ ' , false , Parser:: ATTACHMENT_RANDOM_FILENAME );
// return all attachments saved in the directory: YY34UFHBJ.jpg and F98DBZ9FZF.jpg
// Save all attachments with the strategy ATTACHMENT_DUPLICATE_THROW
$ parser -> saveAttachments ( ' /path/to/save/attachments/ ' , false , Parser:: ATTACHMENT_DUPLICATE_THROW );
// return an exception when there is attachments duplicate.
الحصول على جميع المرفقات
$ attachments = $ parser -> getAttachments ();
// return an array of all attachments (include inline attachments)
$ attachments = $ parser -> getAttachments ( false );
// return an array of all attachments (exclude inline attachments)
حلقة من خلال كافة المرفقات
foreach ( $ attachments as $ attachment ) {
echo ' Filename : ' . $ attachment -> getFilename (). ' <br> ' ;
// return logo.jpg
echo ' Filesize : ' . filesize ( $ attach_dir . $ attachment -> getFilename ()). ' <br> ' ;
// return 1000
echo ' Filetype : ' . $ attachment -> getContentType (). ' <br> ' ;
// return image/jpeg
echo ' MIME part string : ' . $ attachment -> getMimePartStr (). ' <br> ' ;
// return the whole MIME part of the attachment
$ stream = $ attachment -> getStream ();
// get the stream of the attachment file
$ attachment -> save ( ' /path/to/save/myattachment/ ' , Parser:: ATTACHMENT_DUPLICATE_SUFFIX );
// return the path and the filename saved (same strategy available than saveAttachments)
}
لإعادة توجيه رسائل البريد الإلكتروني من Postfix إلى نص PHP أعلاه، أضف هذا السطر في نهاية /etc/postfix/master.cf
(لتحديد myhook لإرسال جميع رسائل البريد الإلكتروني إلى النص البرمجي test.php
):
myhook unix - n n - - pipe
flags=F user=www-data argv=php -c /etc/php5/apache2/php.ini -f /var/www/test.php ${sender} ${size} ${recipient}
تحرير هذا السطر (تسجيل myhook)
smtp inet n - - - - smtpd
-o content_filter=myhook:dummy
يجب أن يستخدم البرنامج النصي PHP الطريقة الرابعة (انظر أعلاه) للعمل مع هذا التكوين.
وأخيرًا، أسهل طريقة هي استخدام SaaS https://mailcare.io الخاص بي
لا تتردد في المساهمة!
git clone https://github.com/php-mime-mail-parser/php-mime-mail-parser
cd php-mime-mail-parser
composer install
./vendor/bin/phpunit
إذا أبلغت عن مشكلة، فيرجى تقديم البريد الإلكتروني الأولي الذي أدى إلى حدوثها. وهذا يساعدنا على إعادة إنتاج المشكلة وحلها بسرعة أكبر.
إن php-mime-mail-parser/php-mime-mail-parser هو برنامج مفتوح المصدر مرخص بموجب ترخيص MIT