Re: [PHP] No MIME-Type in imap_fetch_overview()
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()
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()
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()
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()
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