Re: [PHP] No MIME-Type in imap_fetch_overview()

2013-09-23 Thread Negin Nickparsa
I have read your mail twice and still I could not get what you want
exactly.  can't get the structure of the email either although you
elaborate it in details.

you have said something about human rights that I couldn't understand why?
but if you want to get the type of files fetch the structure and then you
can use disposition string, find the attachment and then return the
array.




Sincerely
Negin Nickparsa


On Wed, Sep 18, 2013 at 3:27 PM, Domain nikha.org m...@nikha.org wrote:

 Hello all,

 im posting this here, because the bug report system of php.net is not
 right
 place for my problem. It's not a bug, but a wish - an I found there no
 wishlist option at all.

 I'm running my own webmail-client, written in PHP. It is stable, fast and
 pretty, showing the full power of the PHP imap section.

 Of course it presents paginated content lists for every mailbox the user
 may
 open. These lists tell him some usefull things about every mail actually
 listed:
 Sender, date, subject, size and (eventually) flags.

 All these things are nicely delivered by the function
 imap_fetch_overview()
 The same could be done by calling imap_headerinfo() for every single
 mail, but
 fetch_overview seems to be faster, because it does it at once for the
 whole
 batch.

 BUT NONE OF THEM returns any information about the MIME-Type of the mail!

 Since the user of my webmail client has the intrinsic, natural born an
 general
 human right to KNOW whether some mail in his mailbox has attachments or
 not, I'm
 forced to do very ugly things. My script calls additionally for every (!)
 actually listed mail  imap_fetchbody($connect, $msg_no, 0) - where
 $connect
 holds the result of imap_open().

 That gives me the mail header, the script reads the line starting with
 Content-Type: and returns its content. Evaluating this against mixed or
 alternative we have finaly what we want: This mail has attachments! Or is
 written in HTML, what is even more we wanted!

 Works fine, but is ugly. First fetch_overview parses all mail headers,
 then
 they are fetched again to be parsed for the MIME-Type. I could just omit
 fetch_overview and read the headers by my own means, that whould be
 faster,
 but then I loose the size information, that is NOT (and cannot) be part of
 the
 mail header!

 If I want to have both, size and MIME-Type, and I WANT to have both,
 respecting
 the intrinsic, natural born and general human rights of my user, im must
 call
 both, overview and fetchbody.

 My question is this: Is there a better solution? Or is there someone that
 knows
 someone among the PHP-Developpers to suggest them an improvement of the
 functions imap_fetch_overivew() and imap_headerinfo(). Please, Please,
 add
 the MIME-Type to your fantastic object collections! BTW: It's really easy.
 Read
 the Content-Type-Line! Sorry...

 Hope, somebody has an idea,
 my regards,

 Niklaus









 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] No MIME-Type in imap_fetch_overview()

2013-09-23 Thread Negin Nickparsa
I have read your mail twice and still I could not get what you want
exactly.  can't get the structure of the email either although you
elaborate it in details.

you have said something about human rights that I couldn't understand why?
but if you want to get the type of files fetch the structure and then you
can use disposition string, find the attachment and then return the
array.




Sincerely
Negin Nickparsa


On Wed, Sep 18, 2013 at 3:27 PM, Domain nikha.org m...@nikha.org wrote:

 Hello all,

 im posting this here, because the bug report system of php.net is not
 right
 place for my problem. It's not a bug, but a wish - an I found there no
 wishlist option at all.

 I'm running my own webmail-client, written in PHP. It is stable, fast and
 pretty, showing the full power of the PHP imap section.

 Of course it presents paginated content lists for every mailbox the user
 may
 open. These lists tell him some usefull things about every mail actually
 listed:
 Sender, date, subject, size and (eventually) flags.

 All these things are nicely delivered by the function
 imap_fetch_overview()
 The same could be done by calling imap_headerinfo() for every single
 mail, but
 fetch_overview seems to be faster, because it does it at once for the
 whole
 batch.

 BUT NONE OF THEM returns any information about the MIME-Type of the mail!

 Since the user of my webmail client has the intrinsic, natural born an
 general
 human right to KNOW whether some mail in his mailbox has attachments or
 not, I'm
 forced to do very ugly things. My script calls additionally for every (!)
 actually listed mail  imap_fetchbody($connect, $msg_no, 0) - where
 $connect
 holds the result of imap_open().

 That gives me the mail header, the script reads the line starting with
 Content-Type: and returns its content. Evaluating this against mixed or
 alternative we have finaly what we want: This mail has attachments! Or is
 written in HTML, what is even more we wanted!

 Works fine, but is ugly. First fetch_overview parses all mail headers,
 then
 they are fetched again to be parsed for the MIME-Type. I could just omit
 fetch_overview and read the headers by my own means, that whould be
 faster,
 but then I loose the size information, that is NOT (and cannot) be part of
 the
 mail header!

 If I want to have both, size and MIME-Type, and I WANT to have both,
 respecting
 the intrinsic, natural born and general human rights of my user, im must
 call
 both, overview and fetchbody.

 My question is this: Is there a better solution? Or is there someone that
 knows
 someone among the PHP-Developpers to suggest them an improvement of the
 functions imap_fetch_overivew() and imap_headerinfo(). Please, Please,
 add
 the MIME-Type to your fantastic object collections! BTW: It's really easy.
 Read
 the Content-Type-Line! Sorry...

 Hope, somebody has an idea,
 my regards,

 Niklaus









 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] No MIME-Type in imap_fetch_overview()

2013-09-23 Thread Aziz Saleh
What Niklaus wishes for is a way to detect if an email message contains an
attachment by just reading the headers (correct me if I am wrong).

This isn't really a PHP issue. In any language you can't really figure out
if an email has an attachment by just looking at the headers, you need to
check the body. You can try to infer by using the content-type or the size,
but that isn't 100% valid.

Aziz


On Mon, Sep 23, 2013 at 2:59 PM, Negin Nickparsa nickpa...@gmail.comwrote:

 I have read your mail twice and still I could not get what you want
 exactly.  can't get the structure of the email either although you
 elaborate it in details.

 you have said something about human rights that I couldn't understand why?
 but if you want to get the type of files fetch the structure and then you
 can use disposition string, find the attachment and then return the
 array.




 Sincerely
 Negin Nickparsa


 On Wed, Sep 18, 2013 at 3:27 PM, Domain nikha.org m...@nikha.org wrote:

  Hello all,
 
  im posting this here, because the bug report system of php.net is not
  right
  place for my problem. It's not a bug, but a wish - an I found there no
  wishlist option at all.
 
  I'm running my own webmail-client, written in PHP. It is stable, fast and
  pretty, showing the full power of the PHP imap section.
 
  Of course it presents paginated content lists for every mailbox the user
  may
  open. These lists tell him some usefull things about every mail actually
  listed:
  Sender, date, subject, size and (eventually) flags.
 
  All these things are nicely delivered by the function
  imap_fetch_overview()
  The same could be done by calling imap_headerinfo() for every single
  mail, but
  fetch_overview seems to be faster, because it does it at once for the
  whole
  batch.
 
  BUT NONE OF THEM returns any information about the MIME-Type of the mail!
 
  Since the user of my webmail client has the intrinsic, natural born an
  general
  human right to KNOW whether some mail in his mailbox has attachments or
  not, I'm
  forced to do very ugly things. My script calls additionally for every (!)
  actually listed mail  imap_fetchbody($connect, $msg_no, 0) - where
  $connect
  holds the result of imap_open().
 
  That gives me the mail header, the script reads the line starting with
  Content-Type: and returns its content. Evaluating this against mixed
 or
  alternative we have finaly what we want: This mail has attachments! Or
 is
  written in HTML, what is even more we wanted!
 
  Works fine, but is ugly. First fetch_overview parses all mail headers,
  then
  they are fetched again to be parsed for the MIME-Type. I could just omit
  fetch_overview and read the headers by my own means, that whould be
  faster,
  but then I loose the size information, that is NOT (and cannot) be part
 of
  the
  mail header!
 
  If I want to have both, size and MIME-Type, and I WANT to have both,
  respecting
  the intrinsic, natural born and general human rights of my user, im must
  call
  both, overview and fetchbody.
 
  My question is this: Is there a better solution? Or is there someone that
  knows
  someone among the PHP-Developpers to suggest them an improvement of the
  functions imap_fetch_overivew() and imap_headerinfo(). Please,
 Please,
  add
  the MIME-Type to your fantastic object collections! BTW: It's really
 easy.
  Read
  the Content-Type-Line! Sorry...
 
  Hope, somebody has an idea,
  my regards,
 
  Niklaus
 
 
 
 
 
 
 
 
 
  --
  PHP General Mailing List (http://www.php.net/)
  To unsubscribe, visit: http://www.php.net/unsub.php
 
 



Re: [PHP] No MIME-Type in imap_fetch_overview()

2013-09-23 Thread Domain nikha . org
Negin Nickparsa am Montag, 23. September 2013 - 20:59:
 I have read your mail twice and still I could not get what you want
 exactly.  

Sorry for my bad english! 
What I want is, that the users of my webmail client can see at a glance,
if mails in their mailboxes have attachments or not. (Thats a human
right! But of course I was joking... It's simply nice to provide this
information and should be done)

 but if you want to get the type of files fetch the structure and then
you
 can use disposition string, find the attachment and then return the
 array.

Yes, I could do even that! But this is worse! Imagine, you do this in
the overview of the mailbox content! This can be hunderds of mails! My
script paginates this stuff in blocks of 16 (or something) mail headers,
but even then you have an huge overhead.

Why? 
Because, first you must collect the sender and subject information. This
is done by imap_fetch_overview(), parsing the mailheaders and grabing
some server data, like arrival date, size and flags.

Fine, but you still know nothing about attachments! You must do
something more. OK?

You whould run imap_fetchstructure(), but sorry, that's the wrong time
and place. You will need this monster object only when the user _reads_
some specific mail. At the moment, we are not reading, but collecting
mails to present them in the mailbox overview.

My script modestly fetches the mailheaders again to read the
Content-Type-line. That's quite fast, works fine, but is stupid,
because this headers were fetched and parsed just before! 

I ask you, and all PHP developpers: Why the hell this function does not
parse this line too? (a part of so much others of less importance) The
same is true for imap_headerinfo(). And: of course this
Content-Type-line provides by far not the complete MIME-structure as
imap_fetchstructure() does, but, as said, we don't need this at the
moment.

The result is a script, that I self whould not describe as good
practice because of it's duplicated parsing of the same string, but I
found no other way yet.

That's my problem, you see?

Sincerely
Niklaus

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] No MIME-Type in imap_fetch_overview()

2013-09-23 Thread Domain nikha . org
Aziz Saleh am Montag, 23. September 2013 - 22:06:
 What Niklaus wishes for is a way to detect if an email message
contains an
 attachment by just reading the headers (correct me if I am wrong).
 
Yes, that's what I'm seeking :-)

 This isn't really a PHP issue. In any language you can't really figure
out
 if an email has an attachment by just looking at the headers, you need
to
 check the body. You can try to infer by using the content-type or the
size,
 but that isn't 100% valid.
 

That's like radio Eriwan: In principle you are right!

BUT: I want not show the whole MIME-structure in the mailbox overview!
That whould be absurd, and indeed could only be done by reading the
body.

Nevertheless we have in the primary header of any MIME compliant message
the line Content-Type. (We have it also in the headers of the attached
parts, but that is not intresting now)

In this primary header (fetched by imap_fetchbody($mailbox, $msg_no,
0)) the leading part of the MIME-type description can have only two
values: text or multipart. Right? I'm sure you will never find other
values in the _primary_ header.

That's the first decision for your script. text: no attachment,
multipart: attachment. No matter the subtype-value after the slash,
you have what I want! And ONLY by looking on the header. And this ist
100% valid, because it follows logically from the imap- and MIME-rfc's.

About malformed messages violating the protocols we discuss next year,
you agree? :-)

You may evaluate the subtype after the slash. If the type is multipart,
you will find mixed, alternative, related or digest, if the type
is text, you will have plain or html as subtype.

May be there are more subtypes on the way, but all these are optional
for the primary job, a decent mailbox overview must do: tell the user,
whether there are attachments or not.

My own webmail client does this job pretty good, but it violates my own
standard of good practice. Whether imap_fetch-overview() nor
imap_headerinfo are reading the Content-Type-line while parsing much
other header lines of minor importance. My script must refetch the
mailheaders to do that! This is an ugly overhead I wish to avoid.

BTW: the squirrelmail-staff, leading in the PHP-webmail-world, just
ignores the whole imap-extension of PHP. Instead, they talk low level
with the server. But this way is a little bit too hard for me...

Therefore my pledge to all involved into the development of the fabulous
PHP framework, section imap:
Please ad the primary MIME-type to the objects returned by
fetch_overview and headerinfo! It's so ridiculous simple: read the
Content-Type-line in the primary mailheader as I must do afterwards,
only because you do not!

Niklaus


  
 

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php