#3568: Saving attachments to disk
--------------------+-------------------------------------------------------
 Reporter:  aitor   |       Owner:  mutt-dev
     Type:  defect  |      Status:  new     
 Priority:  major   |   Milestone:  1.6     
Component:  mutt    |     Version:  1.5.21  
 Keywords:          |  
--------------------+-------------------------------------------------------
 Hi,

 I sent this mail to mutt-users some days ago. In the past couple of days
 I've been hit by this behaviour (using mutt 1.5.21 compiled from scratch).
 Suppose that I receive a mail with several attachments:

 I     1 <no description>      [multipa/alternativ, 7bit, 7.2K][[BR]]

 I     2 ├─><no description>   [text/plain, 7bit, iso-8859-1, 0.7K][[BR]]

 I     3 └─><no description>   [text/html, 7bit, iso-8859-1, 6.3K][[BR]]

 A     4 file.txt              [text/plain, 8bit, us-ascii, 2.3K][[BR]]

 A     5 file.xml              [text/xml, 8bit, us-ascii, 0.1K][[BR]]

 A     6 file.pdf              [text/x-unknown-, base64, us-ascii,
 66K][[BR]]



 The message has 3 attachments, one text file, one xml document and one pdf
 document (this is a real example,the sender MUA being Thuderbird 3.1.18).
 It turns out that the sender MUA got it wrong, and the character encoding
 is wrongly set (us-ascii), but:

 - file.txt is utf-8 encoded

 - file.xml is also utf-8 encoded.

 - file.pdf is a pdf document.

 The problem is that there is no way to save these attachment properly. For
 instance, when saving file.xml all the non ascii characters are replaced
 with "?". So if file.xml originally was:

 <?xml version="1.0" encoding="utf-8"?>
 <a>©Áéñio</a>

 After saving to disk it becomes:

 <?xml version="1.0" encoding="utf-8"?>
 <a>????????io</a>

 The same happens with the text file. Even the pdf document is wrongly
 saved. The only way to actually get the original content of the attchments
 is to manually set the mime type (using ctrl-e) to
 "application/octet-stream", and then saving them to disk.

 I locally modified mutt the following below, because I don't want to
 perform any character conversions when saving attachments:

 diff -r 25a7f8f7d50d attach.c
 --- a/attach.c  Wed Sep 15 10:10:39 2010 -0700
 +++ b/attach.c  Thu Mar 01 07:12:54 2012 +0100
 @@ -802,7 +802,7 @@
        STATE s;

        memset (&s, 0, sizeof (s));
 -      s.flags |= M_CHARCONV;
 +      s.flags &= ~M_CHARCONV;

        if ((s.fpout = mutt_save_attachment_open (path, flags)) == NULL)
        {

 It would be better to parametrize this behaviour with a global option.
 Even better would be to first try to translate the attachment, and
 failback to a "raw" save if a conversion error occured (a character could
 not be translated). But I'm afraid I don't have the capabilities to code
 this :-(

 thanks,
                                          aitor

-- 
Ticket URL: <http://dev.mutt.org/trac/ticket/3568>
Mutt <http://www.mutt.org/>
The Mutt mail user agent

Reply via email to