Commit Graph

59 Commits

Author SHA1 Message Date
cketti 9f4f0cf6a8 Modify BinaryTempFileBody to retain the encoded body
For now this breaks a lot of things, e.g. saving messages to the database
and making messages 7-bit safe.
2014-12-08 16:32:23 +01:00
cketti d32d6eed0e Move "magic" from Part.setBody() implementations to MimeMessageHelper.setBody()
Now adding message bodies during parsing won't set/modify headers.
2014-12-08 16:32:23 +01:00
cketti bcb6c75c2e Add support for storing raw header fields 2014-12-08 16:32:23 +01:00
Tobias Baum b6079d6460 UCDetector warnings: Made things private, deleted unused methods and fields 2014-09-22 21:52:59 +02:00
Tobias Baum d467dca32c Added testcases for parsing and removed unused methods for parsing 2014-09-14 11:05:55 +02:00
Mike Perry d67a59b77f Fixes for cketti's code review on pull req #472
Leave the hostname == null checks so we can fall back if a hostname is not
found. Also convert message-id to upper case to match Apple Mail (for
privacy).
2014-06-13 17:49:26 -07:00
Mike Perry 38c90146e1 Issue 6372: Add preference for setting timezone to UTC.
This is a privacy preference to avoid leaking your current location while
replying to email.
2014-05-27 07:53:50 -07:00
Mike Perry 7ac7fe2cfe Issue 3559: Use From or ReplyTo hostname in Message-ID if available.
I wrote this fix to avoid obviously specifying that I am using a mobile device
to reply to an email.

Others want this for ease of filtering messages from their host by Message-ID.
2014-05-27 07:51:23 -07:00
Joe Steele 1ff128890d Fix MimeMessage(InputStream in, boolean recurse)
No actual impact, because all existing calls were
with recurse = true.
2013-09-07 12:52:14 -04:00
Joe Steele 1ca1ef5c84 Content-type case-conversion changes.
Don't convert the content-type to lower case in
MimeMessage.getContentType.  The content-type may have optional parameters
that are case sensitive (boundary, name).

In removing the lower-case conversion from getContentType, a review was
made for inappropriate case-sensitive comparisons which use data obtained
with getContentType.  The only ones found were in isMimeType in both
Message and MimeBodyPart.

Case-sensitive instances of isMimeType were made case-insensitive.  Also,
isMimeType was moved from Message to MimeMessage for symmetry with
MimeBodyPart (MimeMessage & MimeBodyPart are similar and contain a good
bit of duplication such as this).

The unit test required fixing now that the case of the boundary text is
preserved.

References:

Commits 2c5186 and dc4002 added the toLowerCase to getContentType in
MimeMessage & MimeBodyPart (Issue 94).

Later, commit 50cd60 removed the toLowerCase addition from MimeBodyPart
(Issue 1289).
2013-09-03 19:54:18 -04:00
Joe Steele 63f68328ff Standardize line breaks within headers.
Fix the unit test to match.

All line endings in the unit test are now the same.

(Just for consistency.  Not a big deal, since such problems are fixed when
the messages are run through EOLConvertingOutputStream.)
2013-09-03 19:54:17 -04:00
Joe Steele 45e3d8459e Recursively convert attachments of type message/rfc822 to 7bit if necessary.
The preceding commit resulted in attachments of type message/rfc822 being
sent with 8bit encoding even when the SMTP server did not support
8BITMIME.  This commit assures that messages will be converted to 7bit
when necessary.

A new interface CompositeBody was created that extends Body, and classes
Message and Multipart were changed from implementing Body to
CompositeBody.  Additional classes BinaryTempFileMessageBody and
LocalAttachmentMessageBody were created (by extending BinaryTempFileBody
and LocalAttachmentBody, respectively), and they too implement
CompositeBody.

A CompositeBody is a Body containing a composite-type that can contain
subparts that may require recursive processing when converting from 8bit
to 7bit.  The Part to which a CompositeBody belongs is only permitted to
use 8bit or 7bit encoding for the CompositeBody.

Previously, a Message was created so that it was 7bit clean by default
(even though that meant base64 encoding all attachments, including
messages).  Then, if the SMTP server supported 8BITMIME,
Message.setEncoding("8bit") was called so that bodies of type TextBody
would been transmitted using 8bit encoding rather than quoted-printable.

Now, messages are created with 8bit encoding by default.  Then, if the
SMTP server does not support 8BITMIME, Message.setUsing7bitTransport is
called to recursively convert the message and its subparts to 7bit.  The
method setUsing7bitTransport was added to the interfaces Part and
CompositeBody.

setEncoding no longer iterates over parts in Multipart.  That task belongs
to setUsing7bitTransport, which may in turn call setEncoding on the parts.

MimeUtility.getEncodingforType was created as a helper function for
choosing a default encoding that should be used for a given MIME type when
an attachment is added to a message (either while composing or when
retrieving from LocalStore).

setEncoding was implemented in MimeBodyPart to assure that the encoding
set in the Part's headers was the same as set for the Part's Body.  (The
method already existed in MimeMessage, which has similarities with
MimeBodyPart.)

MimeMessage.parse(InputStream in, boolean recurse) was implemented so that
the parser could be told to recursively process nested messages read from
the InputStream, thus giving access to all subparts at any level that may
need to be converted from 8bit to 7bit.
2013-09-03 19:53:13 -04:00
Danny Baumann 275700e482 Fix a number of build warnings.
This gets rid of about 50 warnings. Deprecation warnings still remain,
though.
2013-02-04 11:18:49 +01:00
Andrew Chen 5ac3d1d5c2 Use existing LocalMessage for the JB notifications.
LocalMessage already has a content preview in it; reuse that.
Remove unneeded MimeMessage#getPreview() method now that we don't need
to generate a preview anymore.
2013-01-07 23:20:35 -08:00
Danny Baumann 6f7ec3e401 Incorporate review comments. 2013-01-05 13:21:17 +01:00
cketti ec76dca57f Remove unused stuff 2012-10-24 01:37:33 +02:00
Jesse Vincent 0c34a21ff0 Add a fromMe method on messages 2012-10-03 21:56:28 -04:00
Rob Bayer fdb1267cb1 Add remote IMAP search support.
* rbayer/IMAPsearch: (21 commits)
  More cleanup
  Code Cleanup getRemoteSearchFullText -> isRemoteSearchFullText line wraps for preference items
  Refactor to allow fetching of extra search results beyond original request.  Most code moved out of ImapStore and ImapFolder and into MessagingController.searchRemoteMessagesSynchronous.  Should make it easier to add remoteSearch for other server types.
  Prevent delete of search results while search results open
  remove duplicated code block
  Don't hide Crypto when IMAPsearch disabled
  Code Style Cleanup: Tabs -> 4 spaces Remove trailing whitespace from blank lines
  tabs -> spaces (my bad...)
  Fix opening of folders to be Read-Write when necessary, even if they were previously opened Read-Only.
  add missing file
  Working IMAP search, with passable UI.
  UI improvements
  Simple help info when enabling Remote Search
  Dependency for preferences
  Basic IMAP search working
2012-09-13 09:10:37 -07:00
Bernhard Redl 89f6c2f6d0 upgraded Mime4J 0.7-SNAPSHOT -> 0.7.2 (fixes MimeMultipart parser bug) 2012-08-15 01:47:57 +02:00
cketti 71174417ce Clone Message object to avoid ConcurrentModificationExceptions
Fixes issue 3953
2012-01-04 03:57:53 +01:00
Andrew Gaul 98d0b61890 API 7 fixes 2011-11-02 20:47:48 -07:00
Andrew Chen ea05f3b5d0 Merge branch 'legacy-collections' of https://github.com/andrewgaul/k-9 into andrewgaul
* 'legacy-collections' of https://github.com/andrewgaul/k-9:
  Prefer unsynchronized Collection types
2011-11-01 13:26:54 -07:00
cketti b69d6cb64c Use Locale.US with toUpperCase() and toLowerCase() where appropriate 2011-10-27 17:17:43 +02:00
Andrew Gaul 80d9246130 Prefer unsynchronized Collection types 2011-10-19 21:56:20 -07:00
Andrew Gaul 47eb0fa2e1 Prefer StringBuilder over StringBuffer
The former is unsynchronized and slightly faster.
2011-10-05 21:50:31 -07:00
Jesse Vincent 3679b31b12 Workaround for market-reported error:
java.lang.Error: org.apache.james.mime4j.io.MaxHeaderLimitException: Maximum header limit exceeded
at com.kaitenmail.mail.internet.MimeMessage.parse(MimeMessage.java:85)
at com.kaitenmail.mail.store.Pop3Store$Pop3Message.parse(Pop3Store.java:932)
at com.kaitenmail.mail.store.Pop3Store$Pop3Folder.fetchBody(Pop3Store.java:714)
at com.kaitenmail.mail.store.Pop3Store$Pop3Folder.fetch(Pop3Store.java:579)
at com.kaitenmail.controller.MessagingController.downloadSmallMessages(MessagingController.java:1562)
at com.kaitenmail.controller.MessagingController.downloadMessages(MessagingController.java:1288)
at com.kaitenmail.controller.MessagingController.synchronizeMailboxSynchronous(MessagingController.java:1031)
at com.kaitenmail.controller.MessagingController.access$400(MessagingController.java:81)
at com.kaitenmail.controller.MessagingController$8.run(MessagingController.java:823)
at com.kaitenmail.controller.MessagingController.run(MessagingController.java:276)
at java.lang.Thread.run(Thread.java:1096)
Caused by: org.apache.james.mime4j.io.MaxHeaderLimitException: Maximum header limit exceeded
at org.apache.james.mime4j.stream.AbstractEntity.parseField(AbstractEntity.java:153)
at org.apache.james.mime4j.stream.MimeEntity.advance(MimeEntity.java:120)
at org.apache.james.mime4j.stream.MimeTokenStream.next(MimeTokenStream.java:351)
at org.apache.james.mime4j.parser.MimeStreamParser.parse(MimeStreamParser.java:179)
at com.kaitenmail.mail.internet.MimeMessage.parse(MimeMessage.java:83)
... 10 more
2011-07-25 01:49:42 -04:00
cketti 222cd43c80 Some code cleanup. No functional changes. 2011-06-17 04:13:32 +02:00
HIRANO Takahito 580d19ec17 Allow emoji input in subjects.
Signed-off-by: HIRANO Takahito <hiranotaka@zng.info>
2011-02-20 10:15:50 +09:00
Jesse Vincent 12d1097a24 Big, scary massive "ant astyle" to get us back to something
approximating AOSP coding standards.
2011-02-06 17:09:48 -05:00
Jesse Vincent ff0f517cbb Configure MIME4J to not die when there are long header lines or a large message header 2011-02-01 20:48:20 +00:00
Jesse Vincent a234c39722 astyle 2011-01-19 21:33:23 +00:00
Jesse Vincent 8329a0287b Upgrade to mime4j. "0.7" branch as of
http://svn.apache.org/repos/asf/james/mime4j/trunk@1058339
2011-01-19 21:32:09 +00:00
cketti 8279092070 Fixed lots of warnings (unused imports/variables, missing annotations, etc.) 2011-01-18 23:54:49 +00:00
Jesse Vincent d1a1b12aae Support emoji in subjects.
Signed-off-by: HIRANO Takahito <hiranotaka@zng.info>
2011-01-14 00:53:19 +00:00
Jesse Vincent de806f7715 astyle 2011-01-06 16:55:08 +00:00
Jesse Vincent 2daf8eaec8 Allow emoji input.
Signed-off-by: HIRANO Takahito <hiranotaka@zng.info>
2011-01-04 13:25:59 +00:00
Jesse Vincent f5eb6e03af astyle 2010-12-01 06:32:29 +00:00
Jesse Vincent c79ea226a5 Remove "throws" declarations that didn't actually get thrown. Remove a
couple of try blocks that only caught throws we didn't throw. IntelliJ
optimization.
2010-12-01 03:02:13 +00:00
Jesse Vincent 14055691a3 Merge branch 'mail-on-sd'
* mail-on-sd: (40 commits)
  Added more comments to explain how the locking mecanism works for LocalStore
  Fixed wrong method being called during experimental provider initialization (since provider isn't enabled, that didn't harm)
  Add more comments about how the various StorageProviders work and how they're enabled
  find src/com/fsck/ -name \*.java|xargs astyle --style=ansi --mode=java --indent-switches --indent=spaces=4 --convert-tabs
  French localization for storage related settings
  Remove unused SD card strings (replaced with storage indirection)
  Merge mail-on-sd branch from trunk
  Reset mail service on storage mount (even if no account uses the storage, to be improved)
  find src/com/fsck/ -name \*.java|xargs astyle --style=ansi --mode=java --indent-switches --indent=spaces=4 --convert-tabs
  Migraion -> Migration
  move the Storage location preference into preferences rather than the wizard.
  Made LocalStore log less verbose Added @Override compile checks
  Added ACTION_SHUTDOWN broadcast receiver to properly initiate shutdown sequence (not yet implemented) and cancel any scheduled Intent
  Be more consistent about which SQLiteDatabase variable is used (from instance variable to argument variable) to make code more refactoring-friendly (class is already big, code extraction should be easier if not referencing the instance variable).
  Added transaction timing logging
  Factorised storage lock/transaction handling code for regular operations.
  Use DB transactions to batch modifications (makes code more robust / could improve performances)
  Merge mail-on-sd branch from trunk
  Update issue 888 Added DB close on unmount / DB open on mount
  Update issue 888 Back to account list when underlying storage not available/unmounting in MessageView / MessageList
  ...
2010-11-13 21:40:56 +00:00
Koji Arai 28d3967d0f Fixes issue 305
Support Content-Id header to show inline images.
2010-07-11 13:44:16 +00:00
Jesse Vincent ee63564138 "ReceivedDate" was an unused concept. Its value was never set. 2010-07-10 16:40:00 +00:00
Daniel Applebaum b35f807820 Fixes Issue 227
Provide for controlling the maximum age of syncrhonized messages.
Efficient with IMAP, much less efficient with other Stores.
2010-05-30 21:20:47 +00:00
Jesse Vincent 1a66072910 find src/com/fsck/ -name \*.java|xargs astyle --style=ansi --mode=java --indent-switches --indent=spaces=4 --convert-tabs --unpad=paren 2010-05-30 04:17:00 +00:00
cketti 5627117ddf Use 997 as maximum line length for References header. See http://code.google.com/p/k9mail/source/detail?r=1714 for details. 2010-05-21 16:37:45 +00:00
cketti c5486469c2 - Add menu item to show additional headers in the message view
- Add option to save all headers locally (incoming server settings)

Applied patch provided by timmlinder with small modifications.

Fixes issue 43
2010-05-21 15:34:29 +00:00
cketti c29722a56c Make sure the References header doesn't exceed 998 characters and the value won't get Q-encoded. Thanks to fiouzy for providing the patch.
Fixes issue 1559
2010-05-21 12:20:32 +00:00
Jesse Vincent 8af7f4a7b6 find src/com/fsck/ -name \*.java|xargs astyle --style=ansi --mode=java --indent-switches --indent=spaces=4 --convert-tabs --unpad=paren 2010-04-29 04:59:14 +00:00
cketti 57cc4cd735 Code cleanup. Fixed lots of warnings reported by Eclipse.
- Removed unused imports
- Removed unused variables/code
- Parametrized raw types
- Added @Override annotations
- Added hashCode() when equals() was overriden
2010-04-16 12:20:10 +00:00
cketti c64c0a1c30 Replaced base64 as default encoding for text bodies with quoted-printable. Please use issue 1176 for discussion. 2010-02-05 14:26:09 +00:00
cketti 45036ae5c8 Use 8bit transfer encoding for the text body if SMTP server advertises 8BITMIME. In all other cases base64 is still used (including saved copies in IMAP "Sent" folder).
Feel free to revert this if anything breaks.
2010-02-04 23:37:50 +00:00