{
    "mode": "perldoc",
    "parameter": "Mail::Box::Dir",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/Mail%3A%3ABox%3A%3ADir/json",
    "generated": "2026-06-11T11:50:32Z",
    "synopsis": "# Do not instantiate this object",
    "sections": {
        "NAME": {
            "content": "Mail::Box::Dir - handle folders with a file per message.\n",
            "subsections": []
        },
        "INHERITANCE": {
            "content": "Mail::Box::Dir\nis a Mail::Box\nis a Mail::Reporter\n\nMail::Box::Dir is extended by\nMail::Box::MH\nMail::Box::Maildir\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "# Do not instantiate this object\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This documentation describes the way directory organized mailboxes work. At the moment, this\nobject is extended by\n\n*   Mail::Box::MH\n\nMH folders, which are represented by a directory containing files which are sequentially\nnumbered.\n\n*   Mail::Box::Maildir\n\nMaildir folders, which are located in a directory which has sub-directories named \"tmp\",\n\"new\", and \"cur\". Each of these directories may contain files with names which are a\ncombination of a numeric timestamp and some status flags.\n\n*   Mail::Box::Netzwert\n\nThis folder type was especially developed for Netzwert AG, optimized to run on a cluster of\nservers with folders on NFS. The code is not publicly available (yet).\n\nExtends \"DESCRIPTION\" in Mail::Box.\n",
            "subsections": []
        },
        "OVERLOADED": {
            "content": "Extends \"OVERLOADED\" in Mail::Box.\n\noverload: \"\"\nInherited, see \"OVERLOADED\" in Mail::Box\n\noverload: @{}\nInherited, see \"OVERLOADED\" in Mail::Box\n\noverload: cmp\nInherited, see \"OVERLOADED\" in Mail::Box\n",
            "subsections": []
        },
        "METHODS": {
            "content": "Extends \"METHODS\" in Mail::Box.\n",
            "subsections": [
                {
                    "name": "Constructors",
                    "content": "Extends \"Constructors\" in Mail::Box.\n\nMail::Box::Dir->new(%options)\n-Option           --Defined in     --Default\naccess             Mail::Box        'r'\nbodydelayedtype  Mail::Box        Mail::Message::Body::Delayed\nbodytype          Mail::Box        Mail::Message::Body::Lines\ncoerceoptions     Mail::Box        []\ncreate             Mail::Box        <false>\ndirectory                           <derived from folder name>\nextract            Mail::Box        10240\nfieldtype         Mail::Box        undef\nfixheaders        Mail::Box        <false>\nfolder             Mail::Box        $ENV{MAIL}\nfolderdir          Mail::Box        undef\nheaddelayedtype  Mail::Box        Mail::Message::Head::Delayed\nheadtype          Mail::Box        Mail::Message::Head::Complete\nkeepdups          Mail::Box        <false>\nlockfile          Mail::Box        <folder>/.lock\nlocktimeout       Mail::Box        1 hour\nlocktype          Mail::Box        Mail::Box::Locker::DotLock\nlockwait          Mail::Box        10 seconds\nlocker             Mail::Box        undef\nlog                Mail::Reporter   'WARNINGS'\nmanager            Mail::Box        undef\nmessagetype       Mail::Box        <folder-class>::Message\nmultiparttype     Mail::Box        Mail::Message::Body::Multipart\nremovewhenempty  Mail::Box        <true>\nsaveonexit       Mail::Box        <true>\ntrace              Mail::Reporter   'WARNINGS'\ntrusted            Mail::Box        <depends on folder location>\n\naccess => MODE\nbodydelayedtype => CLASS\nbodytype => CLASS|CODE\ncoerceoptions => ARRAY\ncreate => BOOLEAN\ndirectory => DIRECTORY\nFor rare folder types, the directory name may differ from the folder name.\n\nextract => INTEGER | CODE | METHOD | 'LAZY'|'ALWAYS'\nfieldtype => CLASS\nfixheaders => BOOLEAN\nfolder => FOLDERNAME\nfolderdir => DIRECTORY\nheaddelayedtype => CLASS\nheadtype => CLASS\nkeepdups => BOOLEAN\nlockfile => FILENAME\nlocktimeout => SECONDS\nlocktype => CLASS|STRING|ARRAY\nlockwait => SECONDS\nlocker => OBJECT\nlog => LEVEL\nmanager => MANAGER\nmessagetype => CLASS\nmultiparttype => CLASS\nremovewhenempty => BOOLEAN\nsaveonexit => BOOLEAN\ntrace => LEVEL\ntrusted => BOOLEAN\n"
                },
                {
                    "name": "The folder",
                    "content": "Extends \"The folder\" in Mail::Box.\n\n$obj->addMessage($message, %options)\nInherited, see \"The folder\" in Mail::Box\n\n$obj->addMessages(@messages)\nInherited, see \"The folder\" in Mail::Box\n\nMail::Box::Dir->appendMessages(%options)\nInherited, see \"The folder\" in Mail::Box\n\n$obj->close(%options)\nInherited, see \"The folder\" in Mail::Box\n\n$obj->copyTo($folder, %options)\nInherited, see \"The folder\" in Mail::Box\n\n$obj->delete(%options)\nInherited, see \"The folder\" in Mail::Box\n\n$obj->directory()\nReturns the directory related to this folder.\n\nexample:\n\nprint $folder->directory;\n\n$obj->folderdir( [$directory] )\nInherited, see \"The folder\" in Mail::Box\n\n$obj->name()\nInherited, see \"The folder\" in Mail::Box\n\n$obj->organization()\nInherited, see \"The folder\" in Mail::Box\n\n$obj->size()\nInherited, see \"The folder\" in Mail::Box\n\n$obj->type()\nInherited, see \"The folder\" in Mail::Box\n\n$obj->update(%options)\nInherited, see \"The folder\" in Mail::Box\n\n$obj->url()\nInherited, see \"The folder\" in Mail::Box\n"
                },
                {
                    "name": "Folder flags",
                    "content": "Extends \"Folder flags\" in Mail::Box.\n\n$obj->access()\nInherited, see \"Folder flags\" in Mail::Box\n\n$obj->isModified()\nInherited, see \"Folder flags\" in Mail::Box\n\n$obj->modified( [BOOLEAN] )\nInherited, see \"Folder flags\" in Mail::Box\n\n$obj->writable()\nInherited, see \"Folder flags\" in Mail::Box\n"
                },
                {
                    "name": "The messages",
                    "content": "Extends \"The messages\" in Mail::Box.\n\n$obj->current( [$number|$message|$messageid] )\nInherited, see \"The messages\" in Mail::Box\n\n$obj->find($messageid)\nInherited, see \"The messages\" in Mail::Box\n\n$obj->findFirstLabeled( $label, [BOOLEAN, [$msgs]] )\nInherited, see \"The messages\" in Mail::Box\n\n$obj->message( $index, [$message] )\nInherited, see \"The messages\" in Mail::Box\n\n$obj->messageId( $messageid, [$message] )\nInherited, see \"The messages\" in Mail::Box\n\n$obj->messageIds()\nInherited, see \"The messages\" in Mail::Box\n\n$obj->messages( <'ALL'|$range|'ACTIVE'|'DELETED'|$label| !$label|$filter> )\nInherited, see \"The messages\" in Mail::Box\n\n$obj->nrMessages(%options)\nInherited, see \"The messages\" in Mail::Box\n\n$obj->scanForMessages($message, $messageids, $timespan, $window)\nInherited, see \"The messages\" in Mail::Box\n"
                },
                {
                    "name": "Sub-folders",
                    "content": "Extends \"Sub-folders\" in Mail::Box.\n\n$obj->listSubFolders(%options)\nMail::Box::Dir->listSubFolders(%options)\nInherited, see \"Sub-folders\" in Mail::Box\n\n$obj->nameOfSubFolder( $subname, [$parentname] )\nMail::Box::Dir->nameOfSubFolder( $subname, [$parentname] )\nInherited, see \"Sub-folders\" in Mail::Box\n\n$obj->openRelatedFolder(%options)\nInherited, see \"Sub-folders\" in Mail::Box\n\n$obj->openSubFolder($subname, %options)\nInherited, see \"Sub-folders\" in Mail::Box\n\n$obj->topFolderWithMessages()\nMail::Box::Dir->topFolderWithMessages()\nInherited, see \"Sub-folders\" in Mail::Box\n"
                },
                {
                    "name": "Internals",
                    "content": "Extends \"Internals\" in Mail::Box.\n\n$obj->coerce($message, %options)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->create($foldername, %options)\nMail::Box::Dir->create($foldername, %options)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->determineBodyType($message, $head)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->folderToDirectory($foldername, $folderdir)\n(class method) Translate a foldername into a filename, with use of the $folderdir to replace\na leading \"=\".\n\nMail::Box::Dir->foundIn( [$foldername], %options )\nInherited, see \"Internals\" in Mail::Box\n\n$obj->lineSeparator( [<STRING|'CR'|'LF'|'CRLF'>] )\nInherited, see \"Internals\" in Mail::Box\n\n$obj->locker()\nInherited, see \"Internals\" in Mail::Box\n\n$obj->messageInFile($filename)\nReturns the folder message which is found the indicated \"filename\". This may be useful when\nsome external tool reports filename to be opened.\n\n$obj->read(%options)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->readMessageFilenames($directory)\nReturns a list of all filenames which are found in this folder directory and represent a\nmessage. The filenames are returned as relative path.\n\n$obj->readMessages(%options)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->storeMessage($message)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->toBeThreaded($messages)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->toBeUnthreaded($messages)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->updateMessages(%options)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->write(%options)\nInherited, see \"Internals\" in Mail::Box\n\n$obj->writeMessages(%options)\nInherited, see \"Internals\" in Mail::Box\n"
                },
                {
                    "name": "Other methods",
                    "content": "Extends \"Other methods\" in Mail::Box.\n\n$obj->timespan2seconds($time)\nMail::Box::Dir->timespan2seconds($time)\nInherited, see \"Other methods\" in Mail::Box\n"
                },
                {
                    "name": "Error handling",
                    "content": "Extends \"Error handling\" in Mail::Box.\n\n$obj->AUTOLOAD()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->addReport($object)\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->defaultTrace( [$level]|[$loglevel, $tracelevel]|[$level, $callback] )\nMail::Box::Dir->defaultTrace( [$level]|[$loglevel, $tracelevel]|[$level, $callback] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->errors()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->log( [$level, [$strings]] )\nMail::Box::Dir->log( [$level, [$strings]] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->logPriority($level)\nMail::Box::Dir->logPriority($level)\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->logSettings()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->notImplemented()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->report( [$level] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->reportAll( [$level] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->trace( [$level] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->warnings()\nInherited, see \"Error handling\" in Mail::Reporter\n"
                },
                {
                    "name": "Cleanup",
                    "content": "Extends \"Cleanup\" in Mail::Box.\n\n$obj->DESTROY()\nInherited, see \"Cleanup\" in Mail::Box\n"
                }
            ]
        },
        "DETAILS": {
            "content": "Extends \"DETAILS\" in Mail::Box.\n",
            "subsections": []
        },
        "DIAGNOSTICS": {
            "content": "Warning: Changes not written to read-only folder $self.\nYou have opened the folder read-only --which is the default set by new(access)--, made\nmodifications, and now want to close it. Set close(force) if you want to overrule the access\nmode, or close the folder with close(write) set to \"NEVER\".\n\nError: Copying failed for one message.\nFor some reason, for instance disc full, removed by external process, or read-protection, it\nis impossible to copy one of the messages. Copying will proceed for the other messages.\n\nError: Destination folder $name is not writable.\nThe folder where the messages are copied to is not opened with write access (see\nnew(access)). This has no relation with write permission to the folder which is controlled\nby your operating system.\n\nWarning: Different messages with id $msgid\nThe message id is discovered more than once within the same folder, but the content of the\nmessage seems to be different. This should not be possible: each message must be unique.\n\nError: Folder $name is opened read-only\nYou can not write to this folder unless you have opened the folder to write or append with\nnew(access), or the \"force\" option is set true.\n\nError: Folder $name not deleted: not writable.\nThe folder must be opened with write access via new(access), otherwise removing it will be\nrefused. So, you may have write-access according to the operating system, but that will not\nautomatically mean that this \"delete\" method permits you to. The reverse remark is valid as\nwell.\n\nWarning: Folder directory $directory is write-protected.\nThe folder directory does already exist and is write protected, which may interfere with the\nrequested write access. Change new(access) or the permissions on the directory.\n\nError: Invalid timespan '$timespan' specified.\nThe string does not follow the strict rules of the time span syntax which is permitted as\nparameter.\n\nWarning: Message-id '$msgid' does not contain a domain.\nAccording to the RFCs, message-ids need to contain a unique random part, then an \"@\", and\nthen a domain name. This is made to avoid the creation of two messages with the same id. The\nwarning emerges when the \"@\" is missing from the string.\n\nWarning: No directory $name for folder of $class\nError: Package $package does not implement $method.\nFatal error: the specific package (or one of its superclasses) does not implement this\nmethod where it should. This message means that some other related classes do implement this\nmethod however the class at hand does not. Probably you should investigate this and probably\ninform the author of the package.\n\nError: Unable to create subfolder $name of $folder.\nThe copy includes the subfolders, but for some reason it was not possible to copy one of\nthese. Copying will proceed for all other sub-folders.\n\nError: Writing folder $name failed\nFor some reason (you probably got more error messages about this problem) it is impossible\nto write the folder, although you should because there were changes made.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "This module is part of Mail-Box distribution version 3.009, built on August 18, 2020. Website:\nhttp://perl.overmeer.net/CPAN/\n",
            "subsections": []
        },
        "LICENSE": {
            "content": "Copyrights 2001-2020 by [Mark Overmeer]. For other contributors see ChangeLog.\n\nThis program is free software; you can redistribute it and/or modify it under the same terms as\nPerl itself. See http://dev.perl.org/licenses/\n",
            "subsections": []
        }
    },
    "summary": "Mail::Box::Dir - handle folders with a file per message.",
    "flags": [],
    "examples": [],
    "see_also": []
}