Error in KApplication::invokeMailer(QString...)

Ingo Klöcker kloecker at kde.org
Fri Oct 4 00:09:16 BST 2002


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

while fixing address related bugs in KMail I noticed that the way 
KApplication::invokeMailer(QString...) passes email addresses to the 
email application should be changed. Currently it simply passes email 
addresses as Unicode strings to the email application. This fails since 
somewhere between invokeMailer and KMail the Unicode strings is (most 
likely) converted to latin1. All non-latin1 characters will end up as 
question marks.

This is for example the cause for Bug #41018 (KAddressBook doesn't 
support "send mail" with Cyrillic names correctly)
http://bugs.kde.org/show_bug.cgi?id=41018

To reproduce add the address 寿司 刺身 <sushi at sashimi> to your address book 
and try to send a mail. You'll see that the To: field in KMail will be 
filled with ?? ?? <sushi at sashimi>.

According to RFC 2368 (The mailto URL scheme) email addresses have to be 
encoded as described in RFC 2047 if they contain 8-bit characters.

The aforementioned email address encoded according to RFC 2047 looks 
like this: =?utf-8?b?5a+/5Y+4IOWIuui6qw==?= <sushi at sashimi>

When you start KMail with the following command line you will get the 
desired result:
kmail '=?utf-8?b?5a+/5Y+4IOWIuui6qw==?= <sushi at sashimi>'

This means that in KApplication::invokeMailer() the following strings 
have to be encoded according to RFC 2047 before they are passed to the 
email application: to, cc, bcc, subject
The body of the message must not be encoded.

The problem is that AFAICS the RFC 2047 codec currently only exists in 
KMail (KMMsgBase::encodeRFC2047String(...) and 
KMMsgBase::decodeRFC2047String(...) ).

How should we proceed? Should these two functions be moved to KCodecs? 
Should this happen before or after KDE 3.1?

Regards,
Ingo

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.0 (GNU/Linux)

iD8DBQE9nM4dGnR+RTDgudgRAhlqAKCsVmETlS+CEHUA7OdwRy9p67sOIQCguTZZ
vNZS5oqsSrE45XpAt4ZoLiE=
=Nb0j
-----END PGP SIGNATURE-----





More information about the kde-core-devel mailing list