mfacious / email
更快的 MIME 邮件解析器可以用于解析 MIME 格式的电子邮件。
dev-master
2019-09-18 08:43 UTC
Requires
- php: >=5.4
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ~4.4
This package is auto-updated.
Last update: 2024-09-18 20:07:20 UTC
README
更快的 MIME 邮件解析器可以用于解析 MIME 格式的电子邮件。
使用方法
基本用法如下
$file = fopen('path/to/file.eml', 'r'); $message = \bashkarev\email\Parser::email($file); $message->textHtml(); $message->getParts(); $message->getAttachments();
设置
有一些设置可用。
-
charset
- 要使用的字符集。应仅以大写字母指定。默认是UTF-8
。\bashkarev\email\Parser::$charset = "WINDOWS-1251";
-
buffer
- 以字节为单位的读取缓冲区大小。默认是500000
。\bashkarev\email\Parser::$buffer = 4096;
附件
支持附件解析。
将附件保存到文件
保存到文件可以按以下方式完成
$file = fopen('path/to/file.eml', 'rb'); $message = \bashkarev\email\Parser::email($file); foreach ($message->getAttachments() as $attachment) { $attachment->save('dir/' . $attachment->getFileName('undefined')); }
将附件流式传输到输出
为了直接将附件流式传输到输出,您需要执行以下操作
$file = fopen('path/to/file.eml', 'rb'); $message = \bashkarev\email\Parser::email($file); $attachment = $message->getAttachments()[0]; header("Content-Type: {$attachment->getMimeType()};"); header("Content-Disposition: attachment; filename=\"{$attachment->getFileName('undefined')}\""); $attachment->getStream()->copy(fopen('php://output', 'c'));
message/partial
$block = \bashkarev\email\Parser::email([ fopen('path/to/part.1.eml', 'rb'), fopen('path/to/part.2.eml', 'rb'), ]); $block->getMessage();
message/rfc822
$file = fopen('path/to/file.eml', 'rb'); $container = \bashkarev\email\Parser::email($file); $message = $container->getAttachments()[0]->getMessage();
message/feedback-report
$file = fopen('path/to/file.eml', 'rb'); $container = \bashkarev\email\Parser::email($file); foreach ($container->getAttachments() as $attachment) { if ($attachment->getMimeType() === 'message/feedback-report') { /** * @var \bashkarev\email\messages\Feedback $feedback */ $feedback = $attachment->getMessage(); $feedback->getType(); // Feedback::TYPE_ABUSE ... } }
message/external-body
支持类型:url、local-file、ftp。
FTP 认证
$file = fopen('path/to/file.eml', 'rb'); $container = \bashkarev\email\Parser::email($file); foreach ($container->getAttachments() as $attachment) { if ($attachment->getStream() instanceof \bashkarev\email\transports\Ftp) { /** * @var \bashkarev\email\transports\Ftp $transport */ $transport = $attachment->getStream(); $transport->username = 'username'; $transport->password = '******'; $attachment->save('dir/' . $attachment->getFileName('undefined')); } }