History log of /haiku/src/kits/mail/MailMessage.cpp
Revision Date Author Comments
# c3162b5d 21-Jan-2023 Humdinger <humdingerb@gmail.com>

MailMessage: Fix date in header of forwarded mails

As investigated by madmax in #18230; Date() returns a time_t since 2015. Thanks!

Change-Id: Ic35129ad60f6cadc09917c05e86f726de3061dcb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6010
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 9f6dbb5f 05-Jun-2017 Augustin Cavalier <waddlesplash@gmail.com>

Fix the build following the 64-bit time_t switch.


# 7bdee8be 31-Aug-2015 Axel Dörfler <axeld@pinc-software.de>

BEmailMessage: added missing const, Date() returns time_t.

* Added missing const to some getter methods.
* Date() now tries to parse the date of the mail, and return it as
a time_t; you can still retrieve the actual string via
HeaderField("Date") if you have to.
* Mail now shows the time in the local time zone, and with the
current locale.


# cf14e7f2 26-Jun-2013 Axel Dörfler <axeld@pinc-software.de>

Build fixes.

* Never built a complete image from the IMAP branch before.


# 4a8448ce 26-Nov-2012 Axel Dörfler <axeld@pinc-software.de>

Major coding style cleanup.


# 146357b5 30-Oct-2012 Axel Dörfler <axeld@pinc-software.de>

Completed transition to the new mail API; ie. it compiles.

* Completely untested yet. Unlikely to work yet.


# 715bf3d1 26-Oct-2012 Axel Dörfler <axeld@pinc-software.de>

Work in progress of mail rework.

* Not everything compiles; all protocols, and inbound filters do, though.
* Renamed a few classes to give a better idea what they are for; prefixed
public classes with the 'B' prefix.
* Moved ProtocolConfigView's classes into the BPrivate namespace.
* Moved BMailFilter into its own file.
* Added BMailFilter::DescriptiveName(). This is now used by the RuleFilter
in order to give a description of what it's doing (ie. no more dozens of
"Rule filter" entries in the preferences).
* Removed no longer used MailAddon.h.
* Renamed Addon to AddOn where found, since that is more consistent with the
rest of the API.
* Merged the former MailProtocol with the former MailProtocolThread; the
differentiation between those two was pretty messy.
* All configuration views touched so far are now using the layout kit.
* The RuleFilter is currently broken functionality wise; I have not yet decided
how to solve the stuff it uses (TriggerFileMove() does not exist anymore,
for example).
* BMailAddOnSettings (formerly known as AddonSettings) now directly subclass
BMessage; there are no Settings() and EditSettings() method anymore. The
class uses a copy of itself to determine whether or not it has been changed.
* Lots of cleanup.


# 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


# e039afe8 29-Oct-2011 François Revol <revol@free.fr>

Define B_MAIL_DAEMON_SIGNATURE and use it instead of hardcoding the signature everywhere.


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


# cd591eca 19-Jun-2011 Axel Dörfler <axeld@pinc-software.de>

* Removed BONE PPP detection support.
* Style cleanup, no functional change intended.


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


# a64bd564 21-Mar-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Write MAIL:name, MAIL:thread and MAIL:account attribute. The account id is now stored in MAIL:account_id. This requires to re-download all mails to write the correct attribute (sorry).
Fixes #7375.



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


# df0ad9c1 14-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix account name in mail.
Work in progress: fetch next partial downloaded message.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40504 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


# be1c10ae 26-Apr-2010 Stephan Aßmus <superstippi@gmx.de>

If the BMailChain does not contain a setting for the path for storing out-going
mail, fall back to using $HOME/mail/out. Otherwise mails would be stored in
the current directroy. I have no idea why the default BMailChain would not
contain the setting, though.


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


# 2882dba2 24-Feb-2010 Alexandre Deckner <alex@zappotek.com>

* remove left-overs of deprecated ClassInfo.h includes (cf. OpenGrok) except in SupportKit.h for backward source compatiblity (although it shouldn't really matter).


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


# cee04e80 08-Feb-2010 Artur Wyszynski <aljen-mlists@o2.pl>

Fixed various errors/warnings reported by cppcheck:
* memory leaks
* resource leaks
* added const's to getters
* removed a few reundant conditions


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


# 7840f0fa 16-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Always add a timezone field to the date message, before that was only done
if there was an actual shift.
* Automatic whitespace cleanup.


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


# 6e927a5f 30-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

malloc.h ain't no standard header. Use stdlib.h instead.


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


# 2ae1709e 31-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed the date string to comply to RFC 2822 - apparently, the timezone must not be given
as a string anymore (it's deprecated). That at least allows mmlr's internet provider to
recognize mails as valid mails rather than spam.


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


# b5937fc6 09-Mar-2007 Axel Dörfler <axeld@pinc-software.de>

The Message-Id field now gets a default hostname added in case there is none set in the system.


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


# 1663fe07 06-Nov-2005 Alexander G.M. Smith <agmsmith@nowhere.fake>

Updated a few old BONE references to use the new build system defines.


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


# 71f0d1eb 25-Jan-2005 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Fixed a bug that would cause bogus Message-IDs on BONE systems. It seems that our utsname structure is 8 times larger than BONE's, so all the offsets are screwed up when you try to link our headers against BONE libraries. If we're really aiming for BONE compatibility in our network stack, perhaps this should be changed.


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


# fcdc48f1 30-Oct-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Fixed a nasty bug I introduced when I fixed IMAP that made it impossible to send mail. Apparently I don't send that much.... it's been in there for a good week or so.


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


# 6686b038 29-Oct-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Fixed forward with attachments


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9657 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


# 7bdee8beab1ad3214daaf55b42c56cc3e698065f 31-Aug-2015 Axel Dörfler <axeld@pinc-software.de>

BEmailMessage: added missing const, Date() returns time_t.

* Added missing const to some getter methods.
* Date() now tries to parse the date of the mail, and return it as
a time_t; you can still retrieve the actual string via
HeaderField("Date") if you have to.
* Mail now shows the time in the local time zone, and with the
current locale.


# cf14e7f21f0c663f4ec7a10d475e01279f0f45a0 26-Jun-2013 Axel Dörfler <axeld@pinc-software.de>

Build fixes.

* Never built a complete image from the IMAP branch before.


# 4a8448ce3494eb8f753bf02aee67f0aa09a058f3 26-Nov-2012 Axel Dörfler <axeld@pinc-software.de>

Major coding style cleanup.


# 146357b547221dd608cdb63feadd8b6bbc5988da 30-Oct-2012 Axel Dörfler <axeld@pinc-software.de>

Completed transition to the new mail API; ie. it compiles.

* Completely untested yet. Unlikely to work yet.


# 715bf3d17a81353ae5d1fa6867587cc0f5c32ce1 26-Oct-2012 Axel Dörfler <axeld@pinc-software.de>

Work in progress of mail rework.

* Not everything compiles; all protocols, and inbound filters do, though.
* Renamed a few classes to give a better idea what they are for; prefixed
public classes with the 'B' prefix.
* Moved ProtocolConfigView's classes into the BPrivate namespace.
* Moved BMailFilter into its own file.
* Added BMailFilter::DescriptiveName(). This is now used by the RuleFilter
in order to give a description of what it's doing (ie. no more dozens of
"Rule filter" entries in the preferences).
* Removed no longer used MailAddon.h.
* Renamed Addon to AddOn where found, since that is more consistent with the
rest of the API.
* Merged the former MailProtocol with the former MailProtocolThread; the
differentiation between those two was pretty messy.
* All configuration views touched so far are now using the layout kit.
* The RuleFilter is currently broken functionality wise; I have not yet decided
how to solve the stuff it uses (TriggerFileMove() does not exist anymore,
for example).
* BMailAddOnSettings (formerly known as AddonSettings) now directly subclass
BMessage; there are no Settings() and EditSettings() method anymore. The
class uses a copy of itself to determine whether or not it has been changed.
* Lots of cleanup.


# 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


# e039afe87e28d786408d3d9b4c802221481691b5 29-Oct-2011 François Revol <revol@free.fr>

Define B_MAIL_DAEMON_SIGNATURE and use it instead of hardcoding the signature everywhere.


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


# cd591eca1931f2a32dc503945ad41a73298ab00e 19-Jun-2011 Axel Dörfler <axeld@pinc-software.de>

* Removed BONE PPP detection support.
* Style cleanup, no functional change intended.


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


# a64bd5649d3aa752ef4672e72a2415861546997d 21-Mar-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Write MAIL:name, MAIL:thread and MAIL:account attribute. The account id is now stored in MAIL:account_id. This requires to re-download all mails to write the correct attribute (sorry).
Fixes #7375.



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


# df0ad9c12a92a83718b4442e87034a8a2951efff 14-Feb-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix account name in mail.
Work in progress: fetch next partial downloaded message.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40504 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


# be1c10ae1974b30a80fb9b312f5361e8df440d98 26-Apr-2010 Stephan Aßmus <superstippi@gmx.de>

If the BMailChain does not contain a setting for the path for storing out-going
mail, fall back to using $HOME/mail/out. Otherwise mails would be stored in
the current directroy. I have no idea why the default BMailChain would not
contain the setting, though.


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


# 2882dba2a1b05893c176324e99a80ccf7f857873 24-Feb-2010 Alexandre Deckner <alex@zappotek.com>

* remove left-overs of deprecated ClassInfo.h includes (cf. OpenGrok) except in SupportKit.h for backward source compatiblity (although it shouldn't really matter).


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


# cee04e8074ec61fd8c6dac3539c5b821c3618888 08-Feb-2010 Artur Wyszynski <aljen-mlists@o2.pl>

Fixed various errors/warnings reported by cppcheck:
* memory leaks
* resource leaks
* added const's to getters
* removed a few reundant conditions


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


# 7840f0faf55c4e576f57b60f7e4eceb69457a162 16-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Always add a timezone field to the date message, before that was only done
if there was an actual shift.
* Automatic whitespace cleanup.


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


# 6e927a5fc080cb934e7584454f472cacf4c3e361 30-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

malloc.h ain't no standard header. Use stdlib.h instead.


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


# 2ae1709efb0cc8bad8bf87c5bab489ad05360cfc 31-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed the date string to comply to RFC 2822 - apparently, the timezone must not be given
as a string anymore (it's deprecated). That at least allows mmlr's internet provider to
recognize mails as valid mails rather than spam.


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


# b5937fc6e68bec322010801b8edea24e0bb534ac 09-Mar-2007 Axel Dörfler <axeld@pinc-software.de>

The Message-Id field now gets a default hostname added in case there is none set in the system.


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


# 1663fe079b857860c496f490aa6ecbda8851bf06 06-Nov-2005 Alexander G.M. Smith <agmsmith@nowhere.fake>

Updated a few old BONE references to use the new build system defines.


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


# 71f0d1ebbe9714d78785f27754447c860424c328 25-Jan-2005 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Fixed a bug that would cause bogus Message-IDs on BONE systems. It seems that our utsname structure is 8 times larger than BONE's, so all the offsets are screwed up when you try to link our headers against BONE libraries. If we're really aiming for BONE compatibility in our network stack, perhaps this should be changed.


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


# fcdc48f1a7ccc5a21fbd3dc5a4ac0caf6858b58f 30-Oct-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Fixed a nasty bug I introduced when I fixed IMAP that made it impossible to send mail. Apparently I don't send that much.... it's been in there for a good week or so.


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


# 6686b0388310f7d87c430956c923108990b03426 29-Oct-2004 Nathan Whitehorn <nwhitehorn@nowhere.fake>

Fixed forward with attachments


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9657 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