forked / mailreader
一个经过全面测试的简单邮件读取解析器,适用于PHP 5.6及以上版本。
Requires
- php: >5.6
- forked/mail_mime-decode: ^1.5.6.1
Requires (Dev)
- phpunit/phpunit: >5.7
Suggests
- ext-iconv: For best support/performance
- ext-mbstring: For best support/performance
This package is auto-updated.
Last update: 2024-08-29 04:49:09 UTC
README
使用PHP接收邮件和附件
此包可以用于...
- 解析、解码和读取来自Postfix等邮件,其他仍在开发中。
- 用于读取消息(文件扩展名:eml)
- 创建WebMail
- 将邮件信息(如主题、正文、附件等)存储到数据库中
用法
完整文档正在制作中,请参阅 Phpunit tests 文件夹以获取更多示例用法。
MailReader.php 包含处理接收到的邮件和数据库的类。
MailParser.php 包含处理任何电子邮件格式的文件的类。
mailPipe.php 是使用 MailReader 类的示例脚本。
mailPipe.php 期望通过 STDIN 接收原始邮件。
您可以通过使用 cat
来手动运行脚本
cat tests/testfile | ./mailPipe.php
或在Windows上使用 type
type tests\testfile | php mailPipe.php
您可能需要将 mailPipe.php 复制到自己的脚本中,并根据您的需要调整参数。
此库还允许您轻松解析给定其内容(标题 + 正文)的电子邮件。
require 'vendor/autoload.php'; use Mail\MailParser; $emailPath = "/var/mail/spool/dan/new/12323344323234234234"; $emailParser = new MailParser(file_get_contents($emailPath)); // You can use some predefined methods to retrieve headers... $to = $emailParser->getTo(); $subject = $emailParser->getSubject(); $cc = $emailParser->getCc(); $from = $emailParser->getFrom(); $fromName = $emailParser->getFromName(); $fromEmail = $emailParser->getFromEmail(); $attachments = $emailParser->getAttachments(); $actualContent = $attachments[0]['content'] // ... or you can use the 'general purpose' method getHeader() $emailDeliveredToHeader = $emailParser->getHeader('Delivered-To'); $emailBody = $emailParser->getPlain();
安装
composer require forked/mailreader
将拉取 composer forked/mail_mime-decode 包作为依赖项。
设置
配置您的邮件服务器将邮件通过此脚本转发。有关说明,请参阅 http://stuporglue.org/add-an-email-address-that-forwards-to-a-script/。
将此脚本设置为 可执行,并编辑配置选项以适应您的需求。更改目录权限,以便执行脚本的用户(可能是邮件用户)将对文件上传目录具有写入权限。
默认情况下,脚本配置为保存 pdf、zip、jpg、png 和 gif 文件。在47行左右编辑方法数组属性 $allowed_mime_types
来更改此设置。或者调用 ->addMimeType()
来添加更多。
Postfix配置以管理邮件服务器上的邮件
接下来,您需要将邮件转发到上面的脚本。为此,我使用 Postfix 作为邮件服务器,您需要配置 /etc/postfix/master.cf
将此行添加到文件末尾(指定 myhook 以将所有邮件发送到 mailPipe.php 脚本)
myhook unix - n n - - pipe flags=F user=www-data argv=php -c /etc/php5/apache2/php.ini -f /var/www/mailPipe.php ${sender} ${size} ${recipient}
编辑此行(注册 myhook)
smtp inet n - - - - smtpd -o content_filter=myhook:dummy
许可证
版权所有 2012,Michael Moore stuporglue@gmail.com http://stuporglue.org
在PHP自身以及GPLv2或后续版本下许可。您可以为个人或商业项目免费使用此脚本。自行承担风险。不提供任何保证或保修。
支持
- 如果您有问题,鼓励您在 MailReader GitHub 问题跟踪器上发布,而不是在我的博客上评论。
- MailReader 是开源的。您可以支付(或不支付)任何您想(包括您自己!)为 MailReader 工作的费用,代码在此。
- 我将接受修复错误或添加功能的 GitHub pull 请求。此类维护将免费完成。
感谢
特别感谢 forahobby of www.360-hq.com 测试此脚本并帮助我找到初始错误,以及 Craig Hopson of twitterrooms.co.uk 帮助追踪iOS邮件处理错误。
版本
2019年7月9日
- 添加了许多功能,库的面向对象(OOP)兼容性更强。
- 添加了方法,可以轻松从数据库中检索记录。
- 添加了额外的类,可以处理任何以电子邮件格式化的文件/文件夹。
- 添加了PSR-4支持,现在可以使用Composer进行安装。
- 添加了phpunit测试,以及用于测试的电子邮件文件。
- 移除了允许的发件人,如果开启,则任何通过脚本接收到的电子邮件都会收到回复。
- mailPipe脚本现在可以自动定位数据库配置,并在未初始化的情况下创建数据库。
- 一般代码清理。
2013年5月21日
- 支持UUEncoded附件
- 现在是一个类
- 使用PHP PDO连接和预定义语句,而不是mysql/mysql_real_escape_string
- 支持内联内容类型(可能是从Mac上的邮件应用?)
2012年4月14日
- 使用PEAR的mimeDecode.php
- 支持更多MIME部分配置
2010年3月24日
- 初始版本
- 对我有效,适用于gmail.com
- 自制解析器!