Что такое код imap_bodystruct

Содержание

FPublisher

Web-����������: ���� ������

������������ PHP

imap_bodystruct

imap_bodystruct � Read the structure of a specified body section of a specific message

��������

object imap_bodystruct ( resource $imap_stream , int $msg_number , string $section )

Read the structure of a specified body section of a specific message.

������ ����������

An IMAP stream returned by imap_open().

The message number

The body section to read

������������ ��������

Returns the information in an object, for a detailed description of the object structure and properties see imap_fetchstructure().

�������� �����

��������� �����������:

���������� �� �����

��������� 14 ����� 2020 ����

�p���� Genesis (�� ��p��p������� ��p������)

��������� �� ������ � Vim

��������� 05 ������� 2020 ����

Vim �������� ������ ��������, �� ������ � ��� �� ������ ��������.
�������� ���� ����� ��������������� �����-�� ���� �������� ��� ������ crontab, ��� ������ ��������� ������ � viv �����.

������: Error: Cannot find a val >��������� 13 �������� 2020 ����

���� ��������� ������ �� centos 5 ����
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

Linux Optimization

��������� 30 ���� 2012 ����

imap_bodystruct — Read the structure of a specified body section of a specific message

(PHP 4, PHP 5, PHP 7)

imap_bodystruct � Read the structure of a specified body section of a specific message

��������

Read the structure of a specified body section of a specific message.

������ ����������

����� IMAP, ���������� �� imap_open() .

The message number

The body section to read

������������ ��������

Returns the information in an object, for a detailed description of the object structure and properties see imap_fetchstructure() .

�������� �����

  • imap_fetchstructure() — Read the structure of a particular message

������� �������� ����� ���� ������� ������ ������� IMAP MIME BODYSTRUCTURE?

���� �� ������, ����� ������ ������� MIME ���� ������� ����� ��� � 3 ���������� ����� ��� ���������� ��������� ������ � ������� IMAP? ��������, � ������� 6.4.5 RFC3501, pg56, ����� �����������, ��� ������������� ��������� rfc822 � �������, ���� � ���� �������� ��������� ������ ����������� ����� � ������� IMAP, ��� �������� (� ����� ����������� ��� ��������� ��������� w / rfc822 � / ��������) ������

��� ��� ��������� rfc822 ����� ���� ������� �������. ����� �������, � ���� ������ ������� ���� 3 ���������� �����. ��� ������, ���� �� �����-���� �������, ����� ��� ��������� MIME ����� ��������� ��������� �������?

��� 3 ���������� ����� ����������� ��������� ���������� ��������? � ��� �� ����� ������ � ����� ������, �� ������ ��� � �������� ��� � ���� �������, � ������ ����� ���������, ��� ��� RFC3501 �� �������������� ���. ���� �������� ����� 3 ���������� ������ � ������ ������� MIME, ��� ����� ��������� BODYSTRUCTURE ���������� ���������?

������� �� ���� �����, � � ����������� ��� ������ ������.

�������

Rfc3501 (������� �� �������) ��������

�������, ��� ���� ������� � ���, ��� ������� ������� ���.

��� �������� ����, ��� ����� ��������� ����� ��������������, � �� ����,

������ �������

��� ��� �������� �������. ������ ����� � ����� ����� ���������� �������, ��� ��������� Content-Description ���� ��������������� � ������ �������� ������ �������:

� ����� ���� �����, ���� � rfc204x � rfc3501 ��� ������� �����������, ������ ������� �������� ������ �������� ���� ����������� �����������, ��� ��� �������������� �������� MIME ������� ���������������� �������� ������ ��������� �������, ����� ��� ����, ���������� .exe � �. �. � �������� MIME ��������� ������ ������������ �, ��-��������, �������� ���������� ����������, ������� ������������ ��� �������� 15+ ������� ���������� ������.

Pixel.com

������� � ���� ��� ���-����������

����� ��� �������

IMAP c PHP ����� 2

� ������ ����� ���� ���� �������, ��� ������������ � ������� IMAP, ��������� ������� PHP. � ���� ����� �� �������� ��� ����, ��������� ��� ������ � ������� � ������ � ���������� ����������� ����������� �����.

������ � ����������� ������

������ � �������, ��� �������, ������� � ������ ����������: �����������, �������, ����������, ������ � ��. �� ����� ����������, ���� �� ����������� ��������� ��� ���. ���� ��������� �� ���� ����������� �� �� ������� �������� �U�. ������� ������������ ��� �� ������ ����� ������, ����� ���������� ���������/�� ���������.

�� ����� ��������� ������ Unseen � ����������� ��������� ������ CSS ��� ��������, ������� ������� ������ ��� ��������� ��� �� ��������� ������ �� �������� ��� ������.

�� ����� ����� ������� ����������� �����, ��� ����������� �����. ��������, �����������, ��� �� �����, �������� ��������� ��� ���������. ��� ����� �� ���������� ��������, ������� ����� ����� �������� �F�.

����� ���������� ����� ��� ���������, �� ���������� ������� impa_setflag_full() .

����������� ���� ��� �������� ��������� ��� �Read(\Seen)� � ���������� � ������ �F�. � ������ ����������� ������������ UID ������ ����������� ����� ����� ������������������ � �������� ������� ���������, ������� � ������ ������ �������������� ��������� ��������-��������� ST_UID . � ���� �������� �� ������ ������������ � ������ �����, ��������, ���������, ���������, � �.�.

� ������� ����� ����������� ������ ��� ������ ���������, �� ������ ������������� ������� ������ ��� �1,10? � �������� ������� ��������� ��� ��������� ����� �� ��������� ���������.

�������� ��������� ����������� �����

������� Imap_delete() ������������ ��� �������� ���������. ������� ������ �������� �� ��� ��������, �� �� ����� ���� �� �������. ������� Imap_expunge() �������� �� ����������� �������� ���������� ���������.

� ������ ������� delete � UID ������ ����������� ������. � ��������� ������, � ������ �������� ������ ��������� ��-�� ��������� � ������������������ ������� (�������, ���� �� ������, � �� ���������� �������).

�������� �������� � ������

������ ����������� ������ � ����������, �������� ��������� �������� ������ ������������ ��������� �������. �� �������������� �� �������� �������� ��������, � ����������� �� ��� ����������.

���������� ��������� ������ ��� ������ ��������� ��������� � �������������� ��������. ����������, ��������� � ������ ����� ������, ��������� ������ ����� ����������� ����� �������, ����� ����������� ��� ����������. �� � ������� � ���� ������������ ������� ������������ ��� ������� imap_fetchstructure() , ������� ��������, ����� ������� ������.

����� ��� ��� ���������� �� ���, ���������� ��������� ����������� ����� � ����������, ������������ imap_fetchstructure() .

���� �� ����������� ���������� �� ���������, �� �������, ��� �������� ����������. ��� ������ ����� 1 ��������, �� ����� ������� ��������� �������� � ��� ����� ��������� ������ � ���������. � ���� ���������� �� ����� ����� ���������� ��������:

Илон Маск рекомендует:  Что такое код createwindowex

������ ������� viewMailbox() . ������� �� �������� ��������� ������� ������ � ������� ������� imap_fetchstructure() . ��� ����� ���������� ������, ��� �������� �����. ����� �� �������� ������� getAttachments() , ������� ��������� ��������� �����.

������� �� �������� ����� ��� ������� ����������� �����, � ����� �� ������ ������ ����� ������ ����� ����������. ��� ����� �������� ����� ����� � �������� ����������� �����. �������� ��� ������ ���-������ ������� �� ������ ���������. ���� � ��� ���� 3 ������ ������, ��� ����� ���-�� ����� 1.0.1.

���� ������ ������ ���, �� ���������, ��� �� �������� �������� � ��� �������� �������� �ATTACHMENT� ��������Ŕ. � ����� ��������� �� �������� ��������� ������ ����� � ������� imap_bodystruct() . ��� imap_bodystruct() � imap_fetchstructure() ������������ ����� �� ���������. ������������ ������� ����� ���� � ���, ��� �� ����� ������������ imap_bodystruct() ��� ��������� ���������� ����������, � �� ���� ���������.

������ � ��� ���� ������ ������ ��� ������ ����������� �����, � �� ��������� ������ ��� ���������� ��������:

������� ��������

����� ������� ��������, ��������� UID ����������� ������, ����� ����� � ��� ��������� ��������. � ������� ��� ��������� � ������, ��������� ����. ����� ������� �� ������, ����� ���� ������� ��������� �������:

������� �� ������ �������� ��������� ������ �����, ����� ���������� �������� ��������, ������� �������� � imap_bodystruct() . �� ������, ��� ������������ imap_msgno() , ����� �������� ���������� ����� UID; ��� ������, ��� imap_bodystruct() �� �������� UID, ������� �� ������ ������������� UID � ���������� �����.

����� �� ������� ���������� ���������� � ������� imap_fetchbody() . �� ����� �������� ������ ���������� ������ ����� �����. ����� �� ���������� ��������������� ������� ���������� ��� ������������� � ������������ � ���������� ���� ������ ������������� � �����������.

�, �������, �� ������� �������� � ���������������� �����������, ������� ������� ����� ��������� ����.

����������

�� ���� �� ��������� �������� ������� IMAP PHP, ������ � ��� ���������� ������, ��� ������ ������� ����������� �����.

Termin

���-��������, �������� �������, ���������� ���-����������, � ����� SEO, ������ ����� � �������� ����������. �������� ����������, ������ � ������ ������������� ���-���������� � ��������.

��� ����� IMAP � POP?

����������: �� ��������� ��� ����� ����������� ������������ ��� ����������� ����������� ����������� �� ����� �����. ��� �������� ���������� �������������, ������� �� ����� ����� ��������� ���������� � �������������� ������. ��� ��� �����, ����� ��� ������ ���� ��� �������. ������ ��� ������� ���� ������ � ��������, ������� �� ��� ���, � ������� ������ ����� ��������. ��� �������� ����� �������� ������ �� �������� (�� ���������� �����).

IMAP � POP � ��� ��� ������ ������� � ����������� �����. ������������� ������������ IMAP, ���� ��� ��������� ��������� ����� � ���������� ������ ��������� (��������, ��������, �������� � ��������).

IMAP ��������� �������� ������ � ����������� ����� �����, ��� �� ����������, � ������ ����������. ��� ������ ��������� ����������� ����� � ������� IMAP �� �� ���������� ��� � �� ���������� �� ����������; ������ ����� �� ������� ��� �� ������ ����������� �����. � ���������� �� ������ ��������� ����������� ����� � ��������� ��������� � ����� ����� ����: �� ��������, ����������, ���������� �����.

IMAP ��������� ���������, ������ ����� �� ��� ��������, � �������� �� ����������� �������������. ��� �� ������� ��������� ��������� ������� �������, ��� � ������� POP.

POP ����������� � ����� ������� ����������� ����� � ��������� �� ��� ��� ����� ���������. ����� ���������� �� ��������� � Windows ��� Mac OS ��������� ��������� �� �������� ������. ��� ������, ��� ����� ���������� ��������� ��������� � ���� ����� ���������� ������ � ���� �� ����������. ���� �� ����������� ���������� � ��������� � ������� ����������, ����� ��������� ��������� ����� ����������.

������������ ����� �������� �������� �� ���������� � Windows ��� Mac OS, � �� �� �������� �������.

������ ���������� ����� ��������� ������������� ������� ������ ����������� �����, ������� ���������� POP.

������� ������ ���-����� ��� �������� ����������

Gmail, Outlook.com, Hotmail.com � iCloud � ��� ���-�����. ���� � ������� ������ ���-����� ����������� � ���������.

���� � ��� ���� ��������� � Windows ��� Mac OS, ��, ��������, ������������ ���������, �������� Outlook, Apple Mail ��� Thunderbird, ��� ���������� ����������� ������. Outlook, Apple Mail � Thunderbird � ��� ������������� ������ � ����������� ������: ���������, ��������������� �� ���������� ��� ���������� ����������� ������. ��� ��������������� � ������� ������ ����������� �����, �������� Gmail ��� Outlook.com, ��� ��������� � �������� ����������� �����.

� �������� ���������� �� ������ �������� ����� ������� ������ ����������� �����, ����� ��������� �� ������. ��������, �� ������ �������� � ���������� Outlook ��� Apple Mail ������� ������ ���-����� (Gmail, Outlook.com, Hotmail.com, AOL � Yahoo) � �������� ������� ������, ��������������� ����� ������������.

���������� ������� ������� ���-����� � �������� ����������, ����� ��� Outlook, Apple Mail, Thunderbird

����� �� ���������� ������� ������ ����������� ����� � �������� ����������, ��� �������� ��������� ������ ������� IMAP ��� ������ �������.

���� ���������� ����������� ����� �� ������� �������� ���� ������� ������ ����������� �����, ������ ��� ������� � ���, ��� ������� ������ ����������� ����� ��������� ��� ������� �� ��������� POP. � ���� ������ ���������� ���������� � ���������� ����� ����������� ����� � ������ ��� ������� POP � SMTP, ����� ����� ���� ������ ���������� � �������� ����������. ��� �������, ��� �������� �������� �������� ���:

������ �������� ����� (IMAP): IMAP. _��_ ��� ������>. com

������ �������� ����� (POP): pop. ��� ������>.com

������ ��������� ����� (SMTP): smtp. ��� ������>.com

��� ����� ��� imap_bodystruct

IMAP::BodyStructure — IMAP4-compatible BODYSTRUCTURE and ENVELOPE parser

An IMAP4-compatible IMAP server MUST include a full MIME-parser which parses the messages inside IMAP mailboxes and is accessible via BODYSTRUCTURE fetch item. This module provides a Perl interface to parse the output of IMAP4 MIME-parser. Hope no one will have problems with parsing this doc.

It is a rather straightforward m/\G. /gc -style parser and is therefore much, much faster then the venerable Mail::IMAPClient::BodyStructure which is based on a Parse::RecDescent grammar. I believe it is also more correct when parsing nested multipart message/rfc822 parts. See testsuite if interested.

I’d also like to emphasize that this module does not contain IMAP4 client! You will need to employ one from CPAN, there are many. A section with examples of getting to a BODYSTRUCTURE fetch item with various Perl IMAP clients available on CPAN would greatly enhance this document.

The constructor does most of the work here. It initializes the hierarchial data structure representing all the message parts and their properties. It takes one argument which should be a string returned by IMAP server in reply to a FETCH command with BODYSTRUCTURE item.

All the parts on all the levels are represented by IMAP::BodyStructure objects and that enables the uniform access to them. It is a direct implementation of the Composite Design Pattern.

Returns the MIME type of the part. Expect something like text/plain or application/octet-stream .

Returns the MIME encoding of the part. This is usually one of ‘7bit’, ‘8bit’, ‘base64’ or ‘quoted-printable’.

Илон Маск рекомендует:  Что такое код swf_shapefillbitmapclip

Returns the size of the part in octets. It is NOT the size of the data in the part, which may be encoded as quoted-printable leaving us without an obvious method of calculating the exact size of original data.

Returns the content-disposition of the part. One of ‘inline’ or ‘attachment’, usually. Defaults to inline, but you should remember that if there IS a disposition but you cannot recognize it than act as if it’s ‘attachment’. And use case-insensitive comparisons.

Returns the charset of the part OR the charset of the first nested part. This looks like a good heuristic really. Charset is something resembling ‘UTF-8’, ‘US-ASCII’, ‘ISO-8859-13’ or ‘KOI8-R’. The standard does not say it should be uppercase, by the way.

Can be undefined.

Returns the filename specified as a part of Content-Disposition header.

Can be undefined.

Returns the description of the part.

This sub acts differently depending on whether you pass it an argument or not.

Without any arguments it returns a list of parts in list context and the number in scalar context.

Specifying a scalar argument allows you to get an individual part with that index.

Remember, all the parts I talk here about are not actual message data, files etc. but IMAP::BodyStructure objects containing information about the message parts which was extracted from parsing BODYSTRUCTURE IMAP response!

This method returns a message part by its path. A path to a part in the hierarchy is a dot-separated string of part indices. See «SYNOPSIS» for an example. A nested message/rfc822 does not add a hierarchy level UNLESS it is a single part of another message/rfc822 part (with no multipart/* levels in between). Instead, it has an additional .TEXT part which refers to the internal IMAP::BodyStructure object. Look, here is an outline of an example message structure with part paths alongside each part.

This is a text email with two attachments, one being an MS Word document, and the other is itself a message (probably a forward) which is composed in a graphical MUA and contains two alternative representations, one plain text fallback and one HTML with images (bundled as a multipart/related ).

Another one with several levels of message/rfc822 . This one is hard to compose in a modern MUA, however.

Returns the part path to the current part.

These are additional pieces of information returned by IMAP server and parsed. They are rarely used, though (and rarely defined too, btw), so I chose not to provide access methods for them.

This is a hashref of MIME parameters. The only interesting param is charset and there’s a shortcut method for it.

Content MD5. No one seems to bother with calculating and it is usually undefined.

cid and md5 members exist only in singlepart parts.

Parses a string into IMAP::BodyStructure::Envelope object. See below.

Every message on an IMAP server has an envelope. You can get it using ENVELOPE fetch item or, and this is relevant, from BODYSTRUCTURE response in case there are some nested messages (parts with type of message/rfc822 ). So, if we have a part with such a type then the corresponding IMAP::BodyStructure object always has envelope data member which is, in turn, an object of IMAP::BodyStructure::Envelope.

You can of course use this satellite class on its own, this is very useful when generating meaningful message lists in IMAP folders.

The constructor create Envelope object from string which should be an IMAP server respone to a fetch with ENVELOPE item or a substring of BODYSTRUCTURE response for a message with message/rfc822 parts inside.

Date of the message as specified in the envelope. Not the IMAP INTERNALDATE, be careful!

Subject of the message, may be RFC2047 encoded, of course.

Message-IDs of the current message and the message in reply to which this one was composed.

to, from, cc, bcc, sender, reply_to

These are the so called address-lists or just arrays of addresses. Remember, a message may be addressed to lots of people.

Each address is a hash of four elements:

The informal part, «A.U.Thor» from «A.U.Thor, «

Source-routing information, not used. (By the way, IMAP4r1 spec was born after the last email address with sroute passed away.)

The part before @.

The full address for display purposes.

The usual way to determine if an email has some files attached (in order to display a cute little scrap in the message list, e.g.) is to check whether the message is multipart or not. This method tends to give many false positives on multipart/alternative messages with a HTML and plaintext parts and no files. The following sub tries to be a little smarter.

This snippet selects a rendering routine for a message part.

Shouldn’t be any, as this is a simple parser of a standard structure.

Jonas Liljegren contributed support for multivalued «lang» items.

COPYRIGHT AND LICENSE

This software is copyright (C) 2015 by Alex Kapranoff .

This is free software; you can redistribute it and/or modify it under the terms GNU General Public License version 3.

  • � 2020 GitHub , Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can�t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

��� ����� ��� imap_bodystruct

(PHP 3>= 3.0.4, PHP 4 )

imap_bodystruct — Read the structure of a specified body section of a specific message

Description object imap_bodystruct ( resource stream_id, int msg_no, int section)

This function is currently not documented; only the argument list is available.

The above mentioned suggestions and code for handling attachments have some serious flaws; especially concering mails containing attachments sent bij PHP-applications [hello Manuel!] or SteveJobbs-aslongasitlookscool-clients.
After some extended reverse engineering I came to the following conclusions:
1) Don’t count on a «inline» or «attachment» disposition to mark a bodypart containing attachment data.
2) Never assume your attachment is NOT in the first bodypart
(i.e. default [$key]+2 constructions to start a download)
3) Do not assume your filename is in parameters and most certainly not in parameters[0] or parameters[1]

The way to go is to loop through ALL bodyparts and look for a parameters-attribute==»NAME» and — if not there — for a dparameters-attribute==»FILENAME» (note the «d» in front of parameters here!) and get the value to get the name of the attachment.

Please notice APPLEDOUBLE-encoded emails put its attachments in a parts array inside the parts array; meaning your loop has to go one level deep if (stristr($structure->parts[1]->subtype,»appledouble»)).

Mark the part where you found the NAME or FILENAME attribute and increase +1 for your download routine. ie.:

If appledouble-encoded $nr is constructed like $partno1+1.».».$partno2+1

I won’t publish the code here because it’s a mess and I’m ashamed of it and I’m not sure if it covers APPLESINGLE and I don’t feel like cleaning it up unless someone wants an article on it and I’m gonna be bloody payed to write it.

Yes, this IS a hint.

Since I have gotten many request of my code I desided to write an article on attachment handling so tune in on:
http://www.linuxscope.net/articles/mailAttachmentsPHP.html

After playing around with the imap_bodystruct() function I found out, that it behaves like imap_fetchstructure, but as I can see only for the body-part of the message, no headers here.
You can do following (is tested):

$bodystruct->type
— returns an integer [0 — 7] —

$bodystruct->encoding
— returns an integer [0 — 5] —

$bodystruct->bytes
— return size of message in bytes —

$bodystruct->parameters
— returns an array with pairs of ‘attribute’ and ‘value’

When writing attachment-handling for a mail client you will be able to fetch the filename of the attachment this way.

$struct = imap_fetchstructure($mbox,$msgno);
$contentParts = count($struct->parts);

if ($contentParts >= 2) <
for ($i=2;$i parameters[0]->value == «us-ascii» || $att[$k]->parameters[0]->value == «US-ASCII») <
if ($att[$k]->parameters[1]->value != «») <
$attachments[$k] = $att[$k]->parameters[1]->value;
>
> elseif ($att[$k]->parameters[0]->value != «iso-8859-1» && $att[$k]->parameters[0]->value != «ISO-8859-1») <
$attachments[$k] = $att[$k]->parameters[0]->value;
>
>
>
I have written a mail client that can handle most attachment-types if anyone interested in the source for the attachment-handling I could mail it to you.
But be warned it’s no beauty-code since i’ve been fighting with lag of the documentation available on this issue.

This is one of the functions that can not accept FT_UID flag, because of the limitations of the underlying imap client library. If you need that, use something like this:

imap_bodystruct($stream_id, imap_msgno($stream_id, $msg_uid_no), $section);

���������� �������� PHP IMAP

������������, � ���� ���� ������� PHP IMAP, ������� ��������� �������� ������������� ���� ������, � ����� ��� ������: http://www.linuxscope.net/articles/mailAttachmentsPHP.html �� �� ���������� ������: ��������������: imap_bodystruct() [function.imap-bodystruct]: ����� ������� ���������. � �� ����, ���� ��� �� �������. ��� ��� ���

the settings.php �������� ��� ���������� $mbox, ��� �������� ���������, ������������ �������� ����� — imap_bodystruct ($ mbox, $getmsgid, $ii); ���� �� �����-���� �������� � ���� �����������?

�������� ������ ��:

���������� ��������, �������� ��� ������:

����� �� ���������� ��������� � ������� UID.

����������������, ����� �� ��������� ����� ����, ��� ����� ����� ����� ������� ��� � ������� UID:

��� ������ �������� ����� ���� � ������� UID � ������ ������.

������������ ����� $att[$ii-2] = imap_bodystruct($mbox,$getmsgid, $ii); ����� �������� �������� ��������� �� ����������� ������ ���������, ������� �� ��������� � UID. ��� ������� (� � ������ � ��������� ����, ��� ��� ������), ������, �� ����� ����������� ��� ��������� �� UID.

����� ������ � ����, ��� ��� ������� ������� ��������� MIME ����� �� ����������� �������� ����������������� (��������: 1, 2, 3); ��� ����� ����� ��������: 1.1, 1.2, 2, 3. ��� ������� ����, ���� � ��� ���� ����������� ������ � HTML � ������� �������, � ����� ��������.

imap_bodystruct

Warning
����������� �� PHP
����. ����.

imap_bodystruct

(PHP 3 >= 3.0.4, PHP 4, PHP 5)

imap_bodystruct — Read the structure of a specified body section of a specific message

Description

� ���������� ������� ��� ������� ��� �� ���� ���������������; ��� ������������ �������� ������ ������ ����������.

��� ����� ��� imap_bodystruct

(PHP 3>= 3.0.4, PHP 4 , PHP 5)

imap_bodystruct — Read the structure of a specified body section of a specific message

Description object imap_bodystruct ( resource stream_id, int msg_no, string section )

��������

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Here is a great snippet of code from our php email application (www.nitrogenlabs.com). This function will give you the filenames of each attachment even if the attachment is in the first part of the body.

function getAttachments ( $mbox , $msgNum ) <
$structure = imap_fetchstructure ( $mbox , $msgNum );
$contentParts = count ( $structure -> parts );
if( $contentParts > 1 ) <
for( $i = 1 ; $i $contentParts ; $i ++) <
if( $structure -> parts [ $i ]-> type > 0 ) <
$attachments .= $structure -> parts [ $i ]-> description ;
>
>
>
return $attachments ;
>
>
return $attachments ;
>

The above mentioned suggestions and code for handling attachments have some serious flaws; especially concering mails containing attachments sent bij PHP-applications [hello Manuel!] or SteveJobbs-aslongasitlookscool-clients.
After some extended reverse engineering I came to the following conclusions:
1) Don’t count on a «inline» or «attachment» disposition to mark a bodypart containing attachment data.
2) Never assume your attachment is NOT in the first bodypart
(i.e. default [$key]+2 constructions to start a download)
3) Do not assume your filename is in parameters and most certainly not in parameters[0] or parameters[1]

The way to go is to loop through ALL bodyparts and look for a parameters-attribute==»NAME» and — if not there — for a dparameters-attribute==»FILENAME» (note the «d» in front of parameters here!) and get the value to get the name of the attachment.

Please notice APPLEDOUBLE-encoded emails put its attachments in a parts array inside the parts array; meaning your loop has to go one level deep if (stristr($structure->parts[1]->subtype,»appledouble»)).

Mark the part where you found the NAME or FILENAME attribute and increase +1 for your download routine. ie.:

If appledouble-encoded $nr is constructed like $partno1+1.».».$partno2+1

I won’t publish the code here because it’s a mess and I’m ashamed of it and I’m not sure if it covers APPLESINGLE and I don’t feel like cleaning it up unless someone wants an article on it and I’m gonna be bloody payed to write it.

Yes, this IS a hint.

Since I have gotten many request of my code I desided to write an article on attachment handling so tune in on:
http://www.linuxscope.net/articles/mailAttachmentsPHP.html

After playing around with the imap_bodystruct() function I found out, that it behaves like imap_fetchstructure, but as I can see only for the body-part of the message, no headers here.
You can do following (is tested):

$bodystruct->type
— returns an integer [0 — 7] —

$bodystruct->encoding
— returns an integer [0 — 5] —

$bodystruct->bytes
— return size of message in bytes —

$bodystruct->parameters
— returns an array with pairs of ‘attribute’ and ‘value’

When writing attachment-handling for a mail client you will be able to fetch the filename of the attachment this way.

$struct = imap_fetchstructure($mbox,$msgno);
$contentParts = count($struct->parts);

if ($contentParts >= 2) <
for ($i=2;$i parameters[0]->value == «us-ascii» || $att[$k]->parameters[0]->value == «US-ASCII») <
if ($att[$k]->parameters[1]->value != «») <
$attachments[$k] = $att[$k]->parameters[1]->value;
>
> elseif ($att[$k]->parameters[0]->value != «iso-8859-1» && $att[$k]->parameters[0]->value != «ISO-8859-1») <
$attachments[$k] = $att[$k]->parameters[0]->value;
>
>
>
I have written a mail client that can handle most attachment-types if anyone interested in the source for the attachment-handling I could mail it to you.
But be warned it’s no beauty-code since i’ve been fighting with lag of the documentation available on this issue.

This is one of the functions that can not accept FT_UID flag, because of the limitations of the underlying imap client library. If you need that, use something like this:

imap_bodystruct($stream_id, imap_msgno($stream_id, $msg_uid_no), $section);

Илон Маск рекомендует:  Скрипт формирует список ключевых слов по содержимому сайта
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Внимание