The contained message replaces the message/rfc822 entity, as though the message/rfc822 "container" never existed. You can recover the sub-entity by invoking the parts() method on the message/rfc822 entity. The contained message becomes the sole "part" of the message/rfc822 entity (as if the containing message were a special kind of "multipart" message). What happens then is determined by the actual OPTION: NEST or 1 If the OPTION is true (the default), the body of the message/rfc822 or message/partial part is parsed by this parser, creating an entity object. If the OPTION is false, we treat such a message just as if it were a text/plain document, without attempting to decode its contents. This option controls whether (and how) we parse that embedded message. Some MIME messages will contain a part of type message/rfc822, message/partial or message/external-body: literally, the text of an embedded mail/news/whatever message. Remember: you can always decode the headers after the parsing has completed (see MIME::Head::decode()), or decode the words on demand (see MIME::Words). With no argument, just returns the current setting. If YESNO is false (the default), no attempt at decoding will be done. Provided for those who REALLY know what they are doing. Provided only for those who need to keep old scripts functioning. However, you will get a warning unless you use one of the special "true" values: "I_NEED_TO_FIX_THIS" However, since MIME-tools 5.4xx this is no longer necessary. This method was once the only out-of-the-box way to deal with attachments whose filenames had non-ASCII characters. An encoded string which contains both Latin-1 and Cyrillic characters will be turned into a binary mishmosh which simply can't be rendered. Into unparseable gobbledygook in this case: Content-type: text/plain filename="Hi"Ho" If you fully decode the headers into bytes, you can inadvertently transform a parseable MIME header like this: Content-type: text/plain filename="=?ISO-8859-1?Q?Hi=22Ho?=" It screws up the extraction of information from MIME fields. This is not advisable for two very important reasons: Controls whether the parser will attempt to decode all the MIME headers (as per RFC 2047) the moment it sees them. Altering how messages are parsed decode_headers Invoked automatically whenever one of the top-level parse() methods is called, to reset the parser to a "ready" state. If you override this, be sure to invoke the inherited method. This is automatically sent to a new object you may want to override it. Don't override this in your subclasses override init() instead. For example: my $parser = new MIME::Parser Īny arguments are passed into init(). Once you do this, you can then set up various parameters before doing the actual parsing. PUBLIC INTERFACE Construction new ARGS.Ĭlass method. You can inherit from this class to create your own subclasses that parse MIME streams into MIME::Entity objects. My $data = join('', "\n", = $parser->parse_data(\$data) DESCRIPTION $parser->ignore_errors(0) # default is true Miscellaneous examples # Convert a Mail::Internet object to a MIME::Entity: # Should we forgive normally-fatal errors? $parser->extract_uuencode(1) # default is false # Look for uuencode in "text" messages, and extract it? $parser->extract_nested_messages(0) # default is true # Parse contained "message/rfc822" objects as nested MIME streams? $parser->decode_headers(1) # default is false $parser->filer->purge Examples of parser options # Automatically attempt to RFC 2047-decode the MIME headers? $parser->tmp_dir("/var/tmp/mytmpdir") Examples of error recovery # Normal mechanism:Įval # Change how nameless message-component files are named: # Output each message body to the same directory: # Output each message body to a one-per-message directory: $entity = $parser->parse_open("gunzip - parse_two("msg.head", "msg.body") Examples of output control # Keep parsed message bodies in core (default outputs to disk): # Parse an MIME message out of a pipeline: $entity = $parser->parse_open("/some/file.msg") # Parse from any object that supports getline() and read(): $entity = $parser->parse(IO::File->new("some command|") $entity->dump_skeleton # for debugging Examples of input # Parse from filehandles: # Congratulations: you now have a (possibly multipart) MIME entity! Basic usage examples # Create a new parser object: MIME::Parser - experimental class for parsing MIME streams SYNOPSISīefore reading further, you should see MIME::Tools to make sure that you understand where this module fits into the grand scheme of things.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |