Solution and small question (was Re: [imp] Question about
charset and Saved Mail)
Jan Schneider
jan at horde.org
Wed Jan 15 14:22:32 PST 2003
Zitat von Santiago Romero <sromero at servicom2000.com>:
> En Mon, 13 Jan 2003 09:12:04 +0100 Santiago Romero
> <sromero at servicom2000.com> escribio:
>
> Well, I finally managed to solve my problem.
>
> Problem: Displaying of Quoted Printable messages in INBOX,
> Trash and Sent-Mail is right (with message.php3 source code),
> but in the Drafts folder (with compose.php3), charsets are not
> translated correctly (i.e. camión -> cami=3Dn).
>
> Browsing mailbox.php3 I found a piece of source code that
> decoded QUOTED_PRINTABLE and ENCBASE64 bodies. I applied that
> code to the DRAFT section of compose.php3:
>
> ---------------------------------------------------------------
> case DRAFT:
> // ( some code snipped for readability )
> if ($mailbox && $index && $bodypart)
> {
> $h = imap_header($imp->stream, imap_msgno($imp->stream, $index));
> (...)
> $msg = imap_fetchbody($imp->stream, $index, $bodypart, FT_UID);
> $structure = @imap_fetchstructure($imp->stream, $index, FT_UID);
> if (@count($structure->parts) > 1) attach_files($structure, '');
>
> $get_sig = false;
>
> // begin new code
> // Translate charsets (from mailbox.php3 / Horde-IMP team)
> // compose.php3 changed by sromero - 15-01-2003
> if ($structure->encoding == ENCQUOTEDPRINTABLE) {
> $qmsg = imap_qprint($msg);
> if (!empty($qmsg)) $msg = $qmsg;
> } elseif ($structure->encoding == ENCBASE64) {
> $msg = imap_base64($msg);
> }
> // end new code
> }
> break;
> ---------------------------------------------------------------
>
> Now it seems to work correctly, but I have 2 doubts:
>
>
> 1.- I also need to decode UTF8, and I have apache with xml
> support, so I have the utf8_decode function available. How do I
> identify WHEN my message is utf8-encoded? I mean,
>
> elseif( $structure->encoding == WHAT_DO_I_PUT_HERE_FOR_UTF8 )
> $msg = utf8_decode($msg);
>
> How do I detect if my message is UTF8 encoded?
The encoding in this part of the code is the Transfer-Encoding that defines
how the message is encoded to only contain 7bit characters.
UTF-8 refers to the messages Content-Encoding that defines the charset the
message is written in. These two have nothing to do with each other.
> 2.- Do you think the above source code is well applied, or it
> could damage attachs or something like that? I hope $msg is just
> the body message, not the message itself. If it's the body message
> I think the code is right, if it's the msg + attachments, I'm
> afraid the qprint() or base64() functions could modify the attachs
> or something they shouldn't touch.
>
> The variable $msg is defined as:
>
> $msg = imap_fetchbody($imp->stream, $index, $bodypart, FT_UID);
>
> The third parameter is:
>
> And bodypart is 1 in this part of the code... is that fetching just
> the body, so it's right, isn't it?
Not sure about this one.
Jan.
--
http://www.horde.org - The Horde Project
http://www.ammma.de - discover your knowledge
http://www.tip4all.de - Deine private Tippgemeinschaft
More information about the imp
mailing list