diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-20 18:41:21 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-20 18:41:21 +0200 |
| commit | 14e74f8f92ce949230e3008de8fd24d0c5a18153 (patch) | |
| tree | 1c9af4b288533652a40c1abc42201f1aa0e24ba8 /src/carddelegate.cpp | |
| parent | 90cf14b0b23218f0ca01a280998e855a00b47567 (diff) | |
| download | qtmaildir-14e74f8f92ce949230e3008de8fd24d0c5a18153.tar.gz qtmaildir-14e74f8f92ce949230e3008de8fd24d0c5a18153.zip | |
feat(compose): build outgoing messages with GMime, item 123
One built message serves three consumers: the autosaved draft, the bytes on
the send command's stdin, and the sent copy. A draft is therefore
byte-identical to what would be sent.
Three GMime defaults are wrong for this application and each is corrected
explicitly, because all three fail only on accented text and this user
writes Italian:
GMime encodes as iso-8859-1 unless told otherwise, so the subject carries an
explicit utf-8 argument. g_mime_text_part_set_text() encodes with whatever
charset is set when it is CALLED, so setting the charset afterwards produces
a part labelled utf-8 carrying latin-1 bytes; the content stream is built
directly instead. And neither Date nor Message-ID is generated unless asked
for, and a message without a Message-ID cannot be threaded by anything that
receives it.
Attachments are checked at build time rather than at attach time: a file can
vanish in between, and a message missing the thing it was written to carry
must never reach the send command.
An account with no address fails the build rather than producing a message
with an empty From. Config::account() returns a default-constructed Account
for an unknown key rather than failing, so without that guard a bad key
would produce silently malformed mail.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015muoUo2GdxmBDSp5vjYcbE
Diffstat (limited to 'src/carddelegate.cpp')
0 files changed, 0 insertions, 0 deletions
