What's new in TSmtpCli V7

From Overbyte
Revision as of 07:50, 29 May 2009 by Arno (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

UnicodeString

Since Delphi/C++Builder 2009 and better "string" maps to a UnicodeString. That's why the component has to convert these UTF-16 strings to ANSI strings with a correct code page first before transmission. Also SMTP allows 7-bit ASCII chars in the range hex 00-7F only. So if the (converted) AnsiString contains characters in the 8-bit range (hex 80-FF) it has to be encoded with a proper transfer-encoding as well.

TSmtpCli V7 is capable to perform the right string conversion and encoding automatically in the background, provided the following conditions met:

  • Property CharSet is properly set, it defaults to current system ANSI charset.
  • Property Allow8BitChars is set to FALSE.
  • Property DefaultEncoding is set to either smtpEnc7bit or smtpEnc8bit.
  • Message text is assigned to property MailMessage and property OnGetData is unassigned.

Notes on property CharSet (breaking change in V7!)

  • Assigning an unsupported value raises an exception and sets the default system charset.
  • Assigning an empty string sets the default system charset silently.

Mapping of MIME charset names to Windows code page identifiers is done in new unit OverbyteIcsCharsetUtils. If a charset name is mapped to a code page identifier it's not guaranteed that this ID is available and supported by Windows as well. For example, the Chinese character sets are not supported by default on western Windows installations. After installation of the optional Far-East language pack those charsets are supported as well.

Avoid use of "utf-7", since UTF-7 not very well supported by the component, instead use "utf-8" if you need to send UNICODE.