Mail::Box::POP3s(3pm)
π¦ Mail::Box::POP3s β the secure-POP3-folder-as-a-client page, bestie edition π
okay so before anything: this is the manual for Mail::Box::POP3s(3pm), from the User Contributed Perl Documentation section. Sit down, hydrate, we're doing the whole thing. β¨
πΈ NAME πΈ
Mail::Box::POP3s β handle secure POP3 folders as client. That's the whole vibe: it's the POP3 folder handler, but with the secure, SSL/TLS glow-up. π
π INHERITANCE π
bestie this is a whole family tree, look:
Mail::Box::POP3s
is a Mail::Box::POP3
is a Mail::Box::Net
is a Mail::Box
is a Mail::Reporter
So she is her mother, who is her mother, etc. Generational excellence. π
β¨ SYNOPSIS β¨
the two lines that get you started, no notes:
use Mail::Box::POP3s;
my $folder = Mail::Box::POP3s->new(folder => $ENV{MAIL}, ...);
π DESCRIPTION π
So the tea is: this module mainly extends Mail::Box::POP3. That's it, that's the whole description β she takes everything from POP3 and makes it secure.
It extends "DESCRIPTION" in Mail::Box::POP3. (So if you want the real lore, that's where it lives, iykyk.) π«Ά
π¦ OVERLOADED π¦
Extends "OVERLOADED" in Mail::Box::POP3.
- overload:
'""'stringification β inherited, see"OVERLOADED"inMail::Box. You can just print her, she'll show up cute. π - overload:
'@{}'use as ARRAY β inherited, see"OVERLOADED"inMail::Box. Slap@{}on her and treat her like an array. - overload:
cmpstring comparison β inherited, see"OVERLOADED"inMail::Box. Compare her withcmp, she will not be weird about it.
π METHODS π
Extends "METHODS" in Mail::Box::POP3. So everything below is the POP3s flavor of the same menu. π
π§ Constructors π§
Extends "Constructors" in Mail::Box::POP3.
$class->new(%options)
Inherited, see "METHODS" in Mail::Box::POP3. So you throw a big ol' pile of options at her and she builds a folder. Here's the entire options table, and I mean entire, every single one, don't skip:
accessβ defined inMail::Box, default'r'authenticateβ defined inMail::Box::POP3, default'AUTO'body_delayed_typeβ defined inMail::Box, defaultMail::Message::Body::Delayedbody_typeβ defined inMail::Box, defaultMail::Message::Body::Linescoerce_optionsβ defined inMail::Box, default+[]createβ defined inMail::Box, default<not applicable>extractβ defined inMail::Box, default10240field_typeβ defined inMail::Box, defaultundeffix_headersβ defined inMail::Box, defaultfalsefolderβ defined inMail::Box, default<not applicable>folderdirβ defined inMail::Box, default<network location>head_delayed_typeβ defined inMail::Box, defaultMail::Message::Head::Delayedhead_typeβ defined inMail::Box, defaultMail::Message::Head::Completekeep_dupsβ defined inMail::Box, defaultfalselock_fileβ defined inMail::Box, defaultundeflock_timeoutβ defined inMail::Box, default1 hourlock_typeβ defined inMail::Box, default'NONE'lock_waitβ defined inMail::Box, default10 secondslockerβ defined inMail::Box, defaultundefmanagerβ defined inMail::Box, defaultundefmessage_typeβ defined inMail::Box, defaultMail::Box::POP3::Messagemultipart_typeβ defined inMail::Box, defaultMail::Message::Body::Multipartpasswordβ defined inMail::Box::Net, defaultundefpop_clientβ defined inMail::Box::POP3, defaultundefremove_when_emptyβ defined inMail::Box, default<false>save_on_exitβ defined inMail::Box, defaulttrueserver_nameβ defined inMail::Box::Net, defaultundefserver_portβ defined inMail::Box::Net, default995ssl_optionsβ defined inMail::Box::POP3, defaultundeftrustedβ defined inMail::Box, default<false>use_sslβ defined inMail::Box::POP3, defaultfalseusernameβ defined inMail::Box::Net, defaultundef
And now the same options again, but as the shapes they take, because yes there are two lists and both are real:
access => $modeauthenticate => 'LOGIN'|'APOP'|'AUTO'|'OUATH2'|'OAUTH2_SEP'body_delayed_type => CLASSbody_type => CLASS|CODEcoerce_options => ARRAYcreate => BOOLEANextract => INTEGER|CODE|METHOD|'LAZY'|'ALWAYS'field_type => $classfix_headers => BOOLEANfolder => $namefolderdir => $directoryhead_delayed_type => $classhead_type => $classkeep_dups => BOOLEANlock_file => $filelock_timeout => $secondslock_type => $class|$name|\@nameslock_wait => $secondslocker => $lockermanager => $managermessage_type => $classmultipart_type => CLASSpassword => $passwordpop_client => OBJECTremove_when_empty => BOOLEANsave_on_exit => BOOLEANserver_name => $hostserver_port => $numberssl_options => HASHtrusted => BOOLEANuse_ssl => BOOLEANusername => $username
ngl that's a lot of knobs and it is not my job to explain each one here β each of them is documented on the page it says it's inherited from. Go read those, bestie, they're not that scary. π
π§Έ Attributes π§Έ
Extends "Attributes" in Mail::Box::POP3.
$obj->fixHeaders()β inherited, see"Attributes"inMail::Box$obj->folderdir( [$directory] )β inherited, see"Attributes"inMail::Box$obj->isTrusted()β inherited, see"Attributes"inMail::Box$obj->name()β inherited, see"Attributes"inMail::Box$obj->removeEmpty()β inherited, see"Attributes"inMail::Box$obj->type()β inherited, see"Attributes"inMail::Box
π The folder π
Extends "The folder" in Mail::Box::POP3.
$obj->addMessage($message)β inherited, see"METHODS"inMail::Box::POP3$obj->addMessages($messages)β inherited, see"METHODS"inMail::Box::POP3$class->appendMessages(%options)β inherited, see"The folder"inMail::Box$obj->close(%options)β inherited, see"The folder"inMail::Box$obj->copyTo($folder, %options)β inherited, see"The folder"inMail::Box$obj->delete(%options)β inherited, see"METHODS"inMail::Box::POP3$obj->organization()β inherited, see"The folder"inMail::Box$obj->size()β inherited, see"The folder"inMail::Box$obj->update()β inherited, see"METHODS"inMail::Box::POP3$obj->url()β inherited, see"The folder"inMail::Box
π© Folder flags π©
Extends "Folder flags" in Mail::Box::POP3.
$obj->access()β inherited, see"Folder flags"inMail::Box$obj->isModified()β inherited, see"Folder flags"inMail::Box$obj->modified( [BOOLEAN] )β inherited, see"Folder flags"inMail::Box$obj->writable()β inherited, see"Folder flags"inMail::Box
π¬ The messages π¬
Extends "The messages" in Mail::Box::POP3.
$obj->current( [$number|$message|$message_id] )β inherited, see"The messages"inMail::Box$obj->find($message_id)β inherited, see"The messages"inMail::Box$obj->findFirstLabeled( $label, [BOOLEAN, [\@msgs]] )β inherited, see"The messages"inMail::Box$obj->message( $index, [$message] )β inherited, see"The messages"inMail::Box$obj->messageId( $message_id, [$message] )β inherited, see"The messages"inMail::Box$obj->messageIds()β inherited, see"The messages"inMail::Box$obj->messages( <'ALL'|$range|'ACTIVE'|'DELETED'|$label|!$label|$filter> )β inherited, see"The messages"inMail::Box
the full signature, wrapped exactly like the original wraps it:
$obj->messages( <'ALL'|$range|'ACTIVE'|'DELETED'|$label|
!$label|$filter> )
$obj->nrMessages(%options)β inherited, see"The messages"inMail::Box$obj->scanForMessages($message, $message_ids, $timespan, $window)β inherited, see"The messages"inMail::Box
ποΈ Sub-folders ποΈ
Extends "Sub-folders" in Mail::Box::POP3.
$any->listSubFolders(%options)β inherited, see"METHODS"inMail::Box::POP3$any->nameOfSubFolder( $subname, [$parentname] )β inherited, see"Sub-folders"inMail::Box$obj->openRelatedFolder(%options)β inherited, see"Sub-folders"inMail::Box$obj->openSubFolder(%options)β inherited, see"METHODS"inMail::Box::POP3$any->topFolderWithMessages()β inherited, see"Sub-folders"inMail::Box
π§ Internals π§
Extends "Internals" in Mail::Box::POP3.
$obj->coerce($message, %options)β inherited, see"Internals"inMail::Box$any->create($folder, %options)β inherited, see"METHODS"inMail::Box::POP3$obj->determineBodyType($message, $head)β inherited, see"Internals"inMail::Box$class->foundIn( [$foldername], %options )β inherited, see"Internals"inMail::Box$obj->getHead($message)β inherited, see"Internals"inMail::Box::POP3$obj->getHeadAndBody($message)β inherited, see"Internals"inMail::Box::POP3$obj->lineSeparator( [<STRING|'CR'|'LF'|'CRLF'>] )β inherited, see"Internals"inMail::Box$obj->locker()β inherited, see"Internals"inMail::Box$obj->popClient(%options)β inherited, see"Internals"inMail::Box::POP3$obj->read(%options)β inherited, see"Internals"inMail::Box$obj->readMessages(%options)β inherited, see"Internals"inMail::Box$obj->storeMessage($message)β inherited, see"Internals"inMail::Box$obj->toBeThreaded($messages)β inherited, see"Internals"inMail::Box$obj->toBeUnthreaded($messages)β inherited, see"Internals"inMail::Box$obj->updateMessages(%options)β inherited, see"Internals"inMail::Box$obj->write(%options)β inherited, see"Internals"inMail::Box$obj->writeMessages(%options)β inherited, see"Internals"inMail::Box::POP3
π Other methods π
Extends "Other methods" in Mail::Box::POP3.
$any->timespan2seconds($time)β inherited, see"Other methods"inMail::Box
π Error handling π
Extends "Error handling" in Mail::Box::POP3.
$obj->AUTOLOAD()β inherited, see"Error handling"inMail::Reporter$obj->notImplemented()β inherited, see"Error handling"inMail::Reporter
π§Ή Cleanup π§Ή
Extends "Cleanup" in Mail::Box::POP3.
$obj->DESTROY()β inherited, see"Cleanup"inMail::Box
π₯ DETAILS π₯
Extends "DETAILS" in Mail::Box::POP3.
π¨ DIAGNOSTICS π¨
okay bestie, this is the part where the module yells at you. every single one of these is a real message it can throw, so let's go through them one by one, no skipping π
Error: Cannot find head back for $id on POP3 server $name.β the server was like "yep, I totally have this message," but then when we asked for its headers, it returned literally not one single line. did the message get destroyed?? who knows π cast bygetHeadAndBody().Error: Cannot read body for $id on POP3 server $name.β we got the headers off the server just fine, but the body is giving lost-in-the-void. did the message get destroyed somewhere between reading the header and reading the body? cast bygetHeadAndBody().Error: Folder $name is opened read-onlyβ you can't write to this folder unless you opened it for write or append withnew(access), or unless the"force"option is set"true". no keyboard access, no touchy β cast bywrite().Warning: Message $id on POP3 server $name disappeared.β the server was acting like this message existed earlier, but now it has absolutely zero information about it anymore. it ghosted us fr fr π» cast bygetHeadAndBody().Warning: POP3 folders cannot be deleted.β every user has exactly ONE POP3 folder per server, and it's the server's administrator who creates and deletes it, not you. so no, you can't delete it. cast bydelete().Error: cannot create POP3 client for $name.β the connection to the POP3 server could not be established. there may be more related error messages floating around about the failure, so peek at those too. cast bypopClient().Warning: changes not written to read-only folder $name.β you opened the folder read-only (which, fun fact, is the default set bynew(access)), you made modifications anyway, and now you wanna close it?? setclose(force)if you want to overrule the access mode, or close the folder withclose(write)set to"NEVER". cast byclose().Error: class $package does not implement method $method.β serious one: the specific$package(or one of its superclasses) does not implement this method even though it really should. this means some other related classes do implement it, but this class right here does not. probably go investigate and probably tell the author of the package. cast bynotImplemented().Error: copying failed for one message.β for some reason β disk full, removed by an external process, read-protection, whatever β it's impossible to copy one of the messages. the copying will still proceed for all the other messages though. cast bycopyTo().Error: destination folder $name is not writable.β the folder you're copying messages to is not opened with write access (check outnew(access)). this has nothing to do with the write permission on the folder that your operating system controls, so don't get it twisted. cast bycopyTo().Warning: different messages with id $msgid.β we found the same message id more than once inside the same folder, but the content of the messages looks different. this should not be possible: every message must be unique. cast bymessageId().Error: invalid timespan '$span'.β that string does not follow the strict rules of the time span syntax that's permitted as a parameter. cast bytimespan2seconds().Warning: message $id disappeared from POP3 server $name.cast bygetHead().Warning: message-id '$msgid' does not contain a domain.β per the RFCs, message-ids need a unique random part, then an"@", then a domain name. this is done to avoid creating two messages with the same id. the warning pops up when the"@"is missing from the string. cast bymessageId().Error: unknown value to folder->close(write => $when).cast byclose().Warning: update of $count messages ignored for POP3 folder $name.β the standard POP3 implementation does not support writing from the client back to the server, so modifications may be lost. π cast bywriteMessages().Error: you cannot write a message to a pop server (yet)β some extensions to the POP3 protocol do permit writing messages to the server, but the standard protocol only implements retreival. you're warmly invited to extend the implementation with writing though π«Ά cast byaddMessage().Error: you cannot write messages to a pop server (yet)cast byaddMessages().
π SEE ALSO π
this module is part of Mail-Box-POP3 version 4.02, built on April 10, 2026. website: http://perl.overmeer.net/CPAN/ β¨
π LICENSE π
for contributors, see the file ChangeLog.
this software is copyright (c) 2001-2026 by Mark Overmeer. π
this is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. slay π
and that's a wrap bestie π this page was brought to you by Mail-Box-POP3 version 4.02, built April 10, 2026, and it went out into the world on 2026-05-09 riding along with perl v5.40.1. go read your mail, you icon πΈπ¦π
π¦ where this page comes from
- ubuntu stonking: libmail-box-pop3-perl 4.02-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms