{
    "content": [
        {
            "type": "text",
            "text": "# Mail::Box (info)\n\n## NAME\n\nMail::Box - manage a mailbox, a folder with messages\n\n## SYNOPSIS\n\nuse Mail::Box::Manager;\nmy $mgr    = Mail::Box::Manager->new;\nmy $folder = $mgr->open(folder => $ENV{MAIL}, ...);\nprint $folder->name;\n# Get the first message.\nprint $folder->message(0);\n# Delete the third message\n$folder->message(3)->delete;\n# Get the number of messages in scalar context.\nmy $emails = $folder->messages;\n# Iterate over the messages.\nforeach ($folder->messages) {...} # all messages\nforeach (@$folder) {...}          # all messages\n$folder->addMessage(Mail::Box::Message->new(...));\nTied-interface:\ntie my(@inbox), 'Mail::Box::Tie::ARRAY', $inbox;\n# Four times the same:\n$inbox[3]->print;                 # tied\n$folder->[3]->print;              # overloaded folder\n$folder->message(3)->print;       # usual\nprint $folder->[3];               # overloaded message\ntie my(%inbox), 'Mail::Box::Tie::HASH', $inbox;\n# Twice times the same\n$inbox{$msgid}->print;            # tied\n$folder->messageId($msgid)->print;# usual\n\n## DESCRIPTION\n\nA Mail::Box::Manager creates \"Mail::Box\" objects.  But you already\nknew, because you started with the Mail::Box-Overview manual page.\nThat page is obligatory reading, sorry!\n\n## Sections\n\n- **NAME**\n- **INHERITANCE**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **OVERLOADED**\n- **METHODS**\n- **DETAILS**\n- **DIAGNOSTICS**\n- **SEE ALSO**\n- **LICENSE**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "Mail::Box",
        "section": "",
        "mode": "info",
        "summary": "Mail::Box - manage a mailbox, a folder with messages",
        "synopsis": "use Mail::Box::Manager;\nmy $mgr    = Mail::Box::Manager->new;\nmy $folder = $mgr->open(folder => $ENV{MAIL}, ...);\nprint $folder->name;\n# Get the first message.\nprint $folder->message(0);\n# Delete the third message\n$folder->message(3)->delete;\n# Get the number of messages in scalar context.\nmy $emails = $folder->messages;\n# Iterate over the messages.\nforeach ($folder->messages) {...} # all messages\nforeach (@$folder) {...}          # all messages\n$folder->addMessage(Mail::Box::Message->new(...));\nTied-interface:\ntie my(@inbox), 'Mail::Box::Tie::ARRAY', $inbox;\n# Four times the same:\n$inbox[3]->print;                 # tied\n$folder->[3]->print;              # overloaded folder\n$folder->message(3)->print;       # usual\nprint $folder->[3];               # overloaded message\ntie my(%inbox), 'Mail::Box::Tie::HASH', $inbox;\n# Twice times the same\n$inbox{$msgid}->print;            # tied\n$folder->messageId($msgid)->print;# usual",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "INHERITANCE",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 36,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 16,
                "subsections": []
            },
            {
                "name": "OVERLOADED",
                "lines": 28,
                "subsections": []
            },
            {
                "name": "METHODS",
                "lines": 1042,
                "subsections": []
            },
            {
                "name": "DETAILS",
                "lines": 141,
                "subsections": []
            },
            {
                "name": "DIAGNOSTICS",
                "lines": 65,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "LICENSE",
                "lines": 7,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "Mail::Box - manage a mailbox, a folder with messages\n",
                "subsections": []
            },
            "INHERITANCE": {
                "content": "Mail::Box\nis a Mail::Reporter\n\nMail::Box is extended by\nMail::Box::Dir\nMail::Box::File\nMail::Box::Net\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "use Mail::Box::Manager;\nmy $mgr    = Mail::Box::Manager->new;\nmy $folder = $mgr->open(folder => $ENV{MAIL}, ...);\nprint $folder->name;\n\n# Get the first message.\nprint $folder->message(0);\n\n# Delete the third message\n$folder->message(3)->delete;\n\n# Get the number of messages in scalar context.\nmy $emails = $folder->messages;\n\n# Iterate over the messages.\nforeach ($folder->messages) {...} # all messages\nforeach (@$folder) {...}          # all messages\n\n$folder->addMessage(Mail::Box::Message->new(...));\n\nTied-interface:\n\ntie my(@inbox), 'Mail::Box::Tie::ARRAY', $inbox;\n\n# Four times the same:\n$inbox[3]->print;                 # tied\n$folder->[3]->print;              # overloaded folder\n$folder->message(3)->print;       # usual\nprint $folder->[3];               # overloaded message\n\ntie my(%inbox), 'Mail::Box::Tie::HASH', $inbox;\n\n# Twice times the same\n$inbox{$msgid}->print;            # tied\n$folder->messageId($msgid)->print;# usual\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "A Mail::Box::Manager creates \"Mail::Box\" objects.  But you already\nknew, because you started with the Mail::Box-Overview manual page.\nThat page is obligatory reading, sorry!\n\n\"Mail::Box\" is the base class for accessing various types of mailboxes\n(folders) in a uniform manner.  The various folder types vary on how\nthey store their messages, but when some effort those differences could\nbe hidden behind a general API. For example, some folders store many\nmessages in one single file, where other store each message in a\nseparate file within the same directory.\n\nNo object in your program will be of type \"Mail::Box\": it is only used\nas base class for the real folder types.  \"Mail::Box\" is extended by\n\nExtends \"DESCRIPTION\" in Mail::Reporter.\n",
                "subsections": []
            },
            "OVERLOADED": {
                "content": "overload: \"\"\n(stringification) The folder objects stringify to their name.  This\nsimplifies especially print statements and sorting a lot.\n\nexample: use overloaded folder as string\n\n# Three lines with overloading: resp. cmp, @{}, and \"\"\nforeach my $folder (sort @folders)\n{   my $msgcount = @$folder;\nprint \"$folder contains $msgcount messages\\n\";\n}\n\noverload: @{}\nWhen the folder is used as if it is a reference to an array, it\nwill show the messages, like messages() and message() would do.\n\nexample: use overloaded folder as array\n\nmy $msg = $folder->[3];\nmy $msg = $folder->message(3);          # same\n\nforeach my $msg (@$folder) ...\nforeach my $msg ($folder->messages) ... # same\n\noverload: cmp\n(string comparison) folders are compared based on their name.  The\nsort rules are those of the build-in \"cmp\".\n",
                "subsections": []
            },
            "METHODS": {
                "content": "Extends \"METHODS\" in Mail::Reporter.\n\nConstructors\nExtends \"Constructors\" in Mail::Reporter.\n\nMail::Box->new(%options)\nOpen a new folder. A list of labeled %options for the mailbox can\nbe supplied. Some options pertain to Mail::Box, and others are\nadded by sub-classes.\n\nTo control delay-loading of messages, as well the headers as the\nbodies, a set of *type options are available. \"extract\" determines\nwhether we want delay-loading.\n\n-Option           --Defined in     --Default\naccess                              'r'\nbodydelayedtype                   Mail::Message::Body::Delayed\nbodytype                           <folder specific>\ncoerceoptions                      []\ncreate                              <false>\nextract                             10240\nfieldtype                          undef\nfixheaders                         <false>\nfolder                              $ENV{MAIL}\nfolderdir                           undef\nheaddelayedtype                   Mail::Message::Head::Delayed\nheadtype                           Mail::Message::Head::Complete\nkeepdups                           <false>\nlockfile                           undef\nlocktimeout                        1 hour\nlocktype                           Mail::Box::Locker::DotLock\nlockwait                           10 seconds\nlocker                              undef\nlog                Mail::Reporter   'WARNINGS'\nmanager                             undef\nmessagetype                        <folder-class>::Message\nmultiparttype                      Mail::Message::Body::Multipart\nremovewhenempty                   <true>\nsaveonexit                        <true>\ntrace              Mail::Reporter   'WARNINGS'\ntrusted                             <depends on folder location>\n\naccess => MODE\nAccess-rights to the folder.  Folders are opened for read-only\n(which means write-protected) by default! MODE can be\n\n'r': read-only (default)\n'a': append\n'rw': read-write\n'd': delete\n\nThese MODE has no relation to the modes actually used to open the\nfolder files within this module.  For instance, if you specify\n\"rw\", and open the folder, only read permission on the folder-\nfile is required.\n\nBe warned: writing a MBOX folder may create a new file to replace\nthe old folder.  The permissions and owner of the file may get\nchanged by this.\n\nbodydelayedtype => CLASS\nThe bodies which are delayed: which will be read from file when\nit is needed, but not before.\n\nbodytype => CLASS|CODE\nWhen messages are read from a folder-file, the headers will be\nstored in a \"headtype\" object.  For the body, however, there is\na range of choices about type, which are all described in\nMail::Message::Body.\n\nSpecify a CODE-reference which produces the body-type to be\ncreated, or a CLASS of the body which is used when the body is\nnot a multipart or nested.  In case of a code reference, the\nheader structure is passed as first argument to the routine.\n\nDo not return a delayed body-type (like \"::Delayed\"), because\nthat is determined by the \"extract\" option while the folder is\nopened.  Even delayed message will require some real body type\nwhen they get parsed eventually.  Multiparts and nested messages\nare also outside your control.\n\nFor instance:\n\n$mgr->open('InBox', bodytype => \\&whichbody);\n\nsub whichbody($) {\nmy $head = shift;\nmy $size = $head->guessBodySize || 0;\nmy $type = $size > 100000 ? 'File' : 'Lines';\n\"Mail::Message::Body::$type\";\n}\n\nThe default depends on the mail-folder type, although the general\ndefault is Mail::Message::Body::Lines.  Please check the\napplicable manual pages.\n\ncoerceoptions => ARRAY\nKeep configuration information for messages which are coerced\ninto the specified folder type, starting with a different folder\ntype (or even no folder at all).  Messages which are coerced are\nalways fully read, so this kind of information does not need to\nbe kept here.\n\ncreate => BOOLEAN\nAutomatically create the folder when it does not exist yet.  This\nwill only work when access is granted for writing or appending to\nthe folder.\n\nBe careful: you may create a different folder type than you\nexpect unless you explicitly specify\nMail::Box::Manager::open(type).\n\nextract => INTEGER | CODE | METHOD | 'LAZY'|'ALWAYS'\nDefines when to parse (process) the content of the message.  When\nthe header of a message is read, you may want to postpone the\nreading of the body: header information is more often needed than\nthe body data, so why parse it always together?  The cost of\ndelaying is not too high, and with some luck you may never need\nparsing the body.\n\nIf you supply an INTEGER to this option, bodies of those messages\nwith a total size less than that number will be extracted from\nthe folder only when necessary.  Messages where the size (in the\n\"Content-Length\" field) is not included in the header, like often\nthe case for multiparts and nested messages, will not be\nextracted by default.\n\nIf you supply a CODE reference, that subroutine is called every\ntime that the extraction mechanism wants to determine whether to\nparse the body or not. The subroutine is called with the\nfollowing arguments:\n\nCODE->(FOLDER, HEAD)\n\nwhere FOLDER is a reference to the folder we are reading.  HEAD\nrefers to the Mail::Message::Head::Complete head of the message\nat hand.  The routine must return a \"true\" value (extract now) or\na \"false\" value (be lazy, do not parse yet).  Think about using\nthe Mail::Message::Head::guessBodySize() and\nMail::Message::guessTimestamp() on the header to determine your\nchoice.\n\nThe third possibility is to specify the NAME of a method.  In\nthat case, for each message is called:\n\nFOLDER->NAME(HEAD)\n\nWhere each component has the same meaning as described above.\n\nThe fourth way to use this option involves constants: with \"LAZY\"\nall messages will be delayed. With \"ALWAYS\" you enforce\nunconditional parsing, no delaying will take place.  The latter\nis usuful when you are sure you always need all the messages in\nthe folder.\n\n$folder->new(extract => 'LAZY');  # Very lazy\n$folder->new(extract => 10000);   # Less than 10kB\n\n# same, but implemented yourself\n$folder->new(extract => &large);\nsub large($) {\nmy ($f, $head) = @;\nmy $size = $head->guessBodySize;\ndefined $size ? $size < 10000 : 1\n};\n\n# method call by name, useful for Mail::Box\n# extensions. The example selects all messages\n# sent by you to be loaded without delay.\n# Other messages will be delayed.\n$folder->new(extract => 'sentbyme');\nsub Mail::Box::sendbyme($) {\nmy ($self, $header) = @;\n$header->get('from') =~ m/\\bmy\\@example.com\\b/i;\n}\n\nfieldtype => CLASS\nThe type of the fields to be used in a header. Must extend\nMail::Message::Field.\n\nfixheaders => BOOLEAN\nBroken MIME headers usually stop the parser: all lines not parsed\nare added to the body of the message.  With this flag set, the\nerroneous line is added to the previous header field and parsing\nis continued.  See\nMail::Box::Parser::Perl::new(fixheadererrors).\n\nfolder => FOLDERNAME\nWhich folder to open (for reading or writing). When used for\nreading (the \"access\" option set to \"r\" or \"a\") the mailbox\nshould already exist and must be readable. The file or directory\nof the mailbox need not exist if it is opened for reading and\nwriting (\"rw\").  Write-permission is checked when opening an\nexisting mailbox.\n\nThe folder name can be preceded by a \"=\", to indicate that it is\nnamed relative to the directory specified in new(folderdir).\nOtherwise, it is taken as relative or absolute path.\n\nfolderdir => DIRECTORY\nWhere are folders to be found by default?  A folder-name may be\npreceded by a equals-sign (\"=\", a \"mutt\" convension) to\nexplicitly state that the folder is located below the default\ndirectory.  For example: in case \"folderdir => '/tmp'\" and\n\"folder => '=abc'\", the name of the folder-file is '/tmp/abc'.\nEach folder type has already some default set.\n\nheaddelayedtype => CLASS\nThe headers which are delayed: which will be read from file when\nit is needed, but not before.\n\nheadtype => CLASS\nThe type of header which contains all header information.  Must\nextend Mail::Message::Head::Complete.\n\nkeepdups => BOOLEAN\nIndicates whether or not duplicate messages within the folder\nshould be retained.  A message is considered to be a duplicate if\nits message-id is the same as a previously parsed message within\nthe same folder. If this option is false (the default) such\nmessages are automatically deleted, because it is considered\nuseless to store the same message twice.\n\nlockfile => FILENAME\nThe name of the file which is used to lock.  This must be\nspecified when locking is to be used.\n\nlocktimeout => SECONDS\nWhen the lock file is older than the specified number of SECONDS,\nit is considered a mistake.  The original lock is released, and\naccepted for this folder.\n\nlocktype => CLASS|STRING|ARRAY\nThe type of the locker object.  This may be the full name of a\nCLASS which extends Mail::Box::Locker, or one of the known locker\ntypes \"DotLock\", \"Flock\", \"FcntlLock\", \"Mutt\", \"NFS\", \"POSIX\", or\n\"NONE\".  If an ARRAY is specified, then a Multi locker is built\nwhich uses the specified list.\n\nlockwait => SECONDS\nSECONDS to wait before failing on opening this folder.\n\nlocker => OBJECT\nAn OBJECT which extends Mail::Box::Locker, and will handle folder\nlocking replacing the default lock behavior.\n\nlog => LEVEL\nmanager => MANAGER\nA reference to the object which manages this folder -- typically\nan Mail::Box::Manager instance.\n\nmessagetype => CLASS\nWhat kind of message objects are stored in this type of folder.\nThe default is constructed from the folder class followed by\n\"::Message\".  For instance, the message type for\n\"Mail::Box::POP3\" is \"Mail::Box::POP3::Message\"\n\nmultiparttype => CLASS\nThe default type of objects which are to be created for multipart\nmessage bodies.\n\nremovewhenempty => BOOLEAN\nDetermines whether to remove the folder file or directory\nautomatically when the write would result in a folder without\nmessages nor sub-folders.\n\nsaveonexit => BOOLEAN\nSets the policy for saving the folder when it is closed.  A\nfolder can be closed manually (see close()) or in a number of\nimplicit ways, including on the moment the program is terminated.\n\ntrace => LEVEL\ntrusted => BOOLEAN\nFlags whether to trust the data in the folder or not.  Folders\nwhich reside in your \"folderdir\" will be trusted by default (even\nwhen the names if not specified staring with \"=\").  Folders which\nare outside the folderdir or read from STDIN\n(Mail::Message::Construct::read()) are not trused by default, and\nrequire some extra checking.\n\nIf you do not check encodings of received messages, you may print\nbinary data to the screen, which is a security risk.\n\nThe folder\n$obj->addMessage($message, %options)\nAdd a message to the folder.  A message is usually a\nMail::Box::Message object or a sub-class thereof.  The message\nshall not be in an other folder, when you use this method.  In case\nit is, use Mail::Box::Manager::moveMessage() or\nMail::Box::Manager::copyMessage() via the manager.\n\nMessages with id's which already exist in this folder are not\nadded.\n\nBE WARNED that message labels may get lost when a message is moved\nfrom one folder type to an other.  An attempt is made to translate\nlabels, but there are many differences in interpretation by\napplications.\n\n-Option--Default\nshare   <not used>\n\nshare => BOOLEAN\nTry to share the physical resource of the current message with\nthe indicated message.  It is sometimes possible to share\nmessages between different folder types.  When the sharing is not\npossible, than this option is simply ignored.\n\nSharing the resource is quite dangerous, and only available for a\nlimited number of folder types, at the moment only some\nMail::Box::Dir folders; these file-based messages can be\nhardlinked (on platforms that support it).  The link may get\nbroken when one message is modified in one of the folders.... but\nmaybe not, depending on the folder types involved.\n\nexample:\n\n$folder->addMessage($msg);\n$folder->addMessages($msg1, $msg2, ...);\n\n$obj->addMessages(@messages)\nAdds a set of message objects to the open folder at once.  For some\nfolder types this may be faster than adding them one at a time.\n\nexample:\n\n$folder->addMessages($msg1, $msg2, ...);\n\nMail::Box->appendMessages(%options)\nAppend one or more messages to an unopened folder.  Usually, this\nmethod is called by the Mail::Box::Manager::appendMessage(), in\nwhich case the correctness of the folder type is checked.\n\nFor some folder types it is required to open the folder before it\ncan be used for appending.  This can be fast, but this can also be\nvery slow (depends on the implementation).  All %options passed\nwill also be used to open the folder, if needed.\n\n-Option  --Default\nfolder    <required>\nmessage   undef\nmessages  undef\nshare     <false>\n\nfolder => FOLDERNAME\nThe name of the folder to which the messages are to be appended.\nThe folder implementation will avoid opening the folder when\npossible, because this is resource consuming.\n\nmessage => MESSAGE\nmessages => ARRAY-OF-MESSAGES\nOne reference to a MESSAGE or a reference to an ARRAY of\nMESSAGEs, which may be of any type.  The messages will be first\ncoerced into the correct message type to fit in the folder, and\nthen will be added to it.\n\nshare => BOOLEAN\nTry to share physical storage of the message.  Only available for\na limited number of folder types, otherwise no-op.\n\nexample:\n\nmy $message = Mail::Message->new(...);\nMail::Box::Mbox->appendMessages\n( folder    => '=xyz'\n, message   => $message\n, folderdir => $ENV{FOLDERS}\n);\n\nbetter:\n\nmy Mail::Box::Manager $mgr;\n$mgr->appendMessages($message, folder => '=xyz');\n\n$obj->close(%options)\nClose the folder, which usually implies writing the changes.  This\nwill return \"false\" when writing is required but fails.  Please do\ncheck this result.\n\nWARNING: When moving messages from one folder to another, be sure\nto write the destination folder before writing and closing the\nsource folder.  Otherwise you may lose data if the system crashes\nor if there are software problems.\n\n-Option      --Default\nforce         <false>\nsavedeleted  false\nwrite         MODIFIED\n\nforce => BOOLEAN\nOverride the new(access) setting which was specified when the\nfolder was opened. This option only has an effect if its value is\nTRUE. NOTE: Writing to the folder may not be permitted by the\noperating system, in which case even \"force\" will not help.\n\nsavedeleted => BOOLEAN\nDo also write messages which where flagged to be deleted to their\nfolder.  The flag for deletion is conserved (when possible),\nwhich means that a re-open of the folder may remove the messages\nfor real.  See write(savedeleted).\n\nwrite => 'ALWAYS'|'NEVER'|'MODIFIED'\nSpecifies whether the folder should be written.  As could be\nexpected, \"ALWAYS\" means always (even if there are no changes),\n\"NEVER\" means that changes to the folder will be lost, and\n\"MODIFIED\" only saves the folder if there are any changes.\n\nexample:\n\nmy $f = $mgr->open('spam', access => 'rw')\nor die \"Cannot open spam: $!\\n\";\n\n$f->message(0)->delete\nif $f->messages;\n\n$f->close\nor die \"Couldn't write $f: $!\\n\";\n\n$obj->copyTo($folder, %options)\nCopy the folder's messages to a new folder.  The new folder may be\nof a different type.\n\n-Option       --Default\ndeletecopied  <false>\nselect         'ACTIVE'\nshare          <not used>\nsubfolders     <folder type dependent>\n\ndeletecopied => BOOLEAN\nFlag the messages from the source folder to be deleted, just\nafter it was copied.  The deletion will only take effect when the\noriginating folder is closed.\n\nselect => 'ACTIVE'|'DELETED'|'ALL'|LABEL|!LABEL|FILTER\nWhich messages are to be copied. See the description of\nmessages() about how this works.\n\nshare => BOOLEAN\nTry to share the message between the folders.  Some\nMail::Box::Dir folder types do support it by creating a hardlink\n(on UNIX/Linux).\n\nsubfolders => BOOLEAN|'FLATTEN'|'RECURSE'\nHow to handle sub-folders.  When false (0 or \"undef\"), sub-\nfolders are simply ignored.  With \"FLATTEN\", messages from sub-\nfolders are included in the main copy.  \"RECURSE\" recursively\ncopies the sub-folders as well.  By default, when the destination\nfolder supports sub-folders \"RECURSE\" is used, otherwise\n\"FLATTEN\".  A value of true will select the default.\n\nexample:\n\nmy $mgr  = Mail::Box::Manager->new;\nmy $imap = $mgr->open(type => 'imap', host => ...);\nmy $mh   = $mgr->open(type => 'mh', folder => '/tmp/mh',\ncreate => 1, access => 'w');\n\n$imap->copyTo($mh, deletecopied => 1);\n$mh->close; $imap->close;\n\n$obj->delete(%options)\nRemove the specified folder file or folder directory (depending on\nthe type of folder) from disk.  Of course, THIS IS DANGEROUS: you\n\"may\" lose data.  Returns a \"true\" value on success.\n\nWARNING: When moving messages from one folder to another, be sure\nto write the destination folder before deleting the source folder.\nOtherwise you may lose data if the system crashes or if there are\nsoftware problems.\n\n-Option   --Default\nrecursive  1\n\nrecursive => BOOLEAN\n\nexample: removing an open folder\n\nmy $folder = Mail::Box::Mbox->new(folder => 'InBox', access => 'rw');\n... some other code ...\n$folder->delete;\n\nexample: removing an closed folder\n\nmy $folder = Mail::Box::Mbox->new(folder => 'INBOX', access => 'd');\n$folder->delete;\n\n$obj->folderdir( [$directory] )\nGet or set the $directory which is used to store mail-folders by\ndefault.\n\nexample:\n\nprint $folder->folderdir;\n$folder->folderdir(\"$ENV{HOME}/nsmail\");\n\n$obj->name()\nReturns the name of the folder.  What the name represents depends\non the actual type of mailbox used.\n\nexample:\n\nprint $folder->name;\nprint \"$folder\";       # overloaded stringification\n\n$obj->organization()\nReturns how the folder is organized: as one \"FILE\" with many\nmessages, a \"DIRECTORY\" with one message per file, or by a \"REMOTE\"\nserver.\n\n$obj->size()\nReturns the size of the folder in bytes, not counting in the\ndeleted messages.  The error in the presented result may be as\nlarge as 10%, because the in-memory representation of messages is\nnot always the same as the size when they are written.\n\n$obj->type()\nReturns a name for the type of mail box.  This can be \"mbox\", \"mh\",\n\"maildir\", or \"pop3\".\n\n$obj->update(%options)\nRead new messages from the folder, which where received after\nopening it. This is quite dangerous and shouldn't be possible:\nfolders which are open are locked. However, some applications do\nnot use locks or the wrong kind of locks. This method reads the\nchanges (not always failsafe) and incorporates them in the open\nfolder administration.\n\nThe %options are extra values which are passed to the\nupdateMessages() method which is doing the actual work here.\n\n$obj->url()\nRepresent the folder as a URL (Universal Resource Locator) string.\nYou may pass such a URL as folder name to\nMail::Box::Manager::open().\n\nexample:\n\nprint $folder->url;\n# may result in\n#   mbox:/var/mail/markov   or\n#   pop3://user:password@pop.aol.com:101\n\nFolder flags\n$obj->access()\nReturns the access mode of the folder, as set by new(access)\n\n$obj->isModified()\nChecks if the folder, as stored in memory, is modified.  A true\nvalue is returned when any of the messages is to be deleted, has\nchanged, or messages were added after the folder was read from\nfile.\n\nWARNING: this flag is not related to an external change to the\nfolder structure on disk.  Have a look at update() for that.\n\n$obj->modified( [BOOLEAN] )\nSets whether the folder is modified or not.\n\n$obj->writable()\nChecks whether the current folder is writable.\n\nexample:\n\n$folder->addMessage($msg) if $folder->writable;\n\nThe messages\n$obj->current( [$number|$message|$messageid] )\nSome mail-readers keep the current message, which represents the\nlast used message.  This method returns [after setting] the current\nmessage.  You may specify a $number, to specify that that message\nnumber is to be selected as current, or a $message/$messageid (as\nlong as you are sure that the header is already loaded, otherwise\nthey are not recognized).\n\nexample:\n\n$folder->current(0);\n$folder->current($message);\n\n$obj->find($messageid)\nLike messageId(), this method searches for a message with the\n$messageid, returning the corresponding message object.  However,\n\"find\" will cause unparsed message in the folder to be parsed until\nthe message-id is found.  The folder will be scanned back to front.\n\n$obj->findFirstLabeled( $label, [BOOLEAN, [$msgs]] )\nFind the first message which has this $label with the correct\nsetting. The BOOLEAN indicates whether any true value or any false\nvalue is to be found in the ARRAY of $msgs.  By default, a true\nvalue is searched for.  When a message does not have the requested\nlabel, it is taken as false.\n\nexample: looking for a labeled message\n\nmy $current = $folder->findFirstLabeled('current');\n\nmy $first   = $folder->findFirstLabeled(seen => 0);\n\nmy $last    = $folder->findFirstLabeled(seen => 0,\n[ reverse $self->messages('ACTIVE') ] )\n\n$obj->message( $index, [$message] )\nGet or set a message with on a certain index.  Messages which are\nflagged for deletion are counted.  Negative indexes start at the\nend of the folder.\n\nexample:\n\nmy $msg = $folder->message(3);\n$folder->message(3)->delete;   # status changes to `deleted'\n$folder->message(3, $msg);\nprint $folder->message(-1);    # last message.\n\n$obj->messageId( $messageid, [$message] )\nWith one argument, returns the message in the folder with the\nspecified $messageid. If a reference to a message object is passed\nas the optional second argument, the message is first stored in the\nfolder, replacing any existing message whose message ID is\n$messageid. (The message ID of $message need not match\n$messageid.)\n\n!!WARNING!!: when the message headers are delay-parsed, the message\nmight be in the folder but not yet parsed into memory. In this\ncase, use find() instead of \"messageId()\" if you really need a\nthorough search.  This is especially the case for directory\norganized folders without special indexi, like Mail::Box::MH.\n\nThe $messageid may still be in angles, which will be stripped.  In\nthat case blanks (which origin from header line folding) are\nremoved too.  Other info around the angles will be removed too.\n\nexample:\n\nmy $msg = $folder->messageId('<complex-message.id>');\n$folder->messageId(\"<complex-message\\n.id>\", $msg);\nmy $msg = $folder->messageId('complex-message.id');\nmy $msg = $folder->messageId('garbage <complex-message.id> trash');\n\n$obj->messageIds()\nReturns a list of all message-ids in the folder, including those of\nmessages which are to be deleted.\n\nFor some folder-types (like MH), this method may cause all message-\nfiles to be read.  See their respective manual pages.\n\nexample:\n\nforeach my $id ($folder->messageIds) {\n$folder->messageId($id)->print;\n}\n\n$obj->messages( <'ALL'|$range|'ACTIVE'|'DELETED'|$label|\n!$label|$filter> )\nReturns multiple messages from the folder.  The default is \"ALL\"\nwhich will return (as expected maybe) all the messages in the\nfolder.  The \"ACTIVE\" flag will return the messages not flagged for\ndeletion.  This is the opposite of \"DELETED\", which returns all\nmessages from the folder which will be deleted when the folder is\nclosed.\n\nYou may also specify a $range: two numbers specifying begin and end\nindex in the array of messages.  Negative indexes count from the\nend of the folder.  When an index is out-of-range, the returned\nlist will be shorter without complaints.\n\nEverything else than the predefined names is seen as labels.  The\nmessages which have that label set will be returned.  When the\nsequence starts with an exclamation mark (!), the search result is\nreversed.\n\nFor more complex searches, you can specify a $filter, which is\nsimply a code reference.  The message is passed as only argument.\n\nexample:\n\nforeach my $message ($folder->messages) {...}\nforeach my $message (@$folder) {...}\n\n# twice the same\nmy @messages   = $folder->messages;\nmy @messages   = $folder->messages('ALL');\n\n# Selection based on a range (begin, end)\nmy $subset     = $folder->messages(10,-8);\n\n# twice the same:\nmy @notdeleted= grep {not $->isDeleted}\n$folder->messages;\nmy @notdeleted= $folder->messages('ACTIVE');\n\n# scalar context the number of messages\nmy $nrofmsgs = $folder->messages;\n\n# third message, via overloading\n$folder->[2];\n\n# Selection based on labels\n$mgr->moveMessages($spam, $inbox->message('spam'));\n$mgr->moveMessages($archive, $inbox->message('seen'));\n\n$obj->nrMessages(%options)\nSimply calls messages() in scalar context to return a count instead\nof the messages itself.  Some people seem to understand this\nbetter.  Note that nrMessages() will default to returning a count\nof \"ALL\" messages in the folder, including both \"ACTIVE\" and\n\"DELETED\".\n\nThe %options are passed to (and explained in) messages().\n\n$obj->scanForMessages($message, $messageids, $timespan, $window)\nYou start with a $message, and are looking for a set of messages\nwhich are related to it.  For instance, messages which appear in\nthe 'In-Reply-To' and 'Reference' header fields of that message.\nThese messages are known by their $messageids and you want to find\nthem in the folder.\n\nWhen all message-ids are known, then looking-up messages is simple:\nthey are found in a plain hash using messageId().  But Mail::Box is\nlazy where it can, so many messages may not have been read from\nfile yet, and that's the preferred situation, because that saves\ntime and memory.\n\nIt is not smart to search for the messages from front to back in\nthe folder: the chances are much higher that related message reside\nclosely to each other.  Therefore, this method starts scanning the\nfolder from the specified $message, back to the front of the\nfolder.\n\nThe $timespan can be used to terminate the search based on the time\nenclosed in the message.  When the constant string \"EVER\" is used\nas $timespan, then the search is not limited by that.  When an\ninteger is specified, it will be used as absolute time in time-\nticks as provided by your platform dependent \"time\" function.  In\nother cases, it is passed to timespan2seconds() to determine the\nthreshold as time relative to the message's time.\n\nThe $window is used to limit the search in number of messages to be\nscanned as integer or constant string \"ALL\".\n\nReturned are the message-ids which were not found during the scan.\nBe warned that a message-id could already be known and therefore\nnot found: check that first.\n\nexample: scanning through a folder for a message\n\nmy $refs   = $msg->get('References') or return;\nmy @msgids = $ref =~ m/\\<([^>]+\\>/g;\nmy @failed = $folder->scanForMessages($msg, \\@msgids, '3 days', 50);\n\nSub-folders\n$obj->listSubFolders(%options)\nMail::Box->listSubFolders(%options)\nList the names of all sub-folders to this folder, not recursively\ndecending.  Use these names as argument to openSubFolder(), to get\naccess to that folder.\n\nFor MBOX folders, sub-folders are simulated.\n\n-Option    --Default\ncheck       <false>\nfolder      <from calling object>\nfolderdir   <from folder>\nskipempty  <false>\n\ncheck => BOOLEAN\nShould all returned foldernames be checked to be sure that they\nare of the right type?  Each sub-folder may need to be opened to\ncheck this, with a folder type dependent penalty (in some cases\nvery expensive).\n\nfolder => FOLDERNAME\nThe folder whose sub-folders should be listed.\n\nfolderdir => DIRECTORY\nskipempty => BOOL\nShall empty folders (folders which currently do not contain any\nmessages) be included?  Empty folders are not useful to open, but\nmay be useful to save to.\n\nexample:\n\nmy $folder = $mgr->open('=in/new');\nmy @subs = $folder->listSubFolders;\n\nmy @subs = Mail::Box::Mbox->listSubFolders(folder => '=in/new');\nmy @subs = Mail::Box::Mbox->listSubFolders; # toplevel folders.\n\n$obj->nameOfSubFolder( $subname, [$parentname] )\nMail::Box->nameOfSubFolder( $subname, [$parentname] )\nReturns the constructed name of the folder with NAME, which is a\nsub-folder of this current one.  You have either to call this\nmethod as instance method, or specify a $parentname.\n\nexample: how to get the name of a subfolder\n\nmy $sub = Mail::Box::Mbox->nameOfSubfolder('xyz', 'abc');\nprint $sub;                        # abc/xyz\n\nmy $f = Mail::Box::Mbox->new(folder => 'abc');\nprint $f->nameOfSubfolder('xyz');  # abc/xyz\n\nmy $sub = Mail::Box::Mbox->nameOfSubfolder('xyz', undef);\nprint $sub;                        # xyz\n\n$obj->openRelatedFolder(%options)\nOpen a folder (usually a sub-folder) with the same options as this\none.  If there is a folder manager in use, it will be informed\nabout this new folder.  %options overrule the options which where\nused for the folder this method is called upon.\n\n$obj->openSubFolder($subname, %options)\nOpen (or create, if it does not exist yet) a new subfolder in an\nexisting folder.\n\nexample:\n\nmy $folder = Mail::Box::Mbox->new(folder => '=Inbox');\nmy $sub    = $folder->openSubFolder('read');\n\n$obj->topFolderWithMessages()\nMail::Box->topFolderWithMessages()\nSome folder types can have messages in the top-level folder, some\nother can't.\n\nInternals\n$obj->coerce($message, %options)\nCoerce the $message to be of the correct type to be placed in the\nfolder.  You can specify Mail::Internet and MIME::Entity objects\nhere: they will be translated into Mail::Message messages first.\n\n$obj->create($foldername, %options)\nMail::Box->create($foldername, %options)\nCreate a folder.  If the folder already exists, it will be left\nunchanged.  The folder is created, but not opened!  If you want to\nopen a file which may need to be created, then use\nMail::Box::Manager::open() with the create flag, or\nMail::Box::new(create).\n\n-Option   --Default\nfolderdir  undef\n\nfolderdir => DIRECTORY\nWhen the foldername is preceded by a \"=\", the \"folderdir\"\ndirectory will be searched for the named folder.\n\n$obj->determineBodyType($message, $head)\nDetermine which kind of body will be created for this message when\nreading the folder initially.\n\nMail::Box->foundIn( [$foldername], %options )\nDetermine if the specified folder is of the type handled by the\nfolder class. This method is extended by each folder sub-type.\n\nThe $foldername specifies the name of the folder, as is specified\nby the application.  You need to specified the \"folder\" option when\nyou skip this first argument.\n\n%options is a list of extra information for the request.  Read the\ndocumentation for each type of folder for type specific options,\nbut each folder class will at least support the \"folderdir\" option:\n\n-Option   --Default\nfolderdir  undef\n\nfolderdir => DIRECTORY\nThe location where the folders of this class are stored by\ndefault.  If the user specifies a name starting with a \"=\", that\nindicates that the folder is to be found in this default\nDIRECTORY.\n\nexample:\n\nMail::Box::Mbox->foundIn('=markov',\nfolderdir => \"$ENV{HOME}/Mail\");\nMail::Box::MH->foundIn(folder => '=markov');\n\n$obj->lineSeparator( [<STRING|'CR'|'LF'|'CRLF'>] )\nReturns the character or characters used to separate lines in the\nfolder file, optionally after setting it to STRING, or one of the\nconstants.  The first line of the folder sets the default.\n\nUNIX uses a LF character, Mac a CR, and Windows both a CR and a LF.\nEach separator will be represented by a \"\\n\" within your program.\nHowever, when processing platform foreign folders, complications\nappear.  Think about the \"Size\" field in the header.\n\nWhen the separator is changed, the whole folder me be rewritten.\nAlthough, that may not be required.\n\n$obj->locker()\nReturns the locking object.\n\n$obj->read(%options)\nRead messages from the folder into memory.  The %options are folder\nspecific.  Do not call \"read()\" yourself: it will be called for you\nwhen you open the folder via the manager or instantiate a folder\nobject directly.\n\nNOTE: if you are copying messages from one folder to another, use\naddMessages() instead of \"read()\".\n\nexample:\n\nmy $mgr = Mail::Box::Manager->new;\nmy $folder = $mgr->open('InBox');             # implies read\nmy $folder = Mail::Box::Mbox->new(folder => 'Inbox'); # same\n\n$obj->readMessages(%options)\nCalled by read() to actually read the messages from one specific\nfolder type.  The read() organizes the general activities.\n\nThe %options are \"trusted\", \"headtype\", \"fieldtype\",\n\"messagetype\", \"bodydelayedtype\", and \"headdelayedtype\" as\ndefined by the folder at hand.  The defaults are the constructor\ndefaults (see new()).\n\n$obj->storeMessage($message)\nStore the message in the folder without the checks as performed by\naddMessage().\n\n$obj->toBeThreaded($messages)\nThe specified message is ready to be removed from a thread.  This\nwill be passed on to the mail-manager, which keeps an overview on\nwhich thread-detection objects are floating around.\n\n$obj->toBeUnthreaded($messages)\nThe specified message is ready to be included in a thread.  This\nwill be passed on to the mail-manager, which keeps an overview on\nwhich thread-detection objects are floating around.\n\n$obj->updateMessages(%options)\nCalled by update() to read messages which arrived in the folder\nafter it was opened.  Sometimes, external applications dump\nmessages in a folder without locking (or using a different lock\nthan your application does).\n\nAlthough this is quite a dangerous, it only fails when a folder is\nupdated (reordered or message removed) at exactly the same time as\nnew messages arrive.  These collisions are sparse.\n\nThe options are the same as for readMessages().\n\n$obj->write(%options)\nWrite the data to disk.  The folder (a \"true\" value) is returned if\nsuccessful.  Deleted messages are transformed into destroyed\nmessages: their memory is freed.\n\nWARNING: When moving messages from one folder to another, be sure\nto write (or close()) the destination folder before writing (or\nclosing) the source folder: otherwise you may lose data if the\nsystem crashes or if there are software problems.\n\nTo write a folder to a different file, you must first create a new\nfolder, then move all the messages, and then write or close() that\nnew folder.\n\n-Option      --Default\nforce         <false>\nsavedeleted  <false>\n\nforce => BOOLEAN\nOverride write-protection with new(access) while opening the\nfolder (whenever possible, it may still be blocked by the\noperating system).\n\nsavedeleted => BOOLEAN\nDo also write messages which where flagged to be deleted to their\nfolder.  The flag for deletion is conserved (when possible),\nwhich means that a re-open of the folder may remove the messages\nfor real.  See close(savedeleted).\n\n$obj->writeMessages(%options)\nCalled by write() to actually write the messages from one specific\nfolder type.  The \"write\" organizes the general activities.  All\noptions to write() are passed to \"writeMessages\" as well.  Besides,\na few extra are added by \"write\" itself.\n\n-Option  --Default\nmessages  <required>\n\nmessages => ARRAY\nThe messages to be written, which is a sub-set of all messages in\nthe current folder.\n\nOther methods\n$obj->timespan2seconds($time)\nMail::Box->timespan2seconds($time)\n$time is a string, which starts with a float, and then one of the\nwords 'hour', 'hours', 'day', 'days', 'week', or 'weeks'.  For\ninstance: '1 hour' or '4 weeks'.\n\nError handling\nExtends \"Error handling\" in Mail::Reporter.\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,\n$callback] )\nMail::Box->defaultTrace( [$level]|[$loglevel, $tracelevel]|[$level,\n$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->log( [$level, [$strings]] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->logPriority($level)\nMail::Box->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\nCleanup\nExtends \"Cleanup\" in Mail::Reporter.\n\n$obj->DESTROY()\nThis method is called by Perl when an folder-object is no longer\naccessible by the rest of the program.\n",
                "subsections": []
            },
            "DETAILS": {
                "content": "Different kinds of folders\nIn general, there are three classes of folders: those who group\nmessages per file, those who group messages in a directory, and those\ndo not provide direct access to the message data.  These folder types\nare each based on a different base class.\n\no   File based folders Mail::Box::File\n\nFile based folders maintain a folder (a set of messages) in one\nsingle file.  The advantage is that your folder has only one single\nfile to access, which speeds-up things when all messages must be\naccessed at once.\n\nOne of the main disadvantages over directory based folders is that\nyou have to construct some means to keep all message apart.  For\ninstance MBOX adds a message separator line between the messages in\nthe file, and this line can cause confusion with the message's\ncontents.\n\nWhere access to all messages at once is faster in file based\nfolders, access to a single message is (much) slower, because the\nwhole folder must be read.  However, in directory based folders you\nhave to figure-out which message you need, which may be a hassle as\nwell.\n\nExamples of file based folders are MBOX, DBX, and NetScape.\n\no   Directory based folders Mail::Box::Dir\n\nIn stead of collecting multiple messages in one file, you can also\nput each message in a separate file and collect those files in a\ndirectory to represent a folder.\n\nThe main disadvantages of these folders are the enormous amount of\ntiny files you usually get in your file-system.  It is extremely\nslow to search through your whole folder, because many files have\nto be opened to do so.\n\nThe best feature of this organization is that each message is kept\nexactly as it was received, and can be processed with external\nscripts as well: you do not need any mail user agent (MUA).\n\nExamples of directory organized folders are MH, Maildir, EMH and\nXMH.\n\no   Network (external) folders Mail::Box::Net\n\nWhere both types described before provide direct access to the\nmessage data, maintain these folder types the message data for you:\nyou have to request for messages or parts of them.  These folders\ndo not have a filename, file-system privileges and system locking\nto worry about, but typically require a hostname, folder and\nmessage IDs, and authorization.\n\nExamples of these folder types are the popular POP and IMAP, and\ndatabase oriented message storage.\n\nAvailable folder types\no   Mail::Box::Dbx (read only)\n\nDbx files are created by Outlook Express. Using the external\n(optional) Mail::Transport::Dbx module, you can read these folders,\neven when you are running MailBox on a UNIX/Linux platform.\n\nWriting and deleting messages is not supported by the library, and\ntherefore not by MailBox. Read access is enough to do folder\nconversions, for instance.\n\no   Mail::Box::IMAP4 (partially)\n\nThe IMAP protocol is very complex.  Some parts are implemented to\ncreate (sub-optimal but usable) IMAP clients.  Besides, there are\nalso some parts for IMAP servers present.  The most important\nlacking feature is support for encrypted connections.\n\no   Mail::Box::Maildir\n\nMaildir folders have a directory for each folder.  A folder\ndirectory contains \"tmp\", \"new\", and \"cur\" sub-directories, each\ncontaining messages with a different purpose.  Files with new\nmessages are created in \"tmp\", then moved to \"new\" (ready to be\naccepted).  Later, they are moved to the \"cur\" directory\n(accepted).  Each message is one file with a name starting with\ntimestamp.  The name also contains flags about the status of the\nmessage.\n\nMaildir folders can not be used on Windows by reason of file-name\nlimitations on that platform.\n\no   Mail::Box::Mbox\n\nA folder type in which all related messages are stored in one file.\nThis is a very common folder type for UNIX.\n\no   Mail::Box::MH\n\nThis folder creates a directory for each folder, and a message is\none file inside that directory.  The message files are numbered\nsequentially on order of arrival.  A special \".mhsequences\" file\nmaintains flags about the messages.\n\no   Mail::Box::POP3 (read/delete only)\n\nPOP3 is a protocol which can be used to retrieve messages from a\nremote system.  After the connection to a POP server is made, the\nmessages can be looked at and removed as if they are on the local\nsystem.\n\no   Mail::Box::Netzwert\n\nThe Netzwert folder type is optimized for mailbox handling on a\ncluster of systems with a shared NFS storage.  The code is not\nreleased under GPL (yet)\n\nOther folder types are on the (long) wishlist to get implemented.\nPlease, help implementing more of them.\n\nFolder class implementation\nThe class structure of folders is very close to that of messages.  For\ninstance, a Mail::Box::File::Message relates to a Mail::Box::File\nfolder.  The folder types are:\n\nMail::Box::Netzwert\nMail::Box::Mbox   | Mail::Box::Maildir Mail::Box::POP3\n|  Mail::Box::Dbx | | Mail::Box::MH    |  Mail::Box::IMAP4\n|  |               | | |                 |  |\n|  |               | | |                 |  |\nMail::Box::File   Mail::Box::Dir       Mail::Box::Net\n|                  |                   |\n`--------------.   |   .---------------'\n|   |   |\nMail::Box\n|\n|\nMail::Reporter (general base class)\n\nBy far most folder features are implemented in Mail::Box, so available\nto all folder types.  Sometimes, features which appear in only some of\nthe folder types are simulated for folders that miss them, like sub-\nfolder support for MBOX.\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\nnew(access)--, made modifications, and now want to close it.  Set\nclose(force) if you want to overrule the access mode, or close the\nfolder with close(write) set to \"NEVER\".\n\nError: Copying failed for one message.\nFor some reason, for instance disc full, removed by external\nprocess, or read-protection, it is impossible to copy one of the\nmessages.  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\nwrite access (see new(access)).  This has no relation with write\npermission to the folder which is controlled by your operating\nsystem.\n\nWarning: Different messages with id $msgid\nThe message id is discovered more than once within the same folder,\nbut the content of the message seems to be different.  This should\nnot 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\nto write or append with new(access), or the \"force\" option is set\ntrue.\n\nError: Folder $name not deleted: not writable.\nThe folder must be opened with write access via new(access),\notherwise removing it will be refused.  So, you may have write-\naccess according to the operating system, but that will not\nautomatically mean that this \"delete\" method permits you to.  The\nreverse remark is valid as well.\n\nError: Invalid timespan '$timespan' specified.\nThe string does not follow the strict rules of the time span syntax\nwhich is permitted as parameter.\n\nWarning: Message-id '$msgid' does not contain a domain.\nAccording to the RFCs, message-ids need to contain a unique random\npart, then an \"@\", and then a domain name.  This is made to avoid\nthe creation of two messages with the same id.  The warning emerges\nwhen the \"@\" is missing from the string.\n\nError: No folder name specified.\nYou did not specify the name of a folder to be opened.  Use the\nnew(folder) option or set the \"MAIL\" environment variable.\n\nError: Package $package does not implement $method.\nFatal error: the specific package (or one of its superclasses) does\nnot implement this method where it should. This message means that\nsome other related classes do implement this method however the\nclass at hand does not.  Probably you should investigate this and\nprobably inform 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\npossible to copy one of these.  Copying will proceed for all other\nsub-folders.\n\nError: Writing folder $name failed\nFor some reason (you probably got more error messages about this\nproblem) it is impossible to write the folder, although you should\nbecause there were changes made.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "This module is part of Mail-Box distribution version 3.009, built on\nAugust 18, 2020. Website: http://perl.overmeer.net/CPAN/\n",
                "subsections": []
            },
            "LICENSE": {
                "content": "Copyrights 2001-2020 by [Mark Overmeer]. For other contributors see\nChangeLog.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the same terms as Perl itself.  See http://dev.perl.org/licenses/\n\nperl v5.30.3                      2020-08-20                    Mail::Box(3pm)",
                "subsections": []
            }
        }
    }
}