History log of /haiku/src/kits/mail/mail_util.cpp
Revision Date Author Comments
# 4015b587 14-Sep-2019 Humdinger <humdingerb@gmail.com>

Mail: Fix 'Leave as 'New'

When closing an unread email via "Close | Leave as 'New'", it's
still set to MAIL:status "Read".
IComparing the BString read from the MAIL:status attribute returns
"0" for a match, which the if-statement turns to false...

Change-Id: I4c3846fd39a6056e4bed8388e41dbf4929798799
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1865
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# fea29e79 11-Nov-2018 Peter Kosyh <p.kosyh@gmail.com>

write_read_attr: fix truncated B_MAIL_ATTR_STATUS

This fix garbage attributes on e-mail messages on status changes.

Change-Id: I5293a0e71a1b84c04889fa3375488b0075aad12e
Reviewed-on: https://review.haiku-os.org/682
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 618cc43b 14-Jan-2016 Axel Dörfler <axeld@pinc-software.de>

IMAP: New folders will now adopt default mail attributes.

* Added a function CopyMailFolderAttributes() that copies the attribute
layout from the text/x-email default query folder.
* This using the new CopyAttributes() method in libshared that is pretty
much a copy of a similar method from copyattr. However, I did not
replace the latter, as that one allows for more fine grained error
reporting (and attribute filtering).
* Closes ticket #3498.


# 81805393 04-Jan-2016 Axel Dörfler <axeld@pinc-software.de>

IMAP: setting flags, and body fetching works now.

* The direct methods in BMailProtocol now forward the request to the
looper; it's no longer the mail_daemon's responsibility to know
anything about that protocol.
* It's in desperate need of refactoring, but it doesn't hurt to add
it to the repository as is.


# 3aeed660 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 55a4a880 04-May-2013 Jérôme Duval <jerome.duval@gmail.com>

Mail: some 64 bit fixes


# ba91e5bb 08-Oct-2011 Axel Dörfler <axeld@pinc-software.de>

* Trim white space from the field names - this removes for example an extra
space in front of *every* attribute.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42809 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c7f804c 08-Oct-2011 Axel Dörfler <axeld@pinc-software.de>

* mail_util.h was not self-contained.
* Added a few missing breaks in MailProtocolThread::MessageReceived()!
* Minor coding style update.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42808 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b4ae23e 29-May-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Workaround for #7575. There seems to be something fishy in the regex. Could somebody with experience in re_search check what
the real problem is?



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 179d0b37 27-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Don't alter custom status attribute. Part of #7290.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40729 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d773c5bf 21-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

If not in "mark automatically as read" mode mark the mail as seen. Fix selection of this option in the preference window. Fix some read/unread bugs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40595 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9967dfd9 21-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Extend MarkMailAsRead to take a flag not only a bool value. Write an additional MAIL:read attribute.
- Remove some hard coded paths.
- Catch failure of FindMessage correctly. Thanks Axel.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40593 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a47656d4 13-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Don't free stuff not belongs to us. Fix #7212 maybe #7213.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40480 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1af4fa4b 08-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Major restructuring of the mail server:

Accounts are now stored in a separate file. Previously they where somehow magically assembled from the chain ids. Now its possible to remove a account temporary by removing the account file form the account folder.

Each account could have an inbound protocol, an outbound protocol and some filters.

Mails are now associated with an account and not with a chain. This required to replace the chain id attribute by an account attribute.

Replace BMailFilter and BMailChain by a less general approach. Basically the chain had a list of filters and call the ProcessMailMessage for each filter. This made it sometime difficult to understand what is going on, e.g. sometimes a filter used information gathered by another filters. The new MailProtocol and MailFilter classes are calling more dedicated hook functions, e.g. HeaderFetched or MessageReadyToSend.

As before all MailProtocol's (plus their filters) are running in their own thread.

Cleaned up the error and status window a bit. Abstracted the interface to these windows. Should be easy to write a BNotification api back-end now.

Parsing of mail headers is much faster now. Fetching the headers of a large mailbox takes ~min and not ~hour now! Initial checkout time is in the same order like Opera. The problem was the massive use of fgets in parse_header (mail_util.cpp) now the complete header is read in one go. Furthermore, only interesting fields are extracted.

Remove some unused files, BeOS relicts... Feel free to translate the mail server and remove the own language system (headers/private/mail/MDRLanguage.h).

Sorry for the remaining old (and new) coding style issues, sometime just ignore them, to many :(



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40397 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5091a866 11-Aug-2010 Jérôme Duval <korli@users.berlios.de>

To be validated as part of bug #6386. Update glibc regex to 2.11, headers/posix/regex.h included. This imposes some changes in some of our sources using the regex.h,
mostly bin tools and mail kit. The use of __USE_GNU macro is needed for instance when the expected regex implementation is the GNU one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38031 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9f568b88 08-Apr-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

NULL check after pointer dereference. CID 1032, btw.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36098 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5344cdf4 11-Nov-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Made encoding detection actually work. Added a deprecation notice in E-mail.h.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9932 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eaed7fea 11-Nov-2004 shatty <shatty@nowhere.fake>

mime commentary in array, utilize textencoding for subject conversion to utf8


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9927 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f7215ac8 20-Sep-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Imported MDR. Some code still not entirely functional -- I haven't been able to figure out how to detect SSL, so IMAP and POP have it turned off. PPP auto-detect is also not functional at the moment. Other than that, it seems to work beautifully. Packaging will come later.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9016 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3aeed6607cd07762c0e709633c012b3a632dbad9 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# 55a4a88045ee553e36e92406200079ea13b858d6 04-May-2013 Jérôme Duval <jerome.duval@gmail.com>

Mail: some 64 bit fixes


# ba91e5bbcd099f05939c6629f9e6f47d36f7949c 08-Oct-2011 Axel Dörfler <axeld@pinc-software.de>

* Trim white space from the field names - this removes for example an extra
space in front of *every* attribute.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42809 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c7f804cec9077746a5b0b99d9fbc66b47c9c2af 08-Oct-2011 Axel Dörfler <axeld@pinc-software.de>

* mail_util.h was not self-contained.
* Added a few missing breaks in MailProtocolThread::MessageReceived()!
* Minor coding style update.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42808 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b4ae23e28a6856a048dc25003840e017c2dbdcc 29-May-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Workaround for #7575. There seems to be something fishy in the regex. Could somebody with experience in re_search check what
the real problem is?



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 179d0b37eed61edecb26149521e2a0d52f6c3719 27-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Don't alter custom status attribute. Part of #7290.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40729 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d773c5bf4c484fb21a244b9a2fae240bc6160204 21-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

If not in "mark automatically as read" mode mark the mail as seen. Fix selection of this option in the preference window. Fix some read/unread bugs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40595 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9967dfd9243396f9bed5f7b357451cda8cd48f26 21-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Extend MarkMailAsRead to take a flag not only a bool value. Write an additional MAIL:read attribute.
- Remove some hard coded paths.
- Catch failure of FindMessage correctly. Thanks Axel.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40593 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a47656d4804b093d4c5df25b90c8c938bda71db2 13-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Don't free stuff not belongs to us. Fix #7212 maybe #7213.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40480 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1af4fa4ba62ba7e49fc47d60a3a89083b6f51c6f 08-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Major restructuring of the mail server:

Accounts are now stored in a separate file. Previously they where somehow magically assembled from the chain ids. Now its possible to remove a account temporary by removing the account file form the account folder.

Each account could have an inbound protocol, an outbound protocol and some filters.

Mails are now associated with an account and not with a chain. This required to replace the chain id attribute by an account attribute.

Replace BMailFilter and BMailChain by a less general approach. Basically the chain had a list of filters and call the ProcessMailMessage for each filter. This made it sometime difficult to understand what is going on, e.g. sometimes a filter used information gathered by another filters. The new MailProtocol and MailFilter classes are calling more dedicated hook functions, e.g. HeaderFetched or MessageReadyToSend.

As before all MailProtocol's (plus their filters) are running in their own thread.

Cleaned up the error and status window a bit. Abstracted the interface to these windows. Should be easy to write a BNotification api back-end now.

Parsing of mail headers is much faster now. Fetching the headers of a large mailbox takes ~min and not ~hour now! Initial checkout time is in the same order like Opera. The problem was the massive use of fgets in parse_header (mail_util.cpp) now the complete header is read in one go. Furthermore, only interesting fields are extracted.

Remove some unused files, BeOS relicts... Feel free to translate the mail server and remove the own language system (headers/private/mail/MDRLanguage.h).

Sorry for the remaining old (and new) coding style issues, sometime just ignore them, to many :(



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40397 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5091a866eccc1a92df825e582153d35b3b8d519f 11-Aug-2010 Jérôme Duval <korli@users.berlios.de>

To be validated as part of bug #6386. Update glibc regex to 2.11, headers/posix/regex.h included. This imposes some changes in some of our sources using the regex.h,
mostly bin tools and mail kit. The use of __USE_GNU macro is needed for instance when the expected regex implementation is the GNU one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38031 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9f568b889d26244abec8a03dfd3363d99d1c5185 08-Apr-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

NULL check after pointer dereference. CID 1032, btw.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36098 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5344cdf47bc67d8bcf98c3936b28fbc613386265 11-Nov-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Made encoding detection actually work. Added a deprecation notice in E-mail.h.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9932 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eaed7feae7d8620ad978c55ac6cdf2fd764b958b 11-Nov-2004 shatty <shatty@nowhere.fake>

mime commentary in array, utilize textencoding for subject conversion to utf8


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9927 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f7215ac853ab5fda385dffd3e3dc0e1f74662ce9 20-Sep-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Imported MDR. Some code still not entirely functional -- I haven't been able to figure out how to detect SSL, so IMAP and POP have it turned off. PPP auto-detect is also not functional at the moment. Other than that, it seems to work beautifully. Packaging will come later.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9016 a95241bf-73f2-0310-859d-f6bbb57e9c96