forked/mailreader

一个经过全面测试的简单邮件读取解析器,适用于PHP 5.6及以上版本。

1.0.1 2019-11-13 13:53 UTC

This package is auto-updated.

Last update: 2024-08-29 04:49:09 UTC


README

Build StatusBuild statuscodecovCodacy BadgeMaintainability

使用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或后续版本下许可。您可以为个人或商业项目免费使用此脚本。自行承担风险。不提供任何保证或保修。

支持

  1. 如果您有问题,鼓励您在 MailReader GitHub 问题跟踪器上发布,而不是在我的博客上评论。
  2. MailReader 是开源的。您可以支付(或不支付)任何您想(包括您自己!)为 MailReader 工作的费用,代码在此。
  3. 我将接受修复错误或添加功能的 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
  • 自制解析器!