Commit Graph

4879 Commits

Author SHA1 Message Date
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
Joe Steele 77407eb5b7 Don't base64 encode attachments of type message/rfc822.
The problem:  Receive a message with an attachment of type message/rfc822
and forward it.  When the message is sent, K-9 Mail uses base64 encoding
for the attachment.  (Alternatively, you could compose a new message and
add such an attachment from a file using a filing-picking app, but that is
not 100% effective because the app may not choose the correct
message/rfc822 MIME type for the attachment.)

Such encoding is prohibited per RFC 2046 (5.2.1) and RFC 2045 (6.4).  Only
8bit or 7bit encoding is permitted for attachments of type message/rfc822.

Thunderbird refuses to decode such attachments.  All that is shown is the
base64 encoded body.

This commit implements LocalAttachmentBody.setEncoding.  If an attachment
to a newly composed message is itself a message, then setEncoding("8bit")
is called, otherwise setEncoding("base64")  is called for the attachment.
Similar behavior occurs when an attachment is retrieved from LocalStore.

The setEncoding method was added to the Body interface, since all
implementations of Body now declare the method.

The problem here differs from that in the preceding commit:  Here, the
encoding problem occurs on sending, not on receipt.  Here, the entire
message (headers and body) is base64 encoded, not just the body.  Here,
the headers correctly identify the encoding used;  it's just that the RFC
does not permit such encoding of attached messages.  The problem here
could in fact occur in combination with the preceding problem.
2013-09-03 19:52:11 -04:00
Joe Steele 1d1db50a9f Don't always base64 encode in BinaryTempFileBody.writeTo
Issue 5734 exemplifies the problem:  receive a message with an attachment
of type message/rfc822 that doesn't use base64 encoding for the body of
the attached message.  K-9 Mail incorrectly stores the attached message
locally with its original headers but using base64 encoding for the body.
A discrepancy thus exists between what the headers say about the encoding
of the body versus the actual encoding used.  This is obvious when
attempting to view the attachment (either by using a compatible message
viewer available on the device or by saving the attachment to a file and
viewing the file contents).

The process: When a message with an attached sub-message is received,
Message.parse puts the attachment in a new MimeMessage with the
attachment's body in a BinaryTempFileBody.  LocalFolder.saveAttachment
then calls Message.writeTo (which later calls BinaryTempFileBody.writeTo)
to place the entire attachment (headers and body) in a new file that will
become a LocalAttachmentBody.  Until now,  BinaryTempFileBody.writeTo
could only save the message body using base64 encoding.

This commit implements BinaryTempFileBody.setEncoding and assures that the
body is written out with the same encoding that was found in its  headers.
2013-09-03 19:51:26 -04:00
Joe Steele de23a0e3e1 SMTP 8BITMIME compliance
Currently, K-9 Mail detects if an SMTP server supports 8BITMIME (RFC
6152), and if so, TextBody parts are sent with content-transfer-ecoding =
8bit.  Otherwise, they are sent using quoted-printable.

This adds the required "BODY=8BITMIME" parameter to the MAIL command when
sending messages to servers that support 8BITMIME.
2013-09-03 16:47:57 -04:00
cketti d357e02544 Merge pull request #373
Update Russian translation
2013-09-02 22:23:56 +02:00
cketti e2731bc570 Merge pull request #372
Update Slovak translation
2013-09-02 22:23:33 +02:00
cketti 56be846035 Merge pull request #371
Update French translation
2013-09-02 22:23:09 +02:00
cketti 79326cb64e Merge pull request #370
Update provider settings for GMX
2013-09-02 22:22:28 +02:00
russian k-9 mail user b9110f9293 Update strings.xml
Updates and improvements (RU)
2013-09-02 23:31:41 +04:00
Jesse Vincent 0f07fbab42 Bumped manifest to 4.511 2013-08-31 11:57:59 -04:00
Jesse Vincent 0c9807c2ee 4.511 changelog 2013-08-31 11:57:44 -04:00
pyler f72309b431 SK translation 2013-08-31 17:43:35 +02:00
Léo Colombaro 0808283543 Fix & Update French Translations
* Lire => Lu
* New translations
2013-08-30 17:03:03 +02:00
nysatrok 01096d5db8 Update providers.xml according to https://autoconfig.thunderbird.net/v1.1/gmx.de 2013-08-30 14:39:41 +00:00
cketti 8fb2c5a490 Merge branch 'pr/349'
Remove remote/local store references when deleting accounts
2013-08-30 03:03:30 +02:00
cketti 9b370d0620 Add code to remove references to LocalStore when deleting accounts 2013-08-30 03:02:50 +02:00
cketti 01336944ec Refactor code to remove remote store references when deleting accounts 2013-08-30 02:28:57 +02:00
cketti ef467eb806 Run script to sync translations 2013-08-29 21:24:58 +02:00
cketti 22e6c8cdbe Add visual indicator that a menu item opens a submenu
This isn't the best solution. Most of the developers agree that a right-aligned
triangle or arrow would be a better fit for such an indicator. But we currently
don't have the time to write the code to do it.
Personally, I think we should try to get rid of submenus altogether.
2013-08-29 21:24:15 +02:00
cketti fb6cff238c Merge branch 'pr/364'
Make actions shown in message view menu configurable
2013-08-29 21:14:04 +02:00
cketti a32068f6cd Remove icons from the "Refile" submenu
We don't show icons in any other submenu.
2013-08-29 21:13:28 +02:00
cketti fc14eff097 Add icon for the copy action 2013-08-29 20:54:36 +02:00
cketti 2043df74da Restructure code to set visibility of copy, move, archive, spam menu items
In my opinion this structure makes the code much easier to read.
2013-08-29 18:20:03 +02:00
cketti ee9246b4f9 Fix code style/formatting 2013-08-29 17:34:46 +02:00
Joe Steele 84a6842550 Fixes for automated change log publication
The build.xml script was failing if there wasn't already a gh-pages
branch in the local git repo.

Changes:

Fetch the origin/gh-pages branch.

Create a temporary "gh-pages-tmp" branch using origin/gh-pages as the
starting point.  And then as before, copy the changelog to the branch,
push the branch back to origin, and finally delete the temporary branch.

Added more comments to the script.

Ref: comments on Github attached to commit k9mail/k-9@09c27d9.
2013-08-27 20:28:06 -04:00
Joe Steele ac42bce799 Clean-up related to certificate chains
Per comments in pull request #365
2013-08-27 18:48:07 -04:00
Jesse Vincent 8b4064b216 Bumped manifest to 4.510 2013-08-27 16:16:00 -04:00
Jesse Vincent 91cc4e47c8 4.510 changelog 2013-08-27 16:14:44 -04:00
Jesse Vincent 818c5c910d Fix flagging of messages in message list 2013-08-27 16:08:05 -04:00
Jesse Vincent 20c4a97c2c Merge pull request #365 from zjw/Issue_5886_misleading_ssl_errors
Fix erroneous SSL certificate warnings
2013-08-27 11:57:48 -07:00
Jesse Vincent 8e875fd059 add notes about the reason for https://github.com/k9mail/k-9/pull/367 2013-08-27 14:57:21 -04:00
blackbox87 fbe62c544e Some kernels have frandom and erandom
When a users kernel has frandom and erandom this would cause the whole app to crash.

When using erandom the system doesn't use any entropy at all.
2013-08-27 14:57:20 -04:00
Jesse Vincent 87cac74300 Merge pull request #369 from pylerSM/patch-1
Updates to Slovakian translation
2013-08-27 11:46:17 -07:00
pyler 1966c1f38a SK translation 2013-08-27 11:32:35 +02:00
Jesse Vincent b5b91302f2 Load unread and flagged message counts lazily in the folder list
The new method is a little bit janky, but a little bit of jank is better than 2n
heavy SQL count queries per folder before we even show the folder list.

On my 200 folder account, display of the folder list activity drops from 10+s to
< 1s
2013-08-26 23:09:47 -04:00
Andrew Chen e0f33b8701 Merge pull request #366 from bboa/patch-1
Update strings.xml
2013-08-26 19:38:48 -07:00
russian k-9 mail user 966562b473 Update strings.xml
New strings added
2013-08-26 00:18:38 +04:00
Joe Steele 604aa87ccf Fix erroneous SSL certificate warnings
If you attempted to use SSL to connect to a server that speaks
STARTTLS, you should get an SSL protocol error.  Instead, you
were likely to get an "Unrecognized Certificate" error that shows
you an unrelated certificate chain and asks you to accept it or
reject it.  Neither action would work because the actual problem
had nothing to do with certificates.  The unrelated certificate
chain that popped up had been statically stored when validating
a prior connection to a different server.

With this patch, certificate chains are no longer stored statically
when validating server connections.

Issue 5886 is an example of a user experiencing this problem.
2013-08-25 15:43:36 -04:00
Jesse Vincent 7aeaa46fe6 Koji Arai pointed out that I screwed up the constants for folder open modes 2013-08-25 11:36:25 -04:00
Leon Handreke 8464a432e2 Use named indices to get values from "visible refile actions" preference 2013-08-25 11:35:14 +01:00
Leon Handreke 22639a7361 Make actions shown in message view menu configurable
Fixes #5850.
2013-08-24 19:26:06 +01:00
Jesse Vincent 09c27d94b8 Bumped manifest to 4.509 2013-08-23 13:37:03 -04:00
Jesse Vincent d78df526e8 4.509 changelog 2013-08-23 13:36:36 -04:00
Jesse Vincent 3b515b5f83 Merge pull request #363 from DrSegatron/patch-1
Update strings.xml
2013-08-23 08:03:19 -07:00
DrSegatron 467d4f3f75 Update strings.xml
Improved spelling
2013-08-23 13:10:37 +02:00
cketti aab998d17f Avoid CursorIndexOutOfBoundsException when deleting a message
Deleting a message creates an entry in EmailProviderCache so
EmailProviderCacheCursor can skip the Cursor row during the time
it takes to update the database.
Previously EmailProviderCacheCursor.isLast() returned the wrong
result when the last row in the wrapped Cursor was hidden. This
lead to the crash in MergeCursor.

Fixes issue 5820
2013-08-23 04:16:00 +02:00
Jesse Vincent b5f31af402 tweak list item "read item" background color so you can see the item divider
a bit better
2013-08-22 21:08:51 -04:00
Jesse Vincent 65ed9072bf clean up the folder list item chips 2013-08-22 21:08:51 -04:00
Jesse Vincent 7ba68dbc3c update the new message list item to work better in various odd configurations 2013-08-22 21:08:51 -04:00
Jesse Vincent 99e354bc9f Add back select/deselect action to return it to the context menu where users keep looking 2013-08-22 20:56:56 -04:00