FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Parsing mbox files with Windows Php
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Parsing mbox files with Windows Php [message #181727 is a reply to message #181711] Mon, 27 May 2013 23:51 Go to previous messageGo to previous message
Chuck Anderson is currently offline  Chuck Anderson
Messages: 63
Registered: September 2010
Karma:
Member
Jerry Stuckle wrote:
> On 5/25/2013 6:39 PM, Chuck Anderson wrote:
>> Peter H. Coffin wrote:
>>> On Fri, 24 May 2013 15:57:14 -0600, Chuck Anderson wrote:
>>>> I have been slowly building a Php/MySQL based IMAP email client. The
>>>> Php IMAP functions are well documented and easy to use. I store
>>>> messages in a MySQL database (attachments in the file system) for
>>>> ease of organization, maintenance, backup and searching. I like it
>>>> enough that I want to add my existing archive of email in
>>>> Thunderbird. To do so, I need to parse mbox files and extract
>>>> message headers, parts, and attachments. Thankfully, the Php IMAP
>>>> functions can be used to open and parse an mbox file (or even a
>>>> single .eml file) as well as opening a stream to the server.
>>>>
>>>> Using this functionality I can write a script to run on my WAMP
>>>> development machine that reads the Thunderbird folder structure,
>>>> parses the mbox files and saves individual messages along with their
>>>> folder/subfolder path in the Thunderbird folder hierarchy. It should
>>>> be as easy as pointing it to the top of the folder structure and
>>>> letting it do all the work from there.
>>>>
>>>> Unfortunately, it appears that the Windows Php binary is unable to
>>>> connect to an mbox file, so to make my job easy, I would have to
>>>> upload the entire folder structure (it is about 200MBs) to my shared
>>>> host and process it there. I would much rather "toy around" with
>>>> this process on my Windows development machine and not on the shared
>>>> host.
>>>>
>>>> There is a Php bug filed for this, but it was determined that the
>>>> "underlying c-client function is unable to open a file."
>>>> https://bugs.php.net/bug.php?id=39880 - closed as "not a bug."
>>>>
>>>> $mbox = imap_open('pathto/mboxfile', '', '') // works on *nix, but
>>>> not on Windows.
>>>> - Notice: Unknown: Can't open mailbox mboxfiles/Inbox: no such
>>>> mailbox (errflg=2) in Unknown on line 0.
>>>> (This second error is the one coming from the underlying c-client
>>>> function.)
>>>
>>> Okay, step one: quit munging stuff around and give us the EXACT code,
>>> the EXACT contents of variables involved, and the EXACT error messages.
>>> You're not revealing national secrets by posting paths to filenames,
>>> and
>>> what the problem is may be in what you're changing to be more general.
>>
>> I used generic paths and filenames because I had tried several
>> variations.
>>
>> I have learned that imap_open only works on a file - on a *nix web
>> server - if the path to the mbox file is relative to $HOME. I have not
>> found any official documentation, just forum posts saying so, and ... it
>> is the only way I have been able to make it work.
>>
>> So, imap_open works for me (on the remote Linux host) if, and only if, I
>> use:
>> imap_open ('public_html/mboxfiles/Trash', '', '')
>> // Trash is an mbox file I uploaded directly from my Thunderbird Profile
>>
>> On Windows
>> c:/localhost is the document root
>> c:/localhost/imap is where the Php scripts are located.
>> c:/localhost/imap/mboxfiles is where the mbox file "Trash" is located
>>
>> I have tried:
>> imap_open('localhost/imap/mboxfiles/Trash', '', ''); // equivalent of
>> being relative to $HOME on *nix
>> imap_open('/imap/mboxfiles/Trash', '', ''); // absolute path from
>> document root
>> imap_open('mboxfiles/Trash', '', ''); // relative path
>> imap_open('c:/localhost/imap/mboxfiles/Trash', '', ''); // real path on
>> disk
>>
>> On Windows I always get these two errors (the file path changes
>> accordingly):
>>
>> - Warning: imap_open(): Couldn't open stream
>> localhost/utilities/imap/eml/Trash in
>> localhost\utilities\imap\imap_save_mbox_file.php on line 127
>>
>> - Notice: Unknown: Can't open mailbox
>> localhost/utilities/imap/eml/Trash: no such mailbox (errflg=2) in
>> Unknown on line 0
>>
>> I have read that the second error is coming from the c-client (errflg=2
>> comes from there).
>>
>
> I don't see any of the code you listed listing the directories
> imap_open() is looking in.
>
> Once again (and for the LAST TIME):
>
> What is the *EXACT CODE* you are using. And what is the *EXACT
> MESSAGE* you get in response?
>
> We can't help you if you give incomplete/confusing/incorrect information!
>
>

The above really is all there is to it.

Note:
c:/localhost is the document root
c:/localhost/imap is where the Php scripts are located.
c:/localhost/imap/mboxfiles is where the mbox file "Trash" is located

Here is a cut and paste of the script imap_open_eml.php:

<?php

echo '<pre style="text-align: left;">'; // for more readable output

imap_open('localhost/imap/mboxfiles/Trash', '', ''); // same as relative
to $HOME on *nix
imap_open('/imap/mboxfiles/Trash', '', ''); // absolute path from
DOCUMENT_ROOT
imap_open('mboxfiles/Trash', '', ''); // relative path
imap_open('c:/localhost/imap/mboxfiles/Trash', '', ''); // real path on disk

echo '</pre>';

?>

Here is the resultant output:
----------------------------

Warning: imap_open(): Couldn't open stream localhost/imap/mboxfiles/Trash in C:\localhost\utilities\imap\imap_open_eml.php on line 4

Warning: imap_open(): Couldn't open stream /imap/mboxfiles/Trash in C:\localhost\utilities\imap\imap_open_eml.php on line 5

Warning: imap_open(): Couldn't open stream mboxfiles/Trash in C:\localhost\utilities\imap\imap_open_eml.php on line 6

Warning: imap_open(): Couldn't open stream c:/localhost/imap/mboxfiles/Trash in C:\localhost\utilities\imap\imap_open_eml.php on line 7

Notice: Unknown: Can't open mailbox localhost/imap/mboxfiles/Trash: no
such mailbox (errflg=2) in Unknown on line 0
Notice: Unknown: Can't open mailbox /imap/mboxfiles/Trash: no such
mailbox (errflg=2) in Unknown on line 0
Notice: Unknown: Can't open mailbox mboxfiles/Trash: no such mailbox
(errflg=2) in Unknown on line 0
Notice: Unknown: Can't open mailbox c:/localhost/imap/mboxfiles/Trash:
no such mailbox (errflg=2) in Unknown on line 0

--
*****************************
Chuck Anderson • Boulder, CO
http://cycletourist.com
Turn Off, Tune Out, Drop In
*****************************
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: why php echo does not show up in HTML?
Next Topic: Exhaustive memory allocation using arrays
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Nov 28 00:07:26 GMT 2024

Total time taken to generate the page: 0.03251 seconds