jaypha/maildir

Maildir 格式

v0.6.0 2021-07-14 02:52 UTC

This package is auto-updated.

Last update: 2024-09-14 10:05:36 UTC


README

由 Jason den Dulk 编写

用于使用 maildir 和 maildir++ 格式读写文件的类。

Maildir 是一种在计算机上存储电子邮件的常用格式。Maildir++ 是 Maildir 的扩展,用于支持多个文件夹和配额。

Maildir 规范可以在 https://cr.yp.to/proto/maildir.html 找到。

Maildir++ 规范可以在 https://www.courier-mta.org/imap/README.maildirquota.html 找到。

版本 0.6.0 的重大更改。请参阅变更日志。

这是要添加的最后一个版本。如果在一年内没有提交错误报告,我将升级到 1.0.0。

要求

PHP v5.4.0 或更高版本。

安装

composer require jaypha/maildir

使用配额

要使用配额,使用 $useQuotas 设置为 true 创建 maildir++ 子树。为了使配额正常工作,您应坚持使用 MaildirPlusPlus 方法 deliver()move()trash()emptyTrash()。Maildir 的 save()delete() 方法仍然可以工作,但配额文件将不会更新,直到调用 resetQuotas

请记住,maildir++ 规范建议大约每十五分钟重置一次配额文件。通过调用 resetQuotas() 来这样做。

API

class Maildir

在此类中文件名的使用

在此类中,由 save() 返回的名称,以及由其他函数接受的名称,不包括标志设置。因此,尽管实际的文件名在设置和清除标志时可能会在磁盘上发生变化,但使用此类的名称不会。

静态方法

Maildir Maildir::create(string $rootDir)

创建一个 Maildir。$rootDir 必须存在。将创建子目录并返回一个 Maildir 实例。

void Maildir::destroy(string $rootDir)

销毁 maildir 结构。删除 cur、new 和 tmp 目录。不影响其他任何内容。

bool MailDir::isMaildir($dir)

测试给定的 $dir 是否包含 maildir 结构

string MailDir::createName()

根据 maildir 规范中设定的指南创建一个合适的唯一名称。

属性

string $rootDir (只读)

maildir 子树的根目录

方法

__construct(string $rootDir)

$rootDir 创建一个 Maildir 实例。必要的子目录必须已经存在。

string save($contents)

$contents 保存到 Maildir 文件中。$contents 可以是一个字符串或一个资源(流)。返回文件的名称。

void touch(string $name)

强制将 $name 的文件移动到 'cur' 目录。

bool isNew(string $name)

如果 $name 的文件尚未转移到 'cur',则返回 true。

bool exists(string $name)

如果 $name 的文件存在于 'cur' 或 'new' 中,则返回 true。

string fetch(string $name)

检索文件的內容。文件将被移动到 'cur' 目录,但不会设置 'S' 标志。

resource fetchAsStream(string $name)

以流资源的形式检索文件的內容,适用于大文件。文件将被移动到 'cur' 目录,但不会设置 'S' 标志。

mixed getPath(string $name)

获取 $name 的文件路径。如果 $name 不在 maildir 中,则返回 false

void delete(string $name)

删除 $name 的文件。将从 'new' 或 'cur' 目录中删除文件。

bool hasFlag(string $name, string $flag)

如果文件设置了标志,则返回 true。

void setFlag(string $name, string $flag)

设置标志

void clearFlag(string $name, string $flag)

清除标志

generator getNames()

产生在maildir中存储的名称列表。

generator getFiles()

产生在maildir中存储的文件列表,按名称索引。

generator getStreams()

getFiles()类似,但产生流而不是文件内容。

class MaildirPlusPlus

本类中文件夹名称的使用方式。

文件夹名称使用Maildir++规范中给出的逻辑格式,利用'/'分隔符。

静态方法

MaildirPlusPlus MaildirPlusPlus::create(string $rootDir, $useQuotas = false)

创建Maildir++目录结构。创建收件箱、已发送、草稿和废件箱文件夹。

MaildirPlusPlus::destroy(string $rootDir)

销毁Maildir++结构。删除所有maildir文件夹。

属性

string $rootDir (只读)

maildir++子树的根目录

方法

__construct(string $rootDir)

$rootDir创建一个MaildirPlusPlus实例。这将为每个文件夹以及收件箱创建Maildir实例。

Maildir createFolder(string $folderName, Maildir $parent = null)

$foldername创建maildir文件夹。如果提供了$parent,则它将用作新文件夹的逻辑“父文件夹”。

mixed getFolder(string $folderName)

获取$folderName对应的文件夹。如果找到,则返回一个Maildir,否则返回false

void deleteFolder(string $folderName)

移除$folderName文件夹。

mixed locate(string $name)

检索文件当前所在文件夹的名称。如果文件未找到,则返回false

mixed deliver($contents)

尝试将文件保存到子树。如果成功,则返回名称。如果配额将被超出,则返回false。

void move(string $name, string $toFolder)

将文件移动到$toFolder。文件将始终放置在目标文件夹的当前目录中。

void trash(string $name)

将文件移动到废件箱。同时设置“T”标志。

void emptyTrash()

删除废件箱中的所有文件。

void setQuotas(mixed $sizeQuota, mixed $countQuota)

设置总文件大小和文件计数的配额。如果任一设置为null,则不会为该参数设置配额。

array getQuotas()

以关联数组形式返回由setQuotas设置的配额,'size'用于大小配额,'count'用于计数字配额。null值表示未设置配额。

void resetQuotas()

重新计算子树中所有(非废件箱)文件的总大小和数量,并将其写入maildirsize。根据maildir++规范。这应该大约每十五分钟进行一次。如果您的程序进行类似操作,则应调用此方法。

array getSizeAndCount()

使用maildirsize文件(如果正在使用配额)返回子树的总文件大小和文件计数字。

变更日志

版本 0.6.0

破坏性变更

  • MaildirPlusPlus不再继承自Maildir。使用getFolder("Inbox")获取收件箱maildir。
  • Maildir::makeCurrent()已被重命名为touch(),现在是公开的。
  • $parentDir已更改为$rootDir
  • 已弃用的函数参数现在已被删除。

其他更改

  • 配额支持!已向MaildirPlusPlus添加配额支持函数。
  • 向Maildir添加了isMaildir、rootDir、getPath、fetchAsStream和getStreams。
  • Maildir::createName现在是公开的。

备注

我决定让MaildirPlusPlus不再继承自Maildir,因为我认为MaildirPlusPlus代表一组Maildirs,而不是一个独立的Maildir。虽然它可以在技术上伪装成Maildir,但从语义上讲,它实际上并没有与Maildir有“是一个”的关系。因此,我出于良好的编程实践,将其移除。

版本 0.5.0

  • 添加了getNames和getFiles,以便遍历maildir内容。

版本 0.4.1

  • 在保存时移除了字符串约束,允许传递流。

版本 0.4.0

  • 添加了定位函数。
  • 移动和删除不再需要原始文件夹名称。

版本 0.3.0

  • 在Maildir中添加了destroy函数。
  • 添加了对maildir++的支持。

版本 0.2.0

  • 添加了删除函数。
  • 从Maildir中移除了trash和emptyTrash。

许可证

版权 (C) 2018-21 Jaypha。
在Boost软件许可证,版本1.0下分发。
请参阅https://boost.ac.cn/LICENSE_1_0.txt