Files
ANSLibs/chilkat/include/CkEmailW.h

2436 lines
120 KiB
C
Raw Normal View History

// CkEmailW.h: interface for the CkEmailW class.
//
//////////////////////////////////////////////////////////////////////
// This header is generated for Chilkat 11.3.0
#ifndef _CkEmailW_H
#define _CkEmailW_H
#include "chilkatDefs.h"
#include "CkString.h"
#include "CkWideCharBase.h"
class CkBinDataW;
class CkByteData;
class CkCertW;
class CkStringArrayW;
class CkJsonObjectW;
class CkDateTimeW;
class CkStringBuilderW;
class CkCertChainW;
class CkStringTableW;
class CkTaskW;
class CkPrivateKeyW;
class CkXmlCertVaultW;
#if !defined(__sun__) && !defined(__sun)
#pragma pack (push, 8)
#endif
// CLASS: CkEmailW
class CK_VISIBLE_PUBLIC CkEmailW : public CkWideCharBase
{
private:
// Don't allow assignment or copying these objects.
CkEmailW(const CkEmailW &);
CkEmailW &operator=(const CkEmailW &);
public:
CkEmailW(void);
virtual ~CkEmailW(void);
static CkEmailW *createNew(void);
void CK_VISIBLE_PRIVATE inject(void *impl);
// May be called when finished with the object to free/dispose of any
// internal resources held by the object.
void dispose(void);
// BEGIN PUBLIC INTERFACE
// ----------------------
// Properties
// ----------------------
// The body of the email. If the email has both HTML and plain-text bodies, this
// property returns the HTML body. The GetHtmlBody and GetPlainTextBody methods can
// be used to access a specific body. The HasHtmlBody and HasPlainTextBody methods
// can be used to determine the presence of a body.
void get_Body(CkString &str);
// The body of the email. If the email has both HTML and plain-text bodies, this
// property returns the HTML body. The GetHtmlBody and GetPlainTextBody methods can
// be used to access a specific body. The HasHtmlBody and HasPlainTextBody methods
// can be used to determine the presence of a body.
const wchar_t *body(void);
// The body of the email. If the email has both HTML and plain-text bodies, this
// property returns the HTML body. The GetHtmlBody and GetPlainTextBody methods can
// be used to access a specific body. The HasHtmlBody and HasPlainTextBody methods
// can be used to determine the presence of a body.
void put_Body(const wchar_t *newVal);
// This property is deprecated and applications should use the MailMan.SmtpMailFrom
// property instead.
void get_BounceAddress(CkString &str);
// This property is deprecated and applications should use the MailMan.SmtpMailFrom
// property instead.
const wchar_t *bounceAddress(void);
// This property is deprecated and applications should use the MailMan.SmtpMailFrom
// property instead.
void put_BounceAddress(const wchar_t *newVal);
// Represents the main charset of the email, such as utf-8 , iso-8859-1 , Shift_JIS
// , us-ascii , etc. This property can be empty if there is no explicit charset,
// such as for emails with only us-ascii.
//
// Setting this property causes Chilkat to use the new charset in HTML and
// plain-text bodies, where possible. This can include updating the HTML META tag
// in HTML bodies to agree with the charset specified in the email header and also
// the byte representation of the HTML body in the email.
//
void get_Charset(CkString &str);
// Represents the main charset of the email, such as utf-8 , iso-8859-1 , Shift_JIS
// , us-ascii , etc. This property can be empty if there is no explicit charset,
// such as for emails with only us-ascii.
//
// Setting this property causes Chilkat to use the new charset in HTML and
// plain-text bodies, where possible. This can include updating the HTML META tag
// in HTML bodies to agree with the charset specified in the email header and also
// the byte representation of the HTML body in the email.
//
const wchar_t *charset(void);
// Represents the main charset of the email, such as utf-8 , iso-8859-1 , Shift_JIS
// , us-ascii , etc. This property can be empty if there is no explicit charset,
// such as for emails with only us-ascii.
//
// Setting this property causes Chilkat to use the new charset in HTML and
// plain-text bodies, where possible. This can include updating the HTML META tag
// in HTML bodies to agree with the charset specified in the email header and also
// the byte representation of the HTML body in the email.
//
void put_Charset(const wchar_t *newVal);
// true if the email arrived encrypted and was successfully decrypted, otherwise
// false. This property is only meaningful when the ReceivedEncrypted property is
// equal to true.
bool get_Decrypted(void);
// The date/time from the Date header in the UTC/GMT timezone in RFC822 string
// form.
void get_EmailDateStr(CkString &str);
// The date/time from the Date header in the UTC/GMT timezone in RFC822 string
// form.
const wchar_t *emailDateStr(void);
// The date/time from the Date header in the UTC/GMT timezone in RFC822 string
// form.
void put_EmailDateStr(const wchar_t *newVal);
// If the email was received encrypted, this contains the details of the
// certificate used for encryption.
void get_EncryptedBy(CkString &str);
// If the email was received encrypted, this contains the details of the
// certificate used for encryption.
const wchar_t *encryptedBy(void);
// Set this property to send an email to a list of recipients stored in a plain
// text file. The file format is simple: one recipient per line, no comments
// allowed, blank lines are ignored.Setting this property is equivalent to adding a
// CKX-FileDistList header field to the email. Chilkat Mail treats header fields
// beginning with CKX- specially in that these fields are never transmitted with
// the email when sent. However, CKX fields are saved and restored when saving to
// XML or loading from XML (or MIME). When sending an email containing a
// CKX-FileDistList header field, Chilkat Mail will read the distribution list file
// and send the email to each recipient. Emails can be sent individually, or with
// BCC, 100 recipients at a time. (see the MailMan.SendIndividual property).
void get_FileDistList(CkString &str);
// Set this property to send an email to a list of recipients stored in a plain
// text file. The file format is simple: one recipient per line, no comments
// allowed, blank lines are ignored.Setting this property is equivalent to adding a
// CKX-FileDistList header field to the email. Chilkat Mail treats header fields
// beginning with CKX- specially in that these fields are never transmitted with
// the email when sent. However, CKX fields are saved and restored when saving to
// XML or loading from XML (or MIME). When sending an email containing a
// CKX-FileDistList header field, Chilkat Mail will read the distribution list file
// and send the email to each recipient. Emails can be sent individually, or with
// BCC, 100 recipients at a time. (see the MailMan.SendIndividual property).
const wchar_t *fileDistList(void);
// Set this property to send an email to a list of recipients stored in a plain
// text file. The file format is simple: one recipient per line, no comments
// allowed, blank lines are ignored.Setting this property is equivalent to adding a
// CKX-FileDistList header field to the email. Chilkat Mail treats header fields
// beginning with CKX- specially in that these fields are never transmitted with
// the email when sent. However, CKX fields are saved and restored when saving to
// XML or loading from XML (or MIME). When sending an email containing a
// CKX-FileDistList header field, Chilkat Mail will read the distribution list file
// and send the email to each recipient. Emails can be sent individually, or with
// BCC, 100 recipients at a time. (see the MailMan.SendIndividual property).
void put_FileDistList(const wchar_t *newVal);
// The combined name and email address of the sender, such as John Smith . This is
// the content that will be placed in the From: header field. If the actual sender
// is to be different, then set the Sender property to a different email address.
void get_From(CkString &str);
// The combined name and email address of the sender, such as John Smith . This is
// the content that will be placed in the From: header field. If the actual sender
// is to be different, then set the Sender property to a different email address.
const wchar_t *ck_from(void);
// The combined name and email address of the sender, such as John Smith . This is
// the content that will be placed in the From: header field. If the actual sender
// is to be different, then set the Sender property to a different email address.
void put_From(const wchar_t *newVal);
// The email address of the sender.
void get_FromAddress(CkString &str);
// The email address of the sender.
const wchar_t *fromAddress(void);
// The email address of the sender.
void put_FromAddress(const wchar_t *newVal);
// The name of the sender.
void get_FromName(CkString &str);
// The name of the sender.
const wchar_t *fromName(void);
// The name of the sender.
void put_FromName(const wchar_t *newVal);
// The complete MIME header of the email.
void get_Header(CkString &str);
// The complete MIME header of the email.
const wchar_t *header(void);
// A read-only property that identifies the primary language group for the email.
// Possible values are:
//
// * latin1 (for English and all Western European languages)
// * central (for Central European languages such as Polish, Czech,
// Hungarian, etc.)
// * russian (for Cyrillic languages)
// * greek
// * turkish
// * hebrew
// * arabic
// * thai
// * vietnamese
// * chinese
// * japanese
// * korean
// * devanagari
// * bengali
// * gurmukhi
// * gujarati
// * oriya
// * tamil
// * telugu
// * kannada
// * malayalam
// * sinhala
// * lao
// * tibetan
// * myanmar
// * georgian
// * unknown
//
// The language group determination is made soley on the subject and
// plain-text/HTML email bodies. Characters in the FROM, TO, CC, and other header
// fields are not considered.
//
// The primary determining factor is the characters found in the Subject header
// field. For example, if an email contains Japanese in the Subject, but the body
// contains Russian characters, it will be considered japanese .
//
// The language is determined by where the Unicode chars fall in various blocks in
// the Unicode Basic Multilingual Plane. For more information, see the book Unicode
// Demystified by Richard Gillam.
//
void get_Language(CkString &str);
// A read-only property that identifies the primary language group for the email.
// Possible values are:
//
// * latin1 (for English and all Western European languages)
// * central (for Central European languages such as Polish, Czech,
// Hungarian, etc.)
// * russian (for Cyrillic languages)
// * greek
// * turkish
// * hebrew
// * arabic
// * thai
// * vietnamese
// * chinese
// * japanese
// * korean
// * devanagari
// * bengali
// * gurmukhi
// * gujarati
// * oriya
// * tamil
// * telugu
// * kannada
// * malayalam
// * sinhala
// * lao
// * tibetan
// * myanmar
// * georgian
// * unknown
//
// The language group determination is made soley on the subject and
// plain-text/HTML email bodies. Characters in the FROM, TO, CC, and other header
// fields are not considered.
//
// The primary determining factor is the characters found in the Subject header
// field. For example, if an email contains Japanese in the Subject, but the body
// contains Russian characters, it will be considered japanese .
//
// The language is determined by where the Unicode chars fall in various blocks in
// the Unicode Basic Multilingual Plane. For more information, see the book Unicode
// Demystified by Richard Gillam.
//
const wchar_t *language(void);
// The date/time found in the Date header field returned in the local timezone in
// RFC822 string form.
void get_LocalDateStr(CkString &str);
// The date/time found in the Date header field returned in the local timezone in
// RFC822 string form.
const wchar_t *localDateStr(void);
// The date/time found in the Date header field returned in the local timezone in
// RFC822 string form.
void put_LocalDateStr(const wchar_t *newVal);
// Identifies the email software that sent the email.
void get_Mailer(CkString &str);
// Identifies the email software that sent the email.
const wchar_t *mailer(void);
// Identifies the email software that sent the email.
void put_Mailer(const wchar_t *newVal);
// The number of alternative bodies present in the email. An email that is not
// multipart/alternative will return 0 alternatives. An email that is
// multipart/alternative will return a number greater than or equal to 1.
int get_NumAlternatives(void);
// Returns the number of embedded emails. Some mail clients will embed an email
// that is to be forwarded into a new email as a message/rfc822 subpart of the MIME
// message structure. This property tells how many emails have been embedded. The
// original email can be retrieved by calling GetAttachedMessage.
int get_NumAttachedMessages(void);
// The number of attachments contained in the email.
//
// Note: If an email is downloaded from an IMAP server without attachments, then
// the number of attachments should be obtained by calling the IMAP object's
// GetMailNumAttach method. This property indicates the actual number of
// attachments already present within the email object.
//
int get_NumAttachments(void);
// The number of blind carbon-copy email recipients.
int get_NumBcc(void);
// The number of carbon-copy email recipients.
int get_NumCC(void);
// Returns the number of days old from the current system date/time. The email's
// date is obtained from the Date header field. If the Date header field is
// missing, or invalid, then -9999 is returned. A negative number may be returned
// if the Date header field contains a future date/time. (However, -9999 represents
// an error condition.)
int get_NumDaysOld(void);
// Returns the number of message/rfc822 parts contained within the multipart/digest
// enclosure. If no multipart/digest enclosure exists, then this property has the
// value of 0. The GetDigest method is called to get the Nth digest as an email
// object.
int get_NumDigests(void);
// The number of header fields. When accessing a header field by index, the 1st
// header field is at index 0, and the last is at NumHeaderFields-1. (Chilkat
// indexing is always 0-based.)
int get_NumHeaderFields(void);
// The number of related items present in this email. Related items are typically
// image files (JPEGs or GIFs) or style sheets (CSS files) that are included with
// HTML formatted messages with internal CID hyperlinks.
int get_NumRelatedItems(void);
// Returns the number of replacement patterns previously set by calling the
// SetReplacePattern method 1 or more times. If replacement patterns are set, the
// email bodies and header fields are modified by applying the search/replacement
// strings during the message sending process.
int get_NumReplacePatterns(void);
// (For multipart/report emails that have sub-parts with Content-Types such as
// message/feedback-report.) Any MIME sub-part within the email that has a
// Content-Type of message/* , but is not a message/rfc822 , is considered to be a
// report and is included in this count. (A message/rfc822 is considered an
// attached message and is handled by the NumAttachedMessages property and the
// GetAttachedMessage method.) Any MIME sub-part having a Content-Type equal to
// text/rfc822-headers is also considered to be a report . The GetReport method may
// be called to get the body content of each report contained within a
// multipart/report email.
int get_NumReports(void);
// The number of direct email recipients.
int get_NumTo(void);
// Selects the hash algorithm for use within OAEP padding when encrypting email
// using RSAES-OAEP. The valid choices are sha1 , sha256 , sha384 , sha512 ,
void get_OaepHash(CkString &str);
// Selects the hash algorithm for use within OAEP padding when encrypting email
// using RSAES-OAEP. The valid choices are sha1 , sha256 , sha384 , sha512 ,
const wchar_t *oaepHash(void);
// Selects the hash algorithm for use within OAEP padding when encrypting email
// using RSAES-OAEP. The valid choices are sha1 , sha256 , sha384 , sha512 ,
void put_OaepHash(const wchar_t *newVal);
// Selects the MGF hash algorithm for use within OAEP padding when encrypting email
// using RSAES-OAEP. The valid choices are sha1 , sha256 , sha384 , sha512 ,
void get_OaepMgfHash(CkString &str);
// Selects the MGF hash algorithm for use within OAEP padding when encrypting email
// using RSAES-OAEP. The valid choices are sha1 , sha256 , sha384 , sha512 ,
const wchar_t *oaepMgfHash(void);
// Selects the MGF hash algorithm for use within OAEP padding when encrypting email
// using RSAES-OAEP. The valid choices are sha1 , sha256 , sha384 , sha512 ,
void put_OaepMgfHash(const wchar_t *newVal);
// Selects the RSA encryption scheme when encrypting email. The default value is
// false, which selects RSAES_PKCS1-V1_5. If set to true, then RSAES_OAEP is
// used.
bool get_OaepPadding(void);
// Selects the RSA encryption scheme when encrypting email. The default value is
// false, which selects RSAES_PKCS1-V1_5. If set to true, then RSAES_OAEP is
// used.
void put_OaepPadding(bool newVal);
// When true (the default) the methods to save email attachments and related
// items will overwrite files if they already exist. If false, then the methods
// that save email attachments and related items will append a string of 4
// characters to create a unique filename if a file already exists. The filename of
// the attachment (or related item) within the email object is updated and can be
// retrieved by the program to determine the actual file(s) created.
bool get_OverwriteExisting(void);
// When true (the default) the methods to save email attachments and related
// items will overwrite files if they already exist. If false, then the methods
// that save email attachments and related items will append a string of 4
// characters to create a unique filename if a file already exists. The filename of
// the attachment (or related item) within the email object is updated and can be
// retrieved by the program to determine the actual file(s) created.
void put_OverwriteExisting(bool newVal);
// When an email is sent encrypted (using PKCS7 public-key encryption), this
// selects the underlying symmetric encryption algorithm. Possible values are: aes
// , aes-gcm , des , 3des , and rc2 . The default value is aes .
//
// Note: The aes-gcm option was added in Chilkat v10.0.0
//
void get_Pkcs7CryptAlg(CkString &str);
// When an email is sent encrypted (using PKCS7 public-key encryption), this
// selects the underlying symmetric encryption algorithm. Possible values are: aes
// , aes-gcm , des , 3des , and rc2 . The default value is aes .
//
// Note: The aes-gcm option was added in Chilkat v10.0.0
//
const wchar_t *pkcs7CryptAlg(void);
// When an email is sent encrypted (using PKCS7 public-key encryption), this
// selects the underlying symmetric encryption algorithm. Possible values are: aes
// , aes-gcm , des , 3des , and rc2 . The default value is aes .
//
// Note: The aes-gcm option was added in Chilkat v10.0.0
//
void put_Pkcs7CryptAlg(const wchar_t *newVal);
// When the email is sent encrypted (using PKCS7 public-key encryption), this
// selects the key length of the underlying symmetric encryption algorithm. The
// possible values allowed depend on the Pkcs7CryptAlg property. For aes , the key
// length may be 128, 192, or 256. For 3des the key length must be 192. For des the
// key length must be 40. For rc2 the key length can be 40, 56, 64, or 128.
int get_Pkcs7KeyLength(void);
// When the email is sent encrypted (using PKCS7 public-key encryption), this
// selects the key length of the underlying symmetric encryption algorithm. The
// possible values allowed depend on the Pkcs7CryptAlg property. For aes , the key
// length may be 128, 192, or 256. For 3des the key length must be 192. For des the
// key length must be 40. For rc2 the key length can be 40, 56, 64, or 128.
void put_Pkcs7KeyLength(int newVal);
// Only applies when building an email with non-English characters where the
// charset is not explicitly set. The Chilkat email component will automatically
// choose a charset based on the languages found within an email (if the charset is
// not already specified within the MIME or explicitly specified by setting the
// Charset property). The default charset chosen for each language is:
//
// Chinese: gb2312
// Japanese: shift_JIS
// Korean: ks_c_5601-1987
// Thai: windows-874
// All others: iso-8859-*
//
//
// This allows for charsets such as iso-2022-jp to be chosen instead of the
// default. If the preferred charset does not apply to the situation, it is not
// used. For example, if the preferred charset is iso-2022-jp, but the email
// contains Greek characters, then the preferred charset is ignored.
//
void get_PreferredCharset(CkString &str);
// Only applies when building an email with non-English characters where the
// charset is not explicitly set. The Chilkat email component will automatically
// choose a charset based on the languages found within an email (if the charset is
// not already specified within the MIME or explicitly specified by setting the
// Charset property). The default charset chosen for each language is:
//
// Chinese: gb2312
// Japanese: shift_JIS
// Korean: ks_c_5601-1987
// Thai: windows-874
// All others: iso-8859-*
//
//
// This allows for charsets such as iso-2022-jp to be chosen instead of the
// default. If the preferred charset does not apply to the situation, it is not
// used. For example, if the preferred charset is iso-2022-jp, but the email
// contains Greek characters, then the preferred charset is ignored.
//
const wchar_t *preferredCharset(void);
// Only applies when building an email with non-English characters where the
// charset is not explicitly set. The Chilkat email component will automatically
// choose a charset based on the languages found within an email (if the charset is
// not already specified within the MIME or explicitly specified by setting the
// Charset property). The default charset chosen for each language is:
//
// Chinese: gb2312
// Japanese: shift_JIS
// Korean: ks_c_5601-1987
// Thai: windows-874
// All others: iso-8859-*
//
//
// This allows for charsets such as iso-2022-jp to be chosen instead of the
// default. If the preferred charset does not apply to the situation, it is not
// used. For example, if the preferred charset is iso-2022-jp, but the email
// contains Greek characters, then the preferred charset is ignored.
//
void put_PreferredCharset(const wchar_t *newVal);
// If true, then header fields added via the AddHeaderField or AddHeaderField2
// methods are prepended to the top of the header as opposed to appended to the
// bottom. The default value is false.
bool get_PrependHeaders(void);
// If true, then header fields added via the AddHeaderField or AddHeaderField2
// methods are prepended to the top of the header as opposed to appended to the
// bottom. The default value is false.
void put_PrependHeaders(bool newVal);
// true if this email was originally received with encryption, otherwise false.
bool get_ReceivedEncrypted(void);
// true if this email was originally received with a digital signature, otherwise
// false.
bool get_ReceivedSigned(void);
// Sets the Reply-To header field to the specified email address such as
// john@example.com . The Reply-To header automatically defaults to the From email
// address. You would only set this property if you wish for the Reply-To email
// address to be different from the From address.
//
// There is usually only a single Reply-To email address. If multiple Reply-To
// addresses are needed, then set with a comma separated list of email addresses
// such as john@example.com, mary@somewhere.com .
//
void get_ReplyTo(CkString &str);
// Sets the Reply-To header field to the specified email address such as
// john@example.com . The Reply-To header automatically defaults to the From email
// address. You would only set this property if you wish for the Reply-To email
// address to be different from the From address.
//
// There is usually only a single Reply-To email address. If multiple Reply-To
// addresses are needed, then set with a comma separated list of email addresses
// such as john@example.com, mary@somewhere.com .
//
const wchar_t *replyTo(void);
// Sets the Reply-To header field to the specified email address such as
// john@example.com . The Reply-To header automatically defaults to the From email
// address. You would only set this property if you wish for the Reply-To email
// address to be different from the From address.
//
// There is usually only a single Reply-To email address. If multiple Reply-To
// addresses are needed, then set with a comma separated list of email addresses
// such as john@example.com, mary@somewhere.com .
//
void put_ReplyTo(const wchar_t *newVal);
// Set to true if you want the email to request a return-receipt when received by
// the recipient. The default value is false.
//
// Setting this property causes the Disposition-Notification-To email header to be
// added when the email is sent.
//
bool get_ReturnReceipt(void);
// Set to true if you want the email to request a return-receipt when received by
// the recipient. The default value is false.
//
// Setting this property causes the Disposition-Notification-To email header to be
// added when the email is sent.
//
void put_ReturnReceipt(bool newVal);
// Set to true if this email should be sent encrypted.
bool get_SendEncrypted(void);
// Set to true if this email should be sent encrypted.
void put_SendEncrypted(bool newVal);
// Set to true if this email should be sent with a digital signature.
//
// Note: Please be aware of the Apple Mail bug explained in the web page at the
// link below.
//
bool get_SendSigned(void);
// Set to true if this email should be sent with a digital signature.
//
// Note: Please be aware of the Apple Mail bug explained in the web page at the
// link below.
//
void put_SendSigned(bool newVal);
// true if the email was received with one or more digital signatures, and if all
// the signatures were validated indicating that the email was not altered.
// Otherwise this property is set to false. (This property is only meaningful
// when the ReceivedSigned property is equal to true.)
bool get_SignaturesValid(void);
// If the email was received digitally signed, this property contains the fields of
// the cert's SubjectDN.
//
// For example: US, 60187, Illinois, Wheaton, 1719 E Forest Ave, Chilkat Software,
// Inc. , Chilkat Software, Inc.
//
// It is like the DN (Distinguished Name), but without the AttrName= before each
// attribute.
//
void get_SignedBy(CkString &str);
// If the email was received digitally signed, this property contains the fields of
// the cert's SubjectDN.
//
// For example: US, 60187, Illinois, Wheaton, 1719 E Forest Ave, Chilkat Software,
// Inc. , Chilkat Software, Inc.
//
// It is like the DN (Distinguished Name), but without the AttrName= before each
// attribute.
//
const wchar_t *signedBy(void);
// Selects the signature algorithm to be used when sending signed (PKCS7) email.
// The default value is PKCS1-v1_5 . This can be set to RSASSA-PSS (or simply pss )
// to use the RSASSA-PSS signature scheme.
//
// Note: This property only applies when signing with an RSA private key. It does
// not apply for ECC or DSA private keys.
//
void get_SigningAlg(CkString &str);
// Selects the signature algorithm to be used when sending signed (PKCS7) email.
// The default value is PKCS1-v1_5 . This can be set to RSASSA-PSS (or simply pss )
// to use the RSASSA-PSS signature scheme.
//
// Note: This property only applies when signing with an RSA private key. It does
// not apply for ECC or DSA private keys.
//
const wchar_t *signingAlg(void);
// Selects the signature algorithm to be used when sending signed (PKCS7) email.
// The default value is PKCS1-v1_5 . This can be set to RSASSA-PSS (or simply pss )
// to use the RSASSA-PSS signature scheme.
//
// Note: This property only applies when signing with an RSA private key. It does
// not apply for ECC or DSA private keys.
//
void put_SigningAlg(const wchar_t *newVal);
// Selects the underlying hash algorithm used when sending signed (PKCS7) email.
// Possible values are sha1 , sha256 , sha384 , sha512 , md5 , and md2 .
void get_SigningHashAlg(CkString &str);
// Selects the underlying hash algorithm used when sending signed (PKCS7) email.
// Possible values are sha1 , sha256 , sha384 , sha512 , md5 , and md2 .
const wchar_t *signingHashAlg(void);
// Selects the underlying hash algorithm used when sending signed (PKCS7) email.
// Possible values are sha1 , sha256 , sha384 , sha512 , md5 , and md2 .
void put_SigningHashAlg(const wchar_t *newVal);
// The size in bytes of the email, including all parts and attachments.
//
// Note: This property is only valid if the full email was downloaded. If only the
// header was downloaded, then this property will contain the size of just the
// header.
//
int get_Size(void);
// The email subject.
void get_Subject(CkString &str);
// The email subject.
const wchar_t *subject(void);
// The email subject.
void put_Subject(const wchar_t *newVal);
// This is the unique ID assigned by the POP3 server. Emails can be retrieved or
// deleted from the POP3 server via the UIDL. The header field for this property is
// X-UIDL .
//
// Important: Emails downloaded via the IMAP protocol do not have UIDL's. UIDL's
// are specific to the POP3 protocol. IMAP servers use UID's (notice the spelling
// difference -- UIDL vs. UID ). An email downloaded via the Chilkat IMAP component
// will contain a ckx-imap-uid header field that holds either an IMAP UID or
// sequence number. If the email was downloaded (from IMAP) using a UID,then
// ckx-imap-uid contains a UID. If the email was downloaded by sequence number,
// then it contains a sequence number (not unique and can change with a new
// session). The ckx-imap-isUid header, which can have the value YES or NO , tells
// what ckx-imap-uid contains.
//
void get_Uidl(CkString &str);
// This is the unique ID assigned by the POP3 server. Emails can be retrieved or
// deleted from the POP3 server via the UIDL. The header field for this property is
// X-UIDL .
//
// Important: Emails downloaded via the IMAP protocol do not have UIDL's. UIDL's
// are specific to the POP3 protocol. IMAP servers use UID's (notice the spelling
// difference -- UIDL vs. UID ). An email downloaded via the Chilkat IMAP component
// will contain a ckx-imap-uid header field that holds either an IMAP UID or
// sequence number. If the email was downloaded (from IMAP) using a UID,then
// ckx-imap-uid contains a UID. If the email was downloaded by sequence number,
// then it contains a sequence number (not unique and can change with a new
// session). The ckx-imap-isUid header, which can have the value YES or NO , tells
// what ckx-imap-uid contains.
//
const wchar_t *uidl(void);
// This is a catch-all property to be used for uncommon needs. This property
// defaults to the empty string, and should typically remain empty.
//
// * NoBccHeader - (added in v11.0.0) Do not add the Bcc MIME header for BCC
// email addresses. Note: The NoBccHeader keyword must be present before
// calling AddBcc or AddMultipleBcc
// * NO_FORMAT_FLOWED - Don't automatically add format=flowed to any
// Content-Type header.
//
//
// References:
// 1: #AddBcc
// 2: #AddMultipleBcc
void get_UncommonOptions(CkString &str);
// This is a catch-all property to be used for uncommon needs. This property
// defaults to the empty string, and should typically remain empty.
//
// * NoBccHeader - (added in v11.0.0) Do not add the Bcc MIME header for BCC
// email addresses. Note: The NoBccHeader keyword must be present before
// calling AddBcc or AddMultipleBcc
// * NO_FORMAT_FLOWED - Don't automatically add format=flowed to any
// Content-Type header.
//
//
// References:
// 1: #AddBcc
// 2: #AddMultipleBcc
const wchar_t *uncommonOptions(void);
// This is a catch-all property to be used for uncommon needs. This property
// defaults to the empty string, and should typically remain empty.
//
// * NoBccHeader - (added in v11.0.0) Do not add the Bcc MIME header for BCC
// email addresses. Note: The NoBccHeader keyword must be present before
// calling AddBcc or AddMultipleBcc
// * NO_FORMAT_FLOWED - Don't automatically add format=flowed to any
// Content-Type header.
//
//
// References:
// 1: #AddBcc
// 2: #AddMultipleBcc
void put_UncommonOptions(const wchar_t *newVal);
// Applies to the UnpackHtml method. If true, then relative paths are used within
// the HTML for the links to the related files (images and style sheets) that were
// unpacked to the filesystem. Otherwise absolute paths are used. The default value
// is true.
bool get_UnpackUseRelPaths(void);
// Applies to the UnpackHtml method. If true, then relative paths are used within
// the HTML for the links to the related files (images and style sheets) that were
// unpacked to the filesystem. Otherwise absolute paths are used. The default value
// is true.
void put_UnpackUseRelPaths(bool newVal);
// ----------------------
// Methods
// ----------------------
// Adds an attachment using the contents of a BinData object. If contentType is empty,
// then the content-type will be inferred from the filename extension.
bool AddAttachmentBd(const wchar_t *filename, CkBinDataW &binData, const wchar_t *contentType);
// Adds or replaces a MIME header field in one of the email attachments. If the
// header field does not exist, it is added. Otherwise it is replaced.
void AddAttachmentHeader(int index, const wchar_t *fieldName, const wchar_t *fieldValue);
// Adds a recipient to the blind carbon-copy (BCC) list. emailAddress is required; friendlyName is
// optional. Call this method separately for each BCC recipient.
//
// Note: Before v11.0.0, BCC addresses are not added to the MIME header. After
// v11.0.0, BCC addresses are included in the MIME header. Most email servers
// remove the BCC header before delivering the message to regular recipients. The
// NoBccHeader keyword can be used in UncommonOptions to prevent BCC email
// addresses in the MIME passed to the SMTP server. If your application specifies
// NoBccHeader , do so before adding BCC addresses.
//
//
// References:
// 1: #UncommonOptions
bool AddBcc(const wchar_t *friendlyName, const wchar_t *emailAddress);
// Adds a recipient to the carbon-copy list. emailAddress is required, but friendlyName may be
// empty.
//
// To add multiple CC recipients, call this method once per recipient.
//
bool AddCC(const wchar_t *friendlyName, const wchar_t *emailAddress);
// Adds an attachment directly from data in memory to the email.
bool AddDataAttachment(const wchar_t *fileName, CkByteData &content);
// Adds an attachment to an email from in-memory data. Same as AddDataAttachment
// but allows the content-type to be specified.
bool AddDataAttachment2(const wchar_t *fileName, CkByteData &content, const wchar_t *contentType);
// Allows for certificates to be explicitly specified for sending encrypted email
// to one or more recipients. Call this method once per certificate to be used. The
// ClearEncryptCerts method may be called to clear the list of explicitly-specified
// certificates.
//
// Note: It is possible to send encrypted email without explicitly specifying the
// certificates. On Windows computers, the registry-based Current-User and
// Local-Machine certificate stores are automatically searched for certs matching
// each of the recipients (To, CC, and BCC recipients).
//
// Note: The SetEncryptCert method is equivalent to calling ClearEncryptCerts
// followed by AddEncryptCert.
//
bool AddEncryptCert(CkCertW &cert);
// Adds a file as an attachment to the email. Returns the MIME content-type of the
// attachment, which is inferred based on the filename extension.
bool AddFileAttachment(const wchar_t *path, CkString &outStrContentType);
// Adds a file as an attachment to the email. Returns the MIME content-type of the
// attachment, which is inferred based on the filename extension.
const wchar_t *addFileAttachment(const wchar_t *path);
// Same as AddFileAttachment, but the content type can be explicitly specified.
bool AddFileAttachment2(const wchar_t *path, const wchar_t *contentType);
// Any standard or non-standard (custom) header field can be added to the email
// with this method. One interesting feature is that all header fields whose name
// begins with CKX- will not be included in the header when an email is sent. These
// fields will be included when saved to or loaded from XML. This makes it easy to
// include persistent meta-data with an email which your programs can use in any
// way it chooses.
//
// Important: This method will replace an already-existing header field. To allow
// for adding duplicate header fields, call AddHeaderField2 (see below).
//
void AddHeaderField(const wchar_t *fieldName, const wchar_t *fieldValue);
// This method is the same as AddHeaderField, except that if the header field
// already exists, it is not replaced. A duplicate header will be added.
void AddHeaderField2(const wchar_t *fieldName, const wchar_t *fieldValue);
// Sets the HTML body of the email. Use this method if there will be multiple
// versions of the body, but in different formats, such as HTML and plain text.
// Otherwise, set the body by calling the SetHtmlBody method.
bool AddHtmlAlternativeBody(const wchar_t *body);
// Adds an iCalendar (text/calendar) alternative body to the email. The icalContent
// contains the content of the iCalendar data. A sample is shown here:BEGIN:VCALENDAR
// VERSION:2.0
// PRODID:-//hacksw/handcal//NONSGML v1.0//EN
// BEGIN:VEVENT
// UID:uid1@example.com
// DTSTAMP:19970714T170000Z
// ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
// DTSTART:19970714T170000Z
// DTEND:19970715T035959Z
// SUMMARY:Bastille Day Party
// END:VEVENT
// END:VCALENDAR
// The methodName is the method attribute used in the Content-Type header field in the
// alternative body. For example, if set to REQUEST , then the alternative body's
// header would look like this:Content-Type: text/calendar; method=REQUEST
// Content-Transfer-Encoding: base64
bool AddiCalendarAlternativeBody(const wchar_t *icalContent, const wchar_t *methodName);
// Adds multiple recipients to the blind carbon-copy list from a comma-separated
// string of email addresses. Returns true if successful.
//
// Note: Before v11.0.0, BCC addresses are not added to the MIME header. After
// v11.0.0, BCC addresses are included in the MIME header. Most email servers
// remove the BCC header before delivering the message to regular recipients. The
// NoBccHeader keyword can be used in UncommonOptions to prevent BCC email
// addresses in the MIME passed to the SMTP server. If your application specifies
// NoBccHeader , do so before adding BCC addresses.
//
//
// References:
// 1: #UncommonOptions
bool AddMultipleBcc(const wchar_t *commaSeparatedAddresses);
// Adds multiple recipients to the carbon-copy list. The parameter is a string
// containing a comma separated list of full email addresses. Returns True if
// successful.
bool AddMultipleCC(const wchar_t *commaSeparatedAddresses);
// Adds multiple recipients to the to list. The parameter is a string containing a
// comma separated list of full email addresses. Returns True if successful.
bool AddMultipleTo(const wchar_t *commaSeparatedAddresses);
// Adds a PFX file to the object's list of sources for locating certificates and
// private keys during decryption or signing. To add multiple PFX sources, call
// this method for each file. bd should contain the bytes of a PFX file (also
// known as PKCS12 or .p12). The password is the password for the PFX.
bool AddPfxSourceBd(CkBinDataW &bd, const wchar_t *password);
// Adds a PFX to the object's internal list of sources to be searched for
// certificates and private keys when decrypting. Multiple PFX sources can be added
// by calling this method once for each. (On the Windows operating system, the
// registry-based certificate stores are also automatically searched, so it is
// commonly not required to explicitly add PFX sources.)
//
// The pfxBytes contains the bytes of a PFX file (also known as PKCS12 or .p12).
//
bool AddPfxSourceData(CkByteData &pfxBytes, const wchar_t *pfxPassword);
// Adds a PFX file to the object's internal list of sources to be searched for
// certificates and private keys when decrypting. Multiple PFX files can be added
// by calling this method once for each. (On the Windows operating system, the
// registry-based certificate stores are also automatically searched, so it is
// commonly not required to explicitly add PFX sources.)
//
// The pfxFilePath contains the bytes of a PFX file (also known as PKCS12 or .p12).
//
bool AddPfxSourceFile(const wchar_t *pfxFilePath, const wchar_t *pfxPassword);
// Sets the plain-text body of the email. Use this method if there will be multiple
// versions of the body, but in different formats, such as HTML and plain text.
// Otherwise, simply set the Body property.
bool AddPlainTextAlternativeBody(const wchar_t *body);
// Adds a related item using the contents of a BinData object. Returns the
// Content-ID for the newly added relted item.
bool AddRelatedBd(const wchar_t *filename, CkBinDataW &binData, CkString &outStr);
// Adds a related item using the contents of a BinData object. Returns the
// Content-ID for the newly added relted item.
const wchar_t *addRelatedBd(const wchar_t *filename, CkBinDataW &binData);
// Adds a related item using the contents of a BinData object. The fileNameInHtml should be
// set to the filename/path/url used in the corresponding HTML IMG tag's src
// attribute.
bool AddRelatedBd2(CkBinDataW &binData, const wchar_t *fileNameInHtml);
// Adds the memory data as a related item to the email and returns the Content-ID.
// Emails formatted in HTML can include images with this call and internally
// reference the image through a cid hyperlink. (Chilkat Email.NET fully supports
// the MHTML standard.)
bool AddRelatedData(const wchar_t *fileName, CkByteData &inData, CkString &outStr);
// Adds the memory data as a related item to the email and returns the Content-ID.
// Emails formatted in HTML can include images with this call and internally
// reference the image through a cid hyperlink. (Chilkat Email.NET fully supports
// the MHTML standard.)
const wchar_t *addRelatedData(const wchar_t *fileName, CkByteData &inData);
// Adds a related item to the email from in-memory byte data. Related items are
// things such as images and style sheets that are embedded within an HTML email.
// They are not considered attachments because their sole purpose is to participate
// in the display of the HTML. This method differs from AddRelatedData in that it
// does not use or return a Content-ID. The filename argument should be set to the
// filename used in the HTML img tag's src attribute (if it's an image), or the URL
// referenced in an HTML link tag for a stylesheet.
void AddRelatedData2(CkByteData &inData, const wchar_t *fileNameInHtml);
// Adds the contents of a file to the email and returns the Content-ID. Emails
// formatted in HTML can include images with this call and internally reference the
// image through a cid hyperlink. (Chilkat Email.NET fully supports the MHTML
// standard.)
bool AddRelatedFile(const wchar_t *path, CkString &outStrContentID);
// Adds the contents of a file to the email and returns the Content-ID. Emails
// formatted in HTML can include images with this call and internally reference the
// image through a cid hyperlink. (Chilkat Email.NET fully supports the MHTML
// standard.)
const wchar_t *addRelatedFile(const wchar_t *path);
// Adds a related item to the email from a file. Related items are things such as
// images and style sheets that are embedded within an HTML email. They are not
// considered attachments because their sole purpose is to participate in the
// display of the HTML. This method differs from AddRelatedFile in that it does not
// use or return a Content-ID. The filenameInHtml argument should be set to the filename used
// in the HTML img tag's src attribute (if it's an image), or the URL referenced in
// an HTML link tag for a stylesheet. The filenameOnDisk is the path in the local filesystem
// of the file to be added.
//
// Note: Outlook.com will not properly display embedded HTMl images when the filenameInHtml
// includes a path part. Apparently, Outlook.com is only capable of correctly
// displaying images when the filenameInHtml is a only a filename. Other email clients, such
// as Mozilla Thunderbird, have no trouble when the filenameInHtml includes a path part.
//
bool AddRelatedFile2(const wchar_t *filenameOnDisk, const wchar_t *filenameInHtml);
// Adds or replaces a MIME header field in one of the email's related items. If the
// header field does not exist, it is added. Otherwise it is replaced.
void AddRelatedHeader(int index, const wchar_t *fieldName, const wchar_t *fieldValue);
// Adds a related item to the email. A related item is typically an image or style
// sheet referenced by an HTML tag within the HTML email body. The contents of the
// related item are passed str. nameInHtml specifies the filename that should be used
// within the HTML, and not an actual filename on the local filesystem. charset
// specifies the charset that should be used for the text content of the related
// item. Returns the content-ID generated for the added item.
bool AddRelatedString(const wchar_t *nameInHtml, const wchar_t *str, const wchar_t *charset, CkString &outCid);
// Adds a related item to the email. A related item is typically an image or style
// sheet referenced by an HTML tag within the HTML email body. The contents of the
// related item are passed str. nameInHtml specifies the filename that should be used
// within the HTML, and not an actual filename on the local filesystem. charset
// specifies the charset that should be used for the text content of the related
// item. Returns the content-ID generated for the added item.
const wchar_t *addRelatedString(const wchar_t *nameInHtml, const wchar_t *str, const wchar_t *charset);
// Adds a related item to the email from an in-memory string. Related items are
// things such as images and style sheets that are embedded within an HTML email.
// They are not considered attachments because their sole purpose is to participate
// in the display of the HTML. The filenameInHtml argument should be set to the
// filename used in the HTML img tag's src attribute (if it's an image), or the URL
// referenced in an HTML link tag for a stylesheet. The charset argument indicates
// that the content should first be converted to the specified charset prior to
// adding to the email. It should hava a value such as iso-8859-1 , utf-8 ,
// Shift_JIS , etc.
void AddRelatedString2(const wchar_t *fileNameInHtml, const wchar_t *content, const wchar_t *charset);
// Adds an attachment directly from a string in memory to the email.
bool AddStringAttachment(const wchar_t *path, const wchar_t *content);
// Adds an attachment to an email. The path specifies the filename to be used for
// the attachment and is not an actual filename existing on the local filesystem.
// The content contains the text data for the attachment. The string will be converted
// to the charset specified in charset before being added to the email.
//
// Note: Beginning in v9.5.0.48, the charset may be prepended with bom- or no-bom- to
// include or exclude the BOM (preamble) for charsets such as utf-16 or utf-8. For
// example: no-bom-utf-8 or bom-utf-8 .
//
bool AddStringAttachment2(const wchar_t *path, const wchar_t *content, const wchar_t *charset);
// Adds a recipient to the to list. emailAddress is required, but friendlyName may be empty. Emails
// that have no To recipients will be sent to _LT_undisclosed-recipients_GT_.
//
// To add multiple recipients, call this method once per TO recipient.
//
bool AddTo(const wchar_t *friendlyName, const wchar_t *emailAddress);
// Decrypts and restores an email message that was previously encrypted using
// AesEncrypt. The password must match the password used for encryption.
bool AesDecrypt(const wchar_t *password);
// Encrypts the email body, all alternative bodies, all message sub-parts and
// attachments using 128-bit AES CBC encryption. Decrypting is achieved by calling
// AesDecrypt with the same password. The AesEncrypt/Decrypt methods use symmetric
// password-based AES encryption and greatly simplify sending and receiving
// encrypted emails because certificates and private keys are not used. However,
// the sending and receiving applications must both use Chilkat, and the password
// must be pre-known on both ends.
bool AesEncrypt(const wchar_t *password);
// Appends a string to the plain-text body.
void AppendToBody(const wchar_t *str);
// Sometimes emails created by other software or systems are not formatted
// according to typical conventions. This method provides a means to automatically
// fix certain problems.
//
// The fixups set to a comma-separated list of keywords that identify the fixups to
// be applied. At the moment, there is only one fixup defined ( FixRelated ) as
// described here:
// * FixRelated: Fixes the email so that HTML related items (images for
// example) are properly located in the email MIME structure. This prevents them
// from being seen as attachments.
//
bool ApplyFixups(const wchar_t *fixups);
// Please see the examples at the following pages for detailed information:
bool AspUnpack(const wchar_t *prefix, const wchar_t *saveDir, const wchar_t *urlPath, bool cleanFiles);
// Please see the examples at the following pages for detailed information:
bool AspUnpack2(const wchar_t *prefix, const wchar_t *saveDir, const wchar_t *urlPath, bool cleanFiles, CkByteData &outHtml);
// Attaches copy of the email to this email object. The attached email will be
// encapsulated in an message/rfc822 sub-part.
bool AttachEmail(CkEmailW &email);
// Attaches a MIME message to the email object. The attached MIME will be
// encapsulated in an message/rfc822 sub-part.
bool AttachMessage(CkByteData &mimeBytes);
// Takes a byte array of multibyte (non-Unicode) data and returns a Unicode
// B-Encoded string.
bool BEncodeBytes(CkByteData &inData, const wchar_t *charset, CkString &outEncodedStr);
// Takes a byte array of multibyte (non-Unicode) data and returns a Unicode
// B-Encoded string.
const wchar_t *bEncodeBytes(CkByteData &inData, const wchar_t *charset);
// Takes a Unicode string, converts it to the charset specified in the 2nd
// parameter, B-Encodes the converted multibyte data, and returns the encoded
// Unicode string.
bool BEncodeString(const wchar_t *str, const wchar_t *charset, CkString &outEncodedStr);
// Takes a Unicode string, converts it to the charset specified in the 2nd
// parameter, B-Encodes the converted multibyte data, and returns the encoded
// Unicode string.
const wchar_t *bEncodeString(const wchar_t *str, const wchar_t *charset);
// Clears the email object of all information to the state as if the object was
// just created, which will have default headers such as Mime-Version, Date,
// Message-ID, Content-Type, Content-Transfer-Encoding, and X-Priority.
void Clear(void);
// Clears the list of blind carbon-copy recipients.
void ClearBcc(void);
// Clears the list of carbon-copy recipients.
void ClearCC(void);
// Clears the internal list of explicitly specified certificates to be used for
// this encrypted email.
void ClearEncryptCerts(void);
// Clears the list of to recipients.
void ClearTo(void);
// This method is deprecated. Applications should instead call MakeCopy .
//
// Creates and returns an identical copy of the Email object.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *Clone(void);
// Computes a global unique key for the email. The key is created by a digest-MD5
// hash of the concatenation of the following:messageID + CRLF + subject + CRLF + from + CRLF + date + CRLF + recipientAddrs
//
// messageID contains the contents of the Message-ID header field.
// subject contains the contents of the Subject header field, trimmed of whitespace from both ends,
// where TAB chars are converted to SPACE chars, and internal whitespace is trimmed so that
// no more than one SPACE char in a row exists.
// from contains the lowercase FROM header email address.
// date contains the contents of the DATE header field.
// toAddrs contains lowercase TO and CC recipient email addresses, comma separated, with duplicates removed, and sorted
// in ascending order. The BCC addresses are NOT included.
//
// (After calling this method, the LastErrorText property can be examined to see the string that was hashed.)
// The 16-byte MD5 hash is returned as an encoded string. The encoding determines the
// encoding: base64, hex, url, etc. If bFold is true, then the 16-byte MD5 hash is
// folded to 8 bytes with an XOR to produce a shorter key.
bool ComputeGlobalKey2(const wchar_t *encoding, bool bFold, CkString &outStr);
// Computes a global unique key for the email. The key is created by a digest-MD5
// hash of the concatenation of the following:messageID + CRLF + subject + CRLF + from + CRLF + date + CRLF + recipientAddrs
//
// messageID contains the contents of the Message-ID header field.
// subject contains the contents of the Subject header field, trimmed of whitespace from both ends,
// where TAB chars are converted to SPACE chars, and internal whitespace is trimmed so that
// no more than one SPACE char in a row exists.
// from contains the lowercase FROM header email address.
// date contains the contents of the DATE header field.
// toAddrs contains lowercase TO and CC recipient email addresses, comma separated, with duplicates removed, and sorted
// in ascending order. The BCC addresses are NOT included.
//
// (After calling this method, the LastErrorText property can be examined to see the string that was hashed.)
// The 16-byte MD5 hash is returned as an encoded string. The encoding determines the
// encoding: base64, hex, url, etc. If bFold is true, then the 16-byte MD5 hash is
// folded to 8 bytes with an XOR to produce a shorter key.
const wchar_t *computeGlobalKey2(const wchar_t *encoding, bool bFold);
// Converts images embedded inline within HTML to multipart/related MIME parts
// referenced from the HTML by CID.
bool ConvertInlineImages(void);
// This method is deprecated. Applications should instead call ToDsn .
//
// Creates a new DSN (Delivery Status Notification) email having the format as
// specified in RFC 3464. See the example (below) for more detailed information.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *CreateDsn(const wchar_t *humanReadableMessage, const wchar_t *xmlStatusFields, bool bHeaderOnly);
// This method is deprecated. Applications should instead call ToForward .
//
// Returns a copy of the Email object with the body and header fields changed so
// that the newly created email can be forwarded. After calling CreateForward,
// simply add new recipients to the created email, and call MailMan.SendEmail.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *CreateForward(void);
// This method is deprecated. Applications should instead call ToMdn .
//
// Creates a new MDN (Message Disposition Notification) email having the format as
// specified in RFC 3798. See the example (below) for more detailed information.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *CreateMdn(const wchar_t *humanReadableMessage, const wchar_t *xmlStatusFields, bool bHeaderOnly);
// This method is deprecated. Applications should instead call ToReply .
//
// Returns a copy of the Email object with the body and header fields changed so
// that the newly created email can be sent as a reply. After calling CreateReply,
// simply prepend additional information to the body, and call MailMan.SendEmail.
//
// Note: Attachments are not included in the returned reply email. However,
// attached messages are included. If an application does not wish to include the
// attached messages in a reply email, they can be removed by calling
// RemoveAttachedMessages on the reply email object.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *CreateReply(void);
// Saves the email to a temporary MHT file so that a WebBrowser control can
// navigate to it and display it. If fileName is empty, a temporary filename is
// generated and returned. If fileName is non-empty, then it will be created or
// overwritten, and the input filename is simply returned.The MHT file that is
// created will not contain any of the email's attachments, if any existed. Also,
// if the email was plain-text, the MHT file will be saved such that the plain-text
// is converted to HTML using pre-formatted text ( pre HTML tags) allowing it to be
// displayed correctly in a WebBrowser.
bool CreateTempMht(const wchar_t *inFilename, CkString &outPath);
// Saves the email to a temporary MHT file so that a WebBrowser control can
// navigate to it and display it. If fileName is empty, a temporary filename is
// generated and returned. If fileName is non-empty, then it will be created or
// overwritten, and the input filename is simply returned.The MHT file that is
// created will not contain any of the email's attachments, if any existed. Also,
// if the email was plain-text, the MHT file will be saved such that the plain-text
// is converted to HTML using pre-formatted text ( pre HTML tags) allowing it to be
// displayed correctly in a WebBrowser.
const wchar_t *createTempMht(const wchar_t *inFilename);
// Removes all attachments from the email.
void DropAttachments(void);
// A related item is typically an embedded image referenced from the HTML in the
// email via a CID hyperlink. This method removes the Nth embedded image from the
// email. Note: If the HTML tries to reference the removed image, it will be
// displayed as a broken image link.
void DropRelatedItem(int index);
// A related item is typically an embedded image referenced from the HTML in the
// email via a CID hyperlink. This method removes all the embedded images from the
// email.
void DropRelatedItems(void);
// Drops a single attachment from the email. Returns True if successful.
bool DropSingleAttachment(int index);
// This method is deprecated. Applications can instead call the certificate
// object's GetIssuer method.
//
// Digitally signed and/or encrypted emails are automatically unwrapped when
// received from a POP3 or IMAP server, or when loaded from any source such as a
// MIME string, in-memory byte data, or a .eml file. The results of the signature
// verification / decryption are stored in the properties such as ReceivedSigned,
// ReceivedEncrypted, SignaturesValid, etc. The signing certificate can be obtained
// via the GetSigningCert function. If the signature contained more certificates in
// the chain of authentication, this method provides a means to access them.
//
// During signature verification, the email object collects the certs found in the
// signature and holds onto them internally. To get the issuing certificate of the
// signing certificate, call this method passing the cert returned by
// GetSigningCert. If the issuing cert is available, it is returned. Otherwise
// _NULL_ is returned. If the cert passed in is the root (i.e. a self-signed
// certificate), then the cert object returned is a copy of the cert passed in.
//
// To traverse the chain to the root, one would write a loop that on first
// iteration passes the cert returned by GetSignedByCert (not GetSignerCert), and
// then on each subsequent iteration passes the cert from the previous iteration.
// The loop would exit when a cert is returned that has the same SubjectDN and
// SerialNumber as what was passed in (or when FindIssuer returns _NULL_).
//
// The caller is responsible for deleting the object returned by this method.
CkCertW *FindIssuer(CkCertW &cert);
// Generates a unique filename for this email. The filename will be different each
// time the method is called.
bool GenerateFilename(CkString &outStrFilename);
// Generates a unique filename for this email. The filename will be different each
// time the method is called.
const wchar_t *generateFilename(void);
// Returns the Nth alternative body. The NumAlternatives property tells the number
// of alternative bodies present. Use the GetHtmlBody and GetPlainTextBody methods
// to easily get the HTML or plain text alternative bodies.
bool GetAlternativeBody(int index, CkString &outStrBody);
// Returns the Nth alternative body. The NumAlternatives property tells the number
// of alternative bodies present. Use the GetHtmlBody and GetPlainTextBody methods
// to easily get the HTML or plain text alternative bodies.
const wchar_t *getAlternativeBody(int index);
// Returns the Nth alternative body. The NumAlternatives property tells the number
// of alternative bodies present. Use the GetHtmlBody and GetPlainTextBody methods
// to easily get the HTML or plain text alternative bodies.
const wchar_t *alternativeBody(int index);
// Returns contents of the Nth alternative body to binData. The 1st alternative body
// is at index 0. This method should only be called when the NumAlternatives
// property has a value greater than 0.
bool GetAlternativeBodyBd(int index, CkBinDataW &binData);
// Returns the alternative body by content-type, such as text/plain , text/html ,
// text/xml , etc.
bool GetAlternativeBodyByContentType(const wchar_t *contentType, CkString &outStr);
// Returns the alternative body by content-type, such as text/plain , text/html ,
// text/xml , etc.
const wchar_t *getAlternativeBodyByContentType(const wchar_t *contentType);
// Returns the alternative body by content-type, such as text/plain , text/html ,
// text/xml , etc.
const wchar_t *alternativeBodyByContentType(const wchar_t *contentType);
// Returns the content type of the Nth alternative body. The NumAlternatives
// property tells the number of alternative bodies present.
bool GetAlternativeContentType(int index, CkString &outStrContentType);
// Returns the content type of the Nth alternative body. The NumAlternatives
// property tells the number of alternative bodies present.
const wchar_t *getAlternativeContentType(int index);
// Returns the content type of the Nth alternative body. The NumAlternatives
// property tells the number of alternative bodies present.
const wchar_t *alternativeContentType(int index);
// Returns the value of a header field within the Nth alternative body's MIME
// sub-part.
bool GetAltHeaderField(int index, const wchar_t *fieldName, CkString &outStr);
// Returns the value of a header field within the Nth alternative body's MIME
// sub-part.
const wchar_t *getAltHeaderField(int index, const wchar_t *fieldName);
// Returns the value of a header field within the Nth alternative body's MIME
// sub-part.
const wchar_t *altHeaderField(int index, const wchar_t *fieldName);
// The Nth embedded message/rfc822 subpart in email.
bool GetAttachedEmail(int index, CkEmailW &email);
// This method is deprecated. Applications should instead call GetAttachedEmail .
//
// Returns an embedded message/rfc822 subpart as an email object. (Emails are
// embedded as message/rfc822 subparts by some mail clients when forwarding an
// email.) This method allows the original email to be accessed.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *GetAttachedMessage(int index);
// Returns a header field attribute value for the Nth attached (embedded) email.
// For example, to get the value of the name attribute in the Content-Type header
// for the 1st attached message:Content-Type: message/rfc822; name="md75000024149.eml"
// then the method arguments should contain the values 0, Content-Type , name .
bool GetAttachedMessageAttr(int index, const wchar_t *fieldName, const wchar_t *attrName, CkString &outStr);
// Returns a header field attribute value for the Nth attached (embedded) email.
// For example, to get the value of the name attribute in the Content-Type header
// for the 1st attached message:Content-Type: message/rfc822; name="md75000024149.eml"
// then the method arguments should contain the values 0, Content-Type , name .
const wchar_t *getAttachedMessageAttr(int index, const wchar_t *fieldName, const wchar_t *attrName);
// Returns a header field attribute value for the Nth attached (embedded) email.
// For example, to get the value of the name attribute in the Content-Type header
// for the 1st attached message:Content-Type: message/rfc822; name="md75000024149.eml"
// then the method arguments should contain the values 0, Content-Type , name .
const wchar_t *attachedMessageAttr(int index, const wchar_t *fieldName, const wchar_t *attrName);
// Returns the filename of the Nth attached (embedded) email. The filename is the
// filename attribute of the content-disposition header field found within the Nth
// message/rfc822 sub-part of the calling email object.
//
// Important: The attached message filename is only present if the
// Content-Disposition header exists AND contains a filename attribute. If
// questions arise, one could open the email in a text editor to examine the MIME
// sub-header for the attached message (where the Content-Type = message/rfc822 ).
// For example, here is a sub-header that has a filename:Content-Type: message/rfc822; name="GetAttachedMessageAttr.eml"
// Content-Transfer-Encoding: 7bit
// Content-Disposition: attachment; filename="GetAttachedMessageAttr.eml"
// Here is an attached message sub-header that does NOT have a filename:Content-Type: message/rfc822
// Content-Transfer-Encoding: 7bit
// Content-Disposition: attachment
//
bool GetAttachedMessageFilename(int index, CkString &outStr);
// Returns the filename of the Nth attached (embedded) email. The filename is the
// filename attribute of the content-disposition header field found within the Nth
// message/rfc822 sub-part of the calling email object.
//
// Important: The attached message filename is only present if the
// Content-Disposition header exists AND contains a filename attribute. If
// questions arise, one could open the email in a text editor to examine the MIME
// sub-header for the attached message (where the Content-Type = message/rfc822 ).
// For example, here is a sub-header that has a filename:Content-Type: message/rfc822; name="GetAttachedMessageAttr.eml"
// Content-Transfer-Encoding: 7bit
// Content-Disposition: attachment; filename="GetAttachedMessageAttr.eml"
// Here is an attached message sub-header that does NOT have a filename:Content-Type: message/rfc822
// Content-Transfer-Encoding: 7bit
// Content-Disposition: attachment
//
const wchar_t *getAttachedMessageFilename(int index);
// Returns the filename of the Nth attached (embedded) email. The filename is the
// filename attribute of the content-disposition header field found within the Nth
// message/rfc822 sub-part of the calling email object.
//
// Important: The attached message filename is only present if the
// Content-Disposition header exists AND contains a filename attribute. If
// questions arise, one could open the email in a text editor to examine the MIME
// sub-header for the attached message (where the Content-Type = message/rfc822 ).
// For example, here is a sub-header that has a filename:Content-Type: message/rfc822; name="GetAttachedMessageAttr.eml"
// Content-Transfer-Encoding: 7bit
// Content-Disposition: attachment; filename="GetAttachedMessageAttr.eml"
// Here is an attached message sub-header that does NOT have a filename:Content-Type: message/rfc822
// Content-Transfer-Encoding: 7bit
// Content-Disposition: attachment
//
const wchar_t *attachedMessageFilename(int index);
// Returns a header field attribute value from the header field of the Nth
// attachment.
bool GetAttachmentAttr(int index, const wchar_t *fieldName, const wchar_t *attrName, CkString &outStr);
// Returns a header field attribute value from the header field of the Nth
// attachment.
const wchar_t *getAttachmentAttr(int index, const wchar_t *fieldName, const wchar_t *attrName);
// Returns a header field attribute value from the header field of the Nth
// attachment.
const wchar_t *attachmentAttr(int index, const wchar_t *fieldName, const wchar_t *attrName);
// Copies an attachment's binary data into binData. The first attachment is at index
// 0.
bool GetAttachmentBd(int index, CkBinDataW &binData);
// Returns the ContentID header field for the Nth attachment. The first attachment
// is at index 0.
bool GetAttachmentContentID(int index, CkString &outStrContentID);
// Returns the ContentID header field for the Nth attachment. The first attachment
// is at index 0.
const wchar_t *getAttachmentContentID(int index);
// Returns the ContentID header field for the Nth attachment. The first attachment
// is at index 0.
const wchar_t *attachmentContentID(int index);
// Returns the Content-Type header field for the Nth attachment. Indexing of
// attachments begins at 0.
bool GetAttachmentContentType(int index, CkString &outStrContentType);
// Returns the Content-Type header field for the Nth attachment. Indexing of
// attachments begins at 0.
const wchar_t *getAttachmentContentType(int index);
// Returns the Content-Type header field for the Nth attachment. Indexing of
// attachments begins at 0.
const wchar_t *attachmentContentType(int index);
// Retrieves an attachment's binary data for in-memory access.
bool GetAttachmentData(int index, CkByteData &outData);
// Retrieves an attachment's filename.
bool GetAttachmentFilename(int index, CkString &outStrFilename);
// Retrieves an attachment's filename.
const wchar_t *getAttachmentFilename(int index);
// Retrieves an attachment's filename.
const wchar_t *attachmentFilename(int index);
// Returns the value of a header field (by name) of an attachment.
bool GetAttachmentHeader(int attachIndex, const wchar_t *fieldName, CkString &outFieldValue);
// Returns the value of a header field (by name) of an attachment.
const wchar_t *getAttachmentHeader(int attachIndex, const wchar_t *fieldName);
// Returns the value of a header field (by name) of an attachment.
const wchar_t *attachmentHeader(int attachIndex, const wchar_t *fieldName);
// Returns the size (in bytes) of the Nth attachment. The 1st attachment is at
// index 0. Returns -1 if there is no attachment at the specified index.
int GetAttachmentSize(int index);
// Retrieves an attachment's data as a String. All CRLF sequences will be
// translated to single newline characters. The charset indicates how to interpret the
// bytes of the attachment. For example, if the attachment is a text file using the
// utf-8 byte representation for characters, pass utf-8 .
bool GetAttachmentString(int index, const wchar_t *charset, CkString &outStr);
// Retrieves an attachment's data as a String. All CRLF sequences will be
// translated to single newline characters. The charset indicates how to interpret the
// bytes of the attachment. For example, if the attachment is a text file using the
// utf-8 byte representation for characters, pass utf-8 .
const wchar_t *getAttachmentString(int index, const wchar_t *charset);
// Retrieves an attachment's data as a String. All CRLF sequences will be
// translated to single newline characters. The charset indicates how to interpret the
// bytes of the attachment. For example, if the attachment is a text file using the
// utf-8 byte representation for characters, pass utf-8 .
const wchar_t *attachmentString(int index, const wchar_t *charset);
// Retrieves an attachment's data as a String. All end-of-lines will be translated
// to CRLF sequences.
bool GetAttachmentStringCrLf(int index, const wchar_t *charset, CkString &outStrData);
// Retrieves an attachment's data as a String. All end-of-lines will be translated
// to CRLF sequences.
const wchar_t *getAttachmentStringCrLf(int index, const wchar_t *charset);
// Retrieves an attachment's data as a String. All end-of-lines will be translated
// to CRLF sequences.
const wchar_t *attachmentStringCrLf(int index, const wchar_t *charset);
// Returns a blind carbon-copy recipient's full email address.
bool GetBcc(int index, CkString &outStr);
// Returns a blind carbon-copy recipient's full email address.
const wchar_t *getBcc(int index);
// Returns a blind carbon-copy recipient's full email address.
const wchar_t *bcc(int index);
// Returns the Nth BCC address (only the address part, not the friendly-name part).
bool GetBccAddr(int index, CkString &outStr);
// Returns the Nth BCC address (only the address part, not the friendly-name part).
const wchar_t *getBccAddr(int index);
// Returns the Nth BCC address (only the address part, not the friendly-name part).
const wchar_t *bccAddr(int index);
// Returns the Nth BCC name (only the friendly-name part, not the address part).
bool GetBccName(int index, CkString &outStr);
// Returns the Nth BCC name (only the friendly-name part, not the address part).
const wchar_t *getBccName(int index);
// Returns the Nth BCC name (only the friendly-name part, not the address part).
const wchar_t *bccName(int index);
// Returns a carbon-copy recipient's full email address.
bool GetCC(int index, CkString &outStr);
// Returns a carbon-copy recipient's full email address.
const wchar_t *getCC(int index);
// Returns a carbon-copy recipient's full email address.
const wchar_t *cC(int index);
// Returns the Nth CC address (only the address part, not the friendly-name part).
bool GetCcAddr(int index, CkString &outStr);
// Returns the Nth CC address (only the address part, not the friendly-name part).
const wchar_t *getCcAddr(int index);
// Returns the Nth CC address (only the address part, not the friendly-name part).
const wchar_t *ccAddr(int index);
// Returns the Nth CC name (only the friendly-name part, not the address part).
bool GetCcName(int index, CkString &outStr);
// Returns the Nth CC name (only the friendly-name part, not the address part).
const wchar_t *getCcName(int index);
// Returns the Nth CC name (only the friendly-name part, not the address part).
const wchar_t *ccName(int index);
// If the email is a multipart/report, then it is a delivery status notification.
// This method can be used to get individual pieces of information from the
// message/delivery-status part of the email. This method should only be called if
// the IsMultipartReport method returns true.
//
// The fieldName should be set a string such as Final-Recipient , Status , Action ,
// Reporting-MTA , etc.Reporting-MTA: dns; XYZ.abc.nl
//
// Final-recipient: RFC822; someEmailAddr@doesnotexist123.nl
// Action: failed
// Status: 5.4.4
// X-Supplementary-Info:
//
bool GetDeliveryStatusInfo(const wchar_t *fieldName, CkString &outFieldValue);
// If the email is a multipart/report, then it is a delivery status notification.
// This method can be used to get individual pieces of information from the
// message/delivery-status part of the email. This method should only be called if
// the IsMultipartReport method returns true.
//
// The fieldName should be set a string such as Final-Recipient , Status , Action ,
// Reporting-MTA , etc.Reporting-MTA: dns; XYZ.abc.nl
//
// Final-recipient: RFC822; someEmailAddr@doesnotexist123.nl
// Action: failed
// Status: 5.4.4
// X-Supplementary-Info:
//
const wchar_t *getDeliveryStatusInfo(const wchar_t *fieldName);
// If the email is a multipart/report, then it is a delivery status notification.
// This method can be used to get individual pieces of information from the
// message/delivery-status part of the email. This method should only be called if
// the IsMultipartReport method returns true.
//
// The fieldName should be set a string such as Final-Recipient , Status , Action ,
// Reporting-MTA , etc.Reporting-MTA: dns; XYZ.abc.nl
//
// Final-recipient: RFC822; someEmailAddr@doesnotexist123.nl
// Action: failed
// Status: 5.4.4
// X-Supplementary-Info:
//
const wchar_t *deliveryStatusInfo(const wchar_t *fieldName);
// This method is deprecated. Applications should instead call GetDigestEmail .
//
// Returns an digest contained within a multipart/digest as an email object. The
// 1st digest is at index 0. Use the NumDigests property to get the number of
// digests available.
//
// The caller is responsible for deleting the object returned by this method.
CkEmailW *GetDigest(int index);
// Returns in email the Nth digest email contained within a multipart/digest. The
// 1st digest is at index 0. Use the NumDigests property to get the number of
// digests available.
bool GetDigestEmail(int index, CkEmailW &email);
// This method is deprecated. Applications should instead call GetDsnInfo .
//
// If the email is a multipart/report, then it is a delivery status notification.
// This method can be used to get Final-Recipient values from the
// message/delivery-status part of the email. This method should only be called if
// the IsMultipartReport method returns true.
//
// The caller is responsible for deleting the object returned by this method.
CkStringArrayW *GetDsnFinalRecipients(void);
// If the IsMultipartReport property indicates that the email is multipart/report ,
// you can use this method to obtain the delivery status information, including the
// final recipients, in a JSON format that is easy to parse.
//
// References:
// 1: #IsMultipartReport
bool GetDsnInfo(CkJsonObjectW &json);
// This method is deprecated. Applications should instead use the EmailDateStr
// property.
//
// Returns the date/time found in the Date header field as a date/time object.
//
// The caller is responsible for deleting the object returned by this method.
CkDateTimeW *GetDt(void);
// Returns the certificate that was previously set by SetEncryptCert.
// The caller is responsible for deleting the object returned by this method.
CkCertW *GetEncryptCert(void);
// This method is deprecated. Applications should instead call LastDecryptCert to
// get the certificate used to decrypt this email.
//
// Returns the certificate associated with a received encrypted email.
//
// The caller is responsible for deleting the object returned by this method.
CkCertW *GetEncryptedByCert(void);
// Reads a file and returns the contents. This is here purely for convenience.
bool GetFileContent(const wchar_t *path, CkByteData &outData);
// Returns the value of a header field.
bool GetHeaderField(const wchar_t *fieldName, CkString &outStrFieldData);
// Returns the value of a header field.
const wchar_t *getHeaderField(const wchar_t *fieldName);
// Returns the value of a header field.
const wchar_t *headerField(const wchar_t *fieldName);
// Return the name of the Nth header field. The NumHeaderFields() method can be
// used to get the number of header fields. The GetHeaderField() method can be used
// to get the value of the field given the field name.
//
// The 1st header field is at index 0. (All Chilkat indexing is 0-based.)
//
bool GetHeaderFieldName(int index, CkString &outStrFieldName);
// Return the name of the Nth header field. The NumHeaderFields() method can be
// used to get the number of header fields. The GetHeaderField() method can be used
// to get the value of the field given the field name.
//
// The 1st header field is at index 0. (All Chilkat indexing is 0-based.)
//
const wchar_t *getHeaderFieldName(int index);
// Return the name of the Nth header field. The NumHeaderFields() method can be
// used to get the number of header fields. The GetHeaderField() method can be used
// to get the value of the field given the field name.
//
// The 1st header field is at index 0. (All Chilkat indexing is 0-based.)
//
const wchar_t *headerFieldName(int index);
// Returns the value of the Nth header field. (Indexing begins at 0) The number of
// header fields can be obtained from the NumHeaderFields property.
//
// The 1st header field is at index 0, the last header field is at index
// NumHeaderFields-1. (All Chilkat indexing is 0-based.)
//
bool GetHeaderFieldValue(int index, CkString &outStrFieldValue);
// Returns the value of the Nth header field. (Indexing begins at 0) The number of
// header fields can be obtained from the NumHeaderFields property.
//
// The 1st header field is at index 0, the last header field is at index
// NumHeaderFields-1. (All Chilkat indexing is 0-based.)
//
const wchar_t *getHeaderFieldValue(int index);
// Returns the value of the Nth header field. (Indexing begins at 0) The number of
// header fields can be obtained from the NumHeaderFields property.
//
// The 1st header field is at index 0, the last header field is at index
// NumHeaderFields-1. (All Chilkat indexing is 0-based.)
//
const wchar_t *headerFieldValue(int index);
// Returns the body having the text/html content type.
bool GetHtmlBody(CkString &outStrBody);
// Returns the body having the text/html content type.
const wchar_t *getHtmlBody(void);
// Returns the body having the text/html content type.
const wchar_t *htmlBody(void);
// Returns the body having the text/html content type. If inlineImageData is true, the
// related images found in the MIME are inlined as base64 directly within the
// returned HTML. The HTML is returned in sb.
bool GetHtmlBodySb(bool inlineImageData, CkStringBuilderW &sb);
// When email headers are downloaded from an IMAP server (using Chilkat IMAP), a
// ckx-imap-uid header field is added. The content of this header is the UID or
// sequence number of the email on the IMAP server. In addition, a ckx-imap-isUid
// header field is added, and this will have the value YES or NO. If the value is
// YES, then ckx-imap-uid contains a UID, if the value is NO, then ckx-imap-uid
// contains the sequence number. This method returns the UID if ckx-imap-uid exists
// and contains a UID, otherwise it returns 0xFFFFFFFF.
//
// An application that wishes to download the full email would use this UID and
// then call the Chilkat IMAP object's FetchSingle or FetchSingleAsMime methods.
//
// Note:If an email was downloaded from the IMAP server in a way such that the UID
// is not received, then there will be no ckx-imap-uid header field and this method
// would return 0xFFFFFFFF. For example, if emails are downloaded by sequence
// numbers via the Imap.FetchSequence method, then UIDs are not used and therefore
// the email object will not contain this information.
//
unsigned long GetImapUid(void);
// This method is deprecated. Applications should instead call LinkedDomains .
//
// Parses an HTML email and returns the set of domain names that occur in
// hyperlinks within the HTML body.
//
// The caller is responsible for deleting the object returned by this method.
CkStringArrayW *GetLinkedDomains(void);
// Return the email as MIME text containing the email header, body (or bodies),
// related items (if any), and all attachments
bool GetMime(CkString &outStrMime);
// Return the email as MIME text containing the email header, body (or bodies),
// related items (if any), and all attachments
const wchar_t *getMime(void);
// Return the email as MIME text containing the email header, body (or bodies),
// related items (if any), and all attachments
const wchar_t *mime(void);
// Return the email as binary MIME containing the email header, body (or bodies),
// related items (if any), and all attachments. The MIME is appended to the
// existing contents (if any) of bindat.
bool GetMimeBd(CkBinDataW &bindat);
// Returns the full MIME of an email.
bool GetMimeBinary(CkByteData &outBytes);
// Return the email as MIME text containing the email header, body (or bodies),
// related items (if any), and all attachments. The MIME is appended to the
// existing contents (if any) of sb.
bool GetMimeSb(CkStringBuilderW &sb);
// Returns the binary bytes of the Nth MIME sub-part having a specified content
// type (such as application/pdf . Indexing begins at 0. Call GetNumPartsOfType to
// find out how many MIME sub-parts exist for any given content type. If inlineOnly is
// true, then only MIME sub-parts having a content-disposition of inline are
// included. If excludeAttachments is true, then MIME sub-parts having a content-disposition of
// attachment are excluded.
//
// Note: If the email was downloaded as header-only, it will not contain all the
// parts of the full email. Also, if downloaded from IMAP excluding attachments,
// those parts that are the attachments will (of course) be missing.
//
// Note: Beginning in v9.5.0.95, the contentType can be wildcarded. For example, it is
// possible to specify text/* , or simply * to match any Content-Type.
//
// Note: Only non-multipart MIME parts are matched.
//
bool GetNthBinaryPartOfType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments, CkByteData &outBytes);
// Loads bd with the binary bytes of the Nth MIME sub-part matching the contentType,
// which can be an exact Content-Type such as application/pdf , or a wildcarded
// Content-Type such as application/* , or */* . Indexing begins at 0. Call
// GetNumPartsOfType to find out how many MIME sub-parts exist for any given
// content type. If inlineOnly is true, then only MIME sub-parts having a
// content-disposition of inline are included. If excludeAttachments is true, then MIME
// sub-parts having a content-disposition of attachment are excluded.
//
// Note: If the email was downloaded as header-only, it will not contain all the
// parts of the full email. Also, if downloaded from IMAP excluding attachments,
// those parts that are the attachments will (of course) be missing.
//
// Note: Beginning in v9.5.0.95, the contentType can be wildcarded. For example, it is
// possible to specify text/* , or simply * to match any Content-Type.
//
// Note: Only non-multipart MIME parts are matched.
//
bool GetNthBinaryPartOfTypeBd(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments, CkBinDataW &bd);
// Returns the Content-Type of the Nth MIME sub-part matching the specified contentType.
// The contentType can be a Content-Type such as text/plain , or a wildcarded Content-Type
// such as text/* , or even just * to match all Content-Types. If inlineOnly is true,
// then only MIME sub-parts having a content-disposition of inline are included. If
// excludeAttachments is true, then MIME sub-parts having a content-disposition of attachment
// are excluded.
//
// Note: Only non-multipart content-types are matched.
//
bool GetNthContentType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments, CkString &outStr);
// Returns the Content-Type of the Nth MIME sub-part matching the specified contentType.
// The contentType can be a Content-Type such as text/plain , or a wildcarded Content-Type
// such as text/* , or even just * to match all Content-Types. If inlineOnly is true,
// then only MIME sub-parts having a content-disposition of inline are included. If
// excludeAttachments is true, then MIME sub-parts having a content-disposition of attachment
// are excluded.
//
// Note: Only non-multipart content-types are matched.
//
const wchar_t *getNthContentType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments);
// Returns the Content-Type of the Nth MIME sub-part matching the specified contentType.
// The contentType can be a Content-Type such as text/plain , or a wildcarded Content-Type
// such as text/* , or even just * to match all Content-Types. If inlineOnly is true,
// then only MIME sub-parts having a content-disposition of inline are included. If
// excludeAttachments is true, then MIME sub-parts having a content-disposition of attachment
// are excluded.
//
// Note: Only non-multipart content-types are matched.
//
const wchar_t *nthContentType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments);
// Returns the text of the Nth MIME sub-part having a specified content type (such
// as text/plain . Indexing begins at 0. Call GetNumPartsOfType to find out how
// many MIME sub-parts exist for any given content type. If inlineOnly is true, then
// only MIME sub-parts having a content-disposition of inline are included. If excludeAttachments
// is true, then MIME sub-parts having a content-disposition of attachment are
// excluded.
//
// Note: If the email was downloaded as header-only, it will not contain all the
// parts of the full email. Also, if downloaded from IMAP excluding attachments,
// those parts that are the attachments will (of course) be missing.
//
// Note: Beginning in v9.5.0.95, the contentType can be wildcarded. For example, it is
// possible to specify text/* , or simply * to match any Content-Type.
//
// Note: Only non-multipart MIME parts are matched.
//
bool GetNthTextPartOfType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments, CkString &outStr);
// Returns the text of the Nth MIME sub-part having a specified content type (such
// as text/plain . Indexing begins at 0. Call GetNumPartsOfType to find out how
// many MIME sub-parts exist for any given content type. If inlineOnly is true, then
// only MIME sub-parts having a content-disposition of inline are included. If excludeAttachments
// is true, then MIME sub-parts having a content-disposition of attachment are
// excluded.
//
// Note: If the email was downloaded as header-only, it will not contain all the
// parts of the full email. Also, if downloaded from IMAP excluding attachments,
// those parts that are the attachments will (of course) be missing.
//
// Note: Beginning in v9.5.0.95, the contentType can be wildcarded. For example, it is
// possible to specify text/* , or simply * to match any Content-Type.
//
// Note: Only non-multipart MIME parts are matched.
//
const wchar_t *getNthTextPartOfType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments);
// Returns the text of the Nth MIME sub-part having a specified content type (such
// as text/plain . Indexing begins at 0. Call GetNumPartsOfType to find out how
// many MIME sub-parts exist for any given content type. If inlineOnly is true, then
// only MIME sub-parts having a content-disposition of inline are included. If excludeAttachments
// is true, then MIME sub-parts having a content-disposition of attachment are
// excluded.
//
// Note: If the email was downloaded as header-only, it will not contain all the
// parts of the full email. Also, if downloaded from IMAP excluding attachments,
// those parts that are the attachments will (of course) be missing.
//
// Note: Beginning in v9.5.0.95, the contentType can be wildcarded. For example, it is
// possible to specify text/* , or simply * to match any Content-Type.
//
// Note: Only non-multipart MIME parts are matched.
//
const wchar_t *nthTextPartOfType(int index, const wchar_t *contentType, bool inlineOnly, bool excludeAttachments);
// Returns the number of MIME sub-parts within the email having a specified content
// type (such as text/plain ). If inlineOnly is true, then only MIME sub-parts having a
// content-disposition of inline are included. If excludeAttachments is true, then MIME
// sub-parts having a content-disposition of attachment are excluded.
//
// Note: If the email was downloaded as header-only, it will not contain all the
// parts of the full email. Also, if downloaded from IMAP excluding attachments,
// those parts that are the attachments will (of course) be missing.
//
// Note: Beginning in v9.5.0.95, the inlineOnly can be wildcarded. For example, it is
// possible to specify text/* , or simply * to match any Content-Type.
//
// Note: Only non-multipart MIME parts are matched (i.e. leaf-node MIME parts that
// contain a text or binary body).
//
int GetNumPartsOfType(const wchar_t *contentType, bool inlineOnly, bool excludeAttachments);
// Returns the email body having the text/plain content type.
bool GetPlainTextBody(CkString &outStrBody);
// Returns the email body having the text/plain content type.
const wchar_t *getPlainTextBody(void);
// Returns the email body having the text/plain content type.
const wchar_t *plainTextBody(void);
// Returns a header field attribute value from the header field of the Nth related
// item.
bool GetRelatedAttr(int index, const wchar_t *fieldName, const wchar_t *attrName, CkString &outStr);
// Returns a header field attribute value from the header field of the Nth related
// item.
const wchar_t *getRelatedAttr(int index, const wchar_t *fieldName, const wchar_t *attrName);
// Returns a header field attribute value from the header field of the Nth related
// item.
const wchar_t *relatedAttr(int index, const wchar_t *fieldName, const wchar_t *attrName);
// Returns the content ID of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
bool GetRelatedContentID(int index, CkString &outStrContentID);
// Returns the content ID of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
const wchar_t *getRelatedContentID(int index);
// Returns the content ID of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
const wchar_t *relatedContentID(int index);
// Returns the Content-Location of a related item contained with the email. Related
// items are typically images and style-sheets embedded within HTML emails.
bool GetRelatedContentLocation(int index, CkString &outStr);
// Returns the Content-Location of a related item contained with the email. Related
// items are typically images and style-sheets embedded within HTML emails.
const wchar_t *getRelatedContentLocation(int index);
// Returns the Content-Location of a related item contained with the email. Related
// items are typically images and style-sheets embedded within HTML emails.
const wchar_t *relatedContentLocation(int index);
// Returns the content-type of the Nth related content item in an email message.
bool GetRelatedContentType(int index, CkString &outStrContentType);
// Returns the content-type of the Nth related content item in an email message.
const wchar_t *getRelatedContentType(int index);
// Returns the content-type of the Nth related content item in an email message.
const wchar_t *relatedContentType(int index);
// Returns the content of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
bool GetRelatedData(int index, CkByteData &outBuffer);
// Returns the filename of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
bool GetRelatedFilename(int index, CkString &outStrFilename);
// Returns the filename of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
const wchar_t *getRelatedFilename(int index);
// Returns the filename of a related item contained with the email. Related items
// are typically images and style-sheets embedded within HTML emails.
const wchar_t *relatedFilename(int index);
// Returns the value of a header field (by name) of a related item.
bool GetRelatedHeader(int index, const wchar_t *fieldName, CkString &outStr);
// Returns the value of a header field (by name) of a related item.
const wchar_t *getRelatedHeader(int index, const wchar_t *fieldName);
// Returns the value of a header field (by name) of a related item.
const wchar_t *relatedHeader(int index, const wchar_t *fieldName);
// Returns the text with CR line-endings of a related item contained with the
// email. Related items are typically images and style-sheets embedded within HTML
// emails.
bool GetRelatedString(int index, const wchar_t *charset, CkString &outStrData);
// Returns the text with CR line-endings of a related item contained with the
// email. Related items are typically images and style-sheets embedded within HTML
// emails.
const wchar_t *getRelatedString(int index, const wchar_t *charset);
// Returns the text with CR line-endings of a related item contained with the
// email. Related items are typically images and style-sheets embedded within HTML
// emails.
const wchar_t *relatedString(int index, const wchar_t *charset);
// Returns the text with CRLF line-endings of a related item contained with the
// email. Related items are typically images and style-sheets embedded within HTML
// emails.
bool GetRelatedStringCrLf(int index, const wchar_t *charset, CkString &outStr);
// Returns the text with CRLF line-endings of a related item contained with the
// email. Related items are typically images and style-sheets embedded within HTML
// emails.
const wchar_t *getRelatedStringCrLf(int index, const wchar_t *charset);
// Returns the text with CRLF line-endings of a related item contained with the
// email. Related items are typically images and style-sheets embedded within HTML
// emails.
const wchar_t *relatedStringCrLf(int index, const wchar_t *charset);
// Returns a replacement pattern previously defined for mail-merge operations.
bool GetReplacePattern(int index, CkString &outStrPattern);
// Returns a replacement pattern previously defined for mail-merge operations.
const wchar_t *getReplacePattern(int index);
// Returns a replacement pattern previously defined for mail-merge operations.
const wchar_t *replacePattern(int index);
// Returns a replacement string for a previously defined pattern/replacement string
// pair. (This is a mail-merge feature.)
//
// Note: This method was found to not be working correctly and is fixed in Chilkat
// v9.5.0.91.
//
bool GetReplaceString(int index, CkString &outStr);
// Returns a replacement string for a previously defined pattern/replacement string
// pair. (This is a mail-merge feature.)
//
// Note: This method was found to not be working correctly and is fixed in Chilkat
// v9.5.0.91.
//
const wchar_t *getReplaceString(int index);
// Returns a replacement string for a previously defined pattern/replacement string
// pair. (This is a mail-merge feature.)
//
// Note: This method was found to not be working correctly and is fixed in Chilkat
// v9.5.0.91.
//
const wchar_t *replaceString(int index);
// Returns a replacement string for a previously defined pattern/replacement string
// pair. (This is a mail-merge feature.)
bool GetReplaceString2(const wchar_t *pattern, CkString &outStr);
// Returns a replacement string for a previously defined pattern/replacement string
// pair. (This is a mail-merge feature.)
const wchar_t *getReplaceString2(const wchar_t *pattern);
// Returns a replacement string for a previously defined pattern/replacement string
// pair. (This is a mail-merge feature.)
const wchar_t *replaceString2(const wchar_t *pattern);
// (See the NumReports property.) Returns the body content of the Nth report within
// a multipart/report email.
//
// Multipart/report is a message type that contains data formatted for a mail
// server to read. It is split between a text/plain (or some other content/type
// easily readable) and a message/delivery-status, which contains the data
// formatted for the mail server to read.
//
// It is defined in RFC 3462
//
bool GetReport(int index, CkString &outStr);
// (See the NumReports property.) Returns the body content of the Nth report within
// a multipart/report email.
//
// Multipart/report is a message type that contains data formatted for a mail
// server to read. It is split between a text/plain (or some other content/type
// easily readable) and a message/delivery-status, which contains the data
// formatted for the mail server to read.
//
// It is defined in RFC 3462
//
const wchar_t *getReport(int index);
// (See the NumReports property.) Returns the body content of the Nth report within
// a multipart/report email.
//
// Multipart/report is a message type that contains data formatted for a mail
// server to read. It is split between a text/plain (or some other content/type
// easily readable) and a message/delivery-status, which contains the data
// formatted for the mail server to read.
//
// It is defined in RFC 3462
//
const wchar_t *report(int index);
// This method is deprecated. Applications should instead call LastSignerCert to
// get the certificate used to sign this email.
//
// Return the certificate used to digitally sign this email.
//
// The caller is responsible for deleting the object returned by this method.
CkCertW *GetSignedByCert(void);
// This method is deprecated. Applications can get the cert chain by calling
// LastSignerCert to get the certificate object, and then get the certificate chain
// from the certificate object.
//
// Return the full certificate chain of the certificate used to digitally sign this
// email.
//
// The caller is responsible for deleting the object returned by this method.
CkCertChainW *GetSignedByCertChain(void);
// Return the certificate that will be used to digitally sign this email. This is
// the cerficate that was previously set by calling the SetSigningCert method.
// The caller is responsible for deleting the object returned by this method.
CkCertW *GetSigningCert(void);
// Returns a to recipient's full email address.
bool GetTo(int index, CkString &outStr);
// Returns a to recipient's full email address.
const wchar_t *getTo(int index);
// Returns a to recipient's full email address.
const wchar_t *to(int index);
// Returns the Nth To address (only the address part, not the friendly-name part).
bool GetToAddr(int index, CkString &outStr);
// Returns the Nth To address (only the address part, not the friendly-name part).
const wchar_t *getToAddr(int index);
// Returns the Nth To address (only the address part, not the friendly-name part).
const wchar_t *toAddr(int index);
// Returns the Nth To name (only the friendly-name part, not the address part).
bool GetToName(int index, CkString &outStr);
// Returns the Nth To name (only the friendly-name part, not the address part).
const wchar_t *getToName(int index);
// Returns the Nth To name (only the friendly-name part, not the address part).
const wchar_t *toName(int index);
// Convert the email object to an XML document in memory
bool GetXml(CkString &outStrXml);
// Convert the email object to an XML document in memory
const wchar_t *getXml(void);
// Convert the email object to an XML document in memory
const wchar_t *xml(void);
// Returns true if the email has a header field with the specified fieldName with a
// value matching valuePattern. Case sensitivity is controlled by caseSensitive. The valuePattern may
// include 0 or more asterisk (wildcard) characters which match 0 or more of any
// character.
bool HasHeaderMatching(const wchar_t *fieldName, const wchar_t *valuePattern, bool caseSensitive);
// Returns true if the email has an HTML body.
bool HasHtmlBody(void);
// Returns true if the email has a plain-text body.
bool HasPlainTextBody(void);
// Returns true if the email is a multipart/report email.
bool IsMultipartReport(void);
// Returns in cert the certificate used to decrypt this email.
bool LastDecryptCert(CkCertW &cert);
// Returns the Nth certificate in index used to digitally sign this email. Signed
// emails are typically signed by a single signer, but it is possible to have
// multiple signers. The 1st signer is at index 0.
bool LastSignerCert(int index, CkCertW &cert);
// Extracts domain names from hyperlinks in an HTML email. Lowercase domains are
// appended to domains without creating duplicates.
bool LinkedDomains(CkStringTableW &domains);
// Loads a complete email from a .EML file. (EML files are simply RFC822 MIME text
// files.)
//
// Note: This replaces the entire contents of the email object, including the To/CC
// recipients.
//
bool LoadEml(const wchar_t *mimePath);
// Loads the email object from a completed asynchronous task.
bool LoadTaskResult(CkTaskW &task);
// Loads an email with the contents of an XML email file.
//
// Note: This replaces the entire contents of the email object, including the To/CC
// recipients.
//
bool LoadXml(const wchar_t *xmlPath);
// Loads an email from an XML string (previously obtained by calling the GetXml
// method). The contents of the calling email object are erased and replaced with
// the email contained within the XML string.
bool LoadXmlString(const wchar_t *xmlStr);
// Creates a copy of this email in destEmail.
bool MakeCopy(CkEmailW &destEmail);
// Takes a byte array of multibyte (non-Unicode) data and returns a Unicode
// Q-Encoded string.
bool QEncodeBytes(CkByteData &inData, const wchar_t *charset, CkString &outEncodedStr);
// Takes a byte array of multibyte (non-Unicode) data and returns a Unicode
// Q-Encoded string.
const wchar_t *qEncodeBytes(CkByteData &inData, const wchar_t *charset);
// Takes a Unicode string, converts it to the charset specified in the 2nd
// parameter, Q-Encodes the converted multibyte data, and returns the encoded
// Unicode string.
bool QEncodeString(const wchar_t *str, const wchar_t *charset, CkString &outEncodedStr);
// Takes a Unicode string, converts it to the charset specified in the 2nd
// parameter, Q-Encodes the converted multibyte data, and returns the encoded
// Unicode string.
const wchar_t *qEncodeString(const wchar_t *str, const wchar_t *charset);
// Removes the Nth message/rfc822 sub-part of the email. Indexing begins at 0.
void RemoveAttachedMessage(int idx);
// Removes all message/rfc822 sub-parts of the email object.
void RemoveAttachedMessages(void);
// Removes path information from all attachment filenames.
void RemoveAttachmentPaths(void);
// Removes by name all occurrences of a header field.
void RemoveHeaderField(const wchar_t *fieldName);
// Removes the HTML body from the email (if an HTML body exists).
void RemoveHtmlAlternative(void);
// Removes the plain-text body from the email (if a plain-text body exists).
void RemovePlainTextAlternative(void);
// Save all the attachments of an email to files in a directory specified by dirPath.
// The OverwriteExisting property controls whether existing files are allowed to be
// overwritten.
//
// Note: Email attachment filenames can be renamed or modified prior to saving. The
// number of attachments is available in the NumAttachments property. An
// application can loop over the attachments to get the filename for each by
// calling GetAttachmentFilename(index). Each attachment's filename can be set by
// calling SetAttachmentFilename(index, newFilename).
//
bool SaveAllAttachments(const wchar_t *dirPath);
// Saves the Nth email attachment to the directory specified by dirPath. The 1st
// attachment is at index 0. The OverwriteExisting property controls whether
// existing files are allowed to be overwritten.
bool SaveAttachedFile(int index, const wchar_t *dirPath);
// Convert this email object to EML and save it to a file.
bool SaveEml(const wchar_t *emlFilePath);
// Saves the Nth related item to the directory specified by dirPath. (The 1st related
// item is at index 0) Related content items are typically image or style-sheets
// embedded within an HTML email. The OverwriteExisting property controls whether
// existing files are allowed to be overwritten.
bool SaveRelatedItem(int index, const wchar_t *dirPath);
// Convert this email object to XML and save it to a file.
bool SaveXml(const wchar_t *path);
// Sets the charset attribute of the content-type header field for a specified
// attachment. This can be used if the attachment is a text file that contains text
// in a non us-ascii charset such as Shift_JIS, iso-8859-2, big5, iso-8859-5, etc.
bool SetAttachmentCharset(int index, const wchar_t *charset);
// Set's an attachment's disposition. The default disposition of an attachment is
// attachment . This method is typically called to change the disposition to inline
// . The 1st attachment is at index 0.
bool SetAttachmentDisposition(int index, const wchar_t *disposition);
// Renames a email attachment's filename. The 1st attachment is at index 0.
bool SetAttachmentFilename(int index, const wchar_t *filename);
// Sets the main body of the email to binary content of any type. The disposition
// can be an empty string, inline , or attachment . If a filename is specified, the
// disposition must be non-empty because the filename is an attribute of the
// content-disposition header field.
bool SetBinaryBody(CkByteData &byteData, const wchar_t *contentType, const wchar_t *disposition, const wchar_t *filename);
// This function sets the email's main body to binary content. bd contains the
// binary data. disposition specifies the disposition and can be an empty string, inline ,
// or attachment . If filename is provided, disposition must be specified because filename is an
// attribute of the content-disposition header.
bool SetBodyBd(CkBinDataW &bd, const wchar_t *contentType, const wchar_t *disposition, const wchar_t *filename);
// Allows for a certificate to be explicity provided for decryption. When an email
// object is loaded via any method, such as LoadEml, SetFromMimeText,
// SetFromMimeBytes, etc., security layers (signatures and encryption) are
// automatically unwrapped. This method could be called prior to calling a method
// that loads the email.
bool SetDecryptCert(CkCertW &cert);
// Allows for a certificate and private key to be explicity specified for
// decryption. When an email object is loaded via any method, such as LoadEml,
// SetFromMimeText, SetFromMimeBytes, etc., security layers (signatures and
// encryption) are automatically unwrapped. Decryption requires a private key. On
// Windows-based systems, the private key is often pre-installed and nothing need
// be done to provide it because Chilkat will automatically find it and use it.
// However, if not on a Windows system, or if the private key was not
// pre-installed, then it can be provided by this method, or via the
// AddPfxSourceFile / AddPfxSourceData methods.
bool SetDecryptCert2(CkCertW &cert, CkPrivateKeyW &key);
// Sets the Date header field of the email to have the value of the date/time
// object provided.
bool SetDt(CkDateTimeW &dt);
// Creates a typical email used to send EDIFACT messages. Does the following:
// 1. Sets the email body to the EDIFACT message passed in message.
// 2. Sets the Content-Transfer-Encoding to Base64.
// 3. Set the Content-Type equal to application/EDIFACT .
// 4. Sets the Content-Type header's name attribute to name.
// 5. Sets the Content-Disposition equal to attachment .
// 6. Sets the Content-Disposition's filename attribute equal to filename.
// 7. The EDIFACT message is converted to the charset indicated by charset, and
// encoded using Base64 in the email body.
// The email's subject, recipients, FROM address, and other headers are left
// unmodified.
void SetEdifactBody(const wchar_t *message, const wchar_t *name, const wchar_t *filename, const wchar_t *charset);
// Set the encryption certificate to be used in encryption. Use the CreateCS,
// CertStore, and Cert classes to create a Cert object by either locating a
// certificate in a certificate store or loading one from a file.
bool SetEncryptCert(CkCertW &cert);
// Loads an email with the MIME stored in a BinData object.
//
// Note: This replaces the entire contents of the email object, including the To/CC
// recipients.
//
bool SetFromMimeBd(CkBinDataW &bindat);
// Loads the email object with the mimeBytes. If the email object already contained an
// email, it is entirely replaced. The character encoding (such as utf-8 ,
// iso-8859-1 , etc.) of the bytes is automatically inferred from the content. If
// for some reason it is not possible to determine the character encoding, the
// SetFromMimeBytes2 method may be called to explicitly specify the charset.
bool SetFromMimeBytes(CkByteData &mimeBytes);
// Loads the email object with the mimeBytes. If the email object already contained an
// email, it is entirely replaced.
//
// The charset specifies the character encoding of the MIME bytes (such as utf-8 ,
// iso-8859-1 , etc.).
//
bool SetFromMimeBytes2(CkByteData &mimeBytes, const wchar_t *charset);
// Loads an email with the MIME stored in a StringBuilder object.
//
// Note: This replaces the entire contents of the email object, including the To/CC
// recipients.
//
bool SetFromMimeSb(CkStringBuilderW &sb);
// Loads an email with the contents of a .eml (i.e. MIME) contained in a string.
//
// Note: This replaces the entire contents of the email object, including the To/CC
// recipients.
//
bool SetFromMimeText(const wchar_t *mimeText);
// Loads an email from an XML string.
//
// Note: This replaces the entire contents of the email object, including the To/CC
// recipients.
//
bool SetFromXmlText(const wchar_t *xmlStr);
// Sets the HTML body of an email.
void SetHtmlBody(const wchar_t *html);
// Sets the HTML email body from a byte array containing character data in the
// specified character set. This method also updates the email content-type header
// to properly reflect the content type of the body.
bool SetMbHtmlBody(const wchar_t *charset, CkByteData &inData);
// Sets the plain-text email body from a byte array containing character data in
// the specified character set. This method also updates the email content-type
// header to properly reflect the content type of the body.
bool SetMbPlainTextBody(const wchar_t *charset, CkByteData &inData);
// Sets the filename for a related item within the email.
bool SetRelatedFilename(int index, const wchar_t *path);
// Create a pattern/replacement-text pair for mail-merge. When the email is sent
// via the MailMan's SendEmail method, or any other mail-sending method, the
// patterns are replaced with the replacement strings during the sending process.
// To define multiple replacement patterns, simply call SetReplacePattern once per
// pattern/replacement string. (Note: The MailMan's RenderToMime method will also
// do pattern replacements. Methods such as SaveEml or GetMime do not replace
// patterns.)
//
// Note: Replacement patterns may be placed in any header field, and in both HTML
// and plain-text email bodies.
//
bool SetReplacePattern(const wchar_t *pattern, const wchar_t *replaceString);
// Set the certificate to be used in creating a digital signature. Use the
// CreateCS, CertStore, and Cert classes to create a Cert object by either locating
// a certificate in a certificate store or loading one from a file.
bool SetSigningCert(CkCertW &cert);
// Explicitly sets the certificate and private key to be used for sending digitally
// signed email. If the certificate's private key is already installed on the
// computer, then one may simply call SetSigningCert because the Chilkat component
// will automatically locate and use the corresponding private key (stored in the
// Windows Protected Store). In most cases, if the digital certificate is already
// installed w/ private key on the computer, it is not necessary to explicitly set
// the signing certificate at all. The Chilkat component will automatically locate
// and use the certificate containing the FROM email address (from the
// registry-based certificate store where it was installed).
bool SetSigningCert2(CkCertW &cert, CkPrivateKeyW &key);
// Sets the body of the email and also sets the Content-Type header field of the
// contentType. If the email is already multipart/alternative, an additional alternative
// with the indicated Content-Type will be added. If an alternative with the same
// Content-Type already exists, it is replaced.
void SetTextBody(const wchar_t *bodyText, const wchar_t *contentType);
// Creates a new Delivery Status Notification (DSN) email in the format specified
// by RFC 3464. The DSN email is generated in dsnEmail.
bool ToDsn(const wchar_t *explanation, const wchar_t *statusFields, bool headerOnly, CkEmailW &dsnEmail);
// Creates inline forward of this email in forward.
bool ToForward(CkEmailW &forward);
// Creates a new MDN (Message Disposition Notification) email in message having the
// format as specified in RFC 3798.
bool ToMdn(const wchar_t *message, const wchar_t *statusFields, bool headerOnly, CkEmailW &mdn);
// Generates a reply email in reply with updated header and body fields to enable
// sending as a reply. Note: Attachments are excluded from the reply, but attached
// messages are included. To exclude attached messages, call RemoveAttachedMessages
// on the reply email object.
bool ToReply(CkEmailW &reply);
// True if the caller email has a UIDL that equals the email passed in the
// argument.
bool UidlEquals(CkEmailW &e);
// Unpacks an HTML email into an HTML file and related files (images and style
// sheets). The links within the HTML are updated to point to the files unpacked
// and saved to disk.
//
// The unpackDir is the absolute or relative directory path where the HTML file should
// be written. The partsSubdir is the subdirectory beneath unpackDir where images and style
// sheets should be written. If partsSubdir does not already exist, it is automatically
// created.
//
// For example, if unpackDir = C:/test , htmlFilename = myEmail.html , and partsSubdir = images , then
// C:/test/myEmail.html is created, and the related files are written into
// C:/test/images.
//
// Note: The UnpackHtml method extracts images that are actually contained within
// the email itself. If the HTML contains an IMG tag that just links to an image on
// the web (but the image data is not contained locally within the email), then the
// image is not unpacked (because it would need to be downloaded from the web).
//
bool UnpackHtml(const wchar_t *unpackDir, const wchar_t *htmlFilename, const wchar_t *partsSubdir);
// Unobfuscates emails by undoing what spammers do to obfuscate email. It removes
// comments from HTML bodies and unobfuscates hyperlinked URLs.
void UnSpamify(void);
// Unzips and replaces any Zip file attachments with the expanded contents. As an
// example, if an email contained a single Zip file containing 3 GIF image files as
// an attachment, then after calling this method the email would contain 3 GIF file
// attachments, and the Zip attachment would be gone.If an email contains multiple
// Zip file attachments, each Zip is expanded and replaced with the contents.
bool UnzipAttachments(void);
// Adds an XML certificate vault to the object's internal list of sources to be
// searched for certificates and private keys when encrypting/decrypting or
// signing/verifying. Unlike the AddPfxSourceData and AddPfxSourceFile methods,
// only a single XML certificate vault can be used. If UseCertVault is called
// multiple times, only the last certificate vault will be used, as each call to
// UseCertVault will replace the certificate vault provided in previous calls.
bool UseCertVault(CkXmlCertVaultW &vault);
// Replaces all the attachments of an email with a single Zip file attachment
// having the filename specified.
bool ZipAttachments(const wchar_t *zipFilename);
// END PUBLIC INTERFACE
};
#if !defined(__sun__) && !defined(__sun)
#pragma pack (pop)
#endif
#endif