[PATCH] encode mail address when passing via KApplication::invokeMailer
kloecker at kde.org
Sat Jan 8 14:45:06 GMT 2005
On Friday 07 January 2005 16:40, Tobias Koenig wrote:
> when you pass an email address with non-latin1 characters in the name
> to invokeMailer, in KMail you'll end up with '??????'.
> The problem is, that the name is given on the command line to kmail
> in latin1. To fix this, the attached patch encodes the name according
> to RFC2047, which can be read by KMail without problems. Ok to
> + QStringList tos = QStringList::split( ',', _to );
This does already break for the simple email address
"User, Joe" <joe.user at kde.org>
So please NEVER try to split a list of email addresses with a
QStringList::split( ',', foo ).
The attached patch fixes the problem correctly by encoding the whole to,
cc and bcc address lists in one RFC2047-like encoded blob. Technically
this isn't correct, but without a full RFC2822-compliant parser for
email addresses a better solution isn't possible. Since this hack is
only used when KMail is invoked and KMail decodes the blob correctly
this hack is IMO acceptable for now.
While improving Tobias patch I also fixed the code which builds the
mailto: url. Splitting the comma separated lists of email addresses
isn't necessary (according to RFC 2368 - The mailto URL scheme),
neither for the path (where the To addresses are put) nor for the
queries. Moreover, I thought it might be useful to actually specify the
protocol of the URL. Or does KURL automagically guess the right
protocol? Even if the path is empty?
Anyway, I've ported the patch to kdelibs 3_3 (which I'm still using) and
I've tested it with KMail and a testscript (as kmail replacement)
sending a message to a contact from KAddressBook and clicking on a
mailto: link (with cc and bcc query).
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 4394 bytes
Desc: not available
More information about the kde-core-devel