SophiaFramework UNIVERSE 5.3 |
SFXMailMessage クラスは、 RFC2822 に基づき、 送信メールメッセージを作成したり、受信メールメッセージを取得するためのクラスです。 文字コードの変換や、Base64 や Quoted-Printable のエンコードとデコードはこのクラス内で自動的に行われます。
このクラスは、マルチパートメッセージと添付ファイルに対応しています。
件名や添付ファイル名のエンコーディング | |
---|---|
件名や添付ファイル名は、 RFC2231: MIME Parameter Value and Encoded Word Extensions に対応していません。 |
注意 | |
---|---|
このクラスは、SFXMailUtility クラスと SFXMailField クラスを使用して実装されています。 |
送信メールメッセージの処理手順
例 833. メールメッセージ作成
class MyClass { private: SFXSMTPSender _sender; XALLBACK_DECLARE_SFXSMTPSENDER(SMTPCallback) public: Void Start(Void); }; Void MyClass::Start(Void) { SFCError error; SFXMailMessage message; // メールヘッダーに Subject フィールドを設定する message.SetSubjectField("Mail Subject"); // メールヘッダーに From フィールドを設定する message.SetFromField("[email protected]"); // メールヘッダーに To アドレスを追加する message.AddToField("[email protected]"); message.AddToField("[email protected]"); // メールヘッダーに Cc アドレスを追加する message.AddCcField("[email protected]"); // メールヘッダーに Bcc アドレスを追加する message.AddBccField("[email protected]"); // メールヘッダーに メッセージ本文の種類を追加する message.AddField("Content-Type", "text"); // メールメッセージの本文を設定する message.SetBody("Mail test\r\nThis mail is sent by SFXSMTPSender.\r\n"); //添付するテキストファイル名を作成する SFXBuffer buff("Hello", 5); メールメッセージにファイルを添付する message.AttachFile(buff, "filename.txt", "text", "plain"); // SMTP サーバーのドメイン名(または IP アドレス)とポート番号を指定する: ドメイン名は自動解決される _sender.SetServer(SFXSocketAddress("smtpserver.example.com:25")); // SMTPCallback コールバック関数を登録し、メールを送信する // ※ メール送信の結果は SMTPCallback 関数に通知される if ((error = _sender.SendMessage(&message, XALLBACK_INTERNAL(SMTPCallback))) != SFERR_NO_ERROR) { // error が SFERR_NO_ERROR でない場合はコールバックが戻らないので、 // ここでエラー処理をする } } // メール送信の結果が通知されるコールバック関数 XALLBACK_IMPLEMENT_SFXSMTPSENDER(MyClass, SMTPCallback, error) { if (error == SFERR_NO_ERROR) { TRACE("メールを送信しました。"); } else { TRACE("メール送信に失敗しました。 %d", error); } }
受信メールメッセージの処理手順
マルチパートメッセージの処理 | |
---|---|
SFXMailMessage::IsMultipart 関数を使用してマルチパート部の有無を判定して処理します。 |
例 834. 受信メールメッセージの解析
// 受信したメールメッセージ SFXAnsiString receivedString = "From: Albert Einstein <[email protected]>\r\n" "To: Isaac Newton <[email protected]>\r\n" "Subject: untitled\r\n" "Date: Sat, 08 Mar 2008 20:37:58 +0900\r\n" "\r\n" "This is a mail body.\r\n"; SFXMailMessage message; // メールメッセージを解析する message.Parse(receivedString); // メールヘッダーの From フィールドを取得する // fromString は "Albert Einstein <[email protected]>" になる SFXAnsiString fromString = message.GetFromField(); // メールヘッダーの To フィールドを取得する // toString は "Isaac Newton <[email protected]>" になる SFXAnsiString toString = message.GetToField(); // メールヘッダーの Subject フィールドを取得する // subjectString は "untitled" になる SFXAnsiString subjectString = message.GetSubjectField(); // メールヘッダーの Date フィールドを取得する // date は "Sat, 08 Mar 2008 20:37:58 +0900" になる SFXDate date = message.GetDateField(); // メール本文を取得する // bodyString は "This is a mail body.\r\n" になる SFXAnsiString bodyString = message.GetBody();
SFXMailUtility | SFXMailField | RFC2822: Internet Message Format | RFC822: Standard for the Format of ARPA-Internet Text Messages | RFC2231: MIME Parameter Value and Encoded Word Extensions
コンストラクタ/デストラクタ |
---|
SFXMailMessage( Void ) SFXMailMessage クラスのコンストラクタです。
|
~SFXMailMessage( Void ) SFXMailMessage クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
AddBccField(
SFXAnsiStringConstRef bcc
) メールヘッダーの Bcc フィールドに指定された bcc: メールアドレスを追加します。
|
SFCError |
AddCcField(
SFXAnsiStringConstRef cc
) メールヘッダーの Cc フィールドに指定された cc: メールアドレスを追加します。
|
SFCError |
AddField(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef value
) 指定されたメールヘッダーのフィールドに指定された値を追加します。
|
SFCError |
AddMultipartBody(
SFXMailMessagePtr body
) マルチパートメッセージにメールメッセージを追加します。
|
SFCError |
AddToField(
SFXAnsiStringConstRef to
) メールヘッダーの To フィールドに to: メールアドレスを追加します。
|
SFCError |
AttachFile(
SFXBufferConstRef file
, SFXAnsiStringConstRef fileName
, SFXAnsiStringConstRef mainType = "application"
, SFXAnsiStringConstRef subType = "octet-stream"
) メールメッセージにファイルを添付します。
|
Void |
Clear( Void ) メールメッセージの内容をクリアします。
|
SFCError |
GetAttachedFile(
SInt32 index
, SFXBufferPtr data
, SFXAnsiStringPtr fileName
, SFXAnsiStringPtr mainType = null
, SFXAnsiStringPtr subType = null
) 指定されたインデックスの添付ファイルを取得します。
|
SFXAnsiString |
GetBccField(
Bool isDecoding = true
) メールヘッダーの Bcc フィールドの値を取得します。
|
SFXAnsiString |
GetBody(
Bool isDecoding = true
) メールメッセージの本文を取得します。
|
SFXAnsiStringConstRef |
GetBodyRef( Void ) メールメッセージの本文への参照を取得します。
|
SFXAnsiString |
GetBodyText(
Bool isDecoding = true
) メールメッセージの本文を取得します。
|
SFXAnsiString |
GetCcField(
Bool isDecoding = true
) メールヘッダーの Cc フィールドの値を取得します。
|
SFXAnsiString |
GetContentType( Void ) メールメッセージの Content-Type の値を取得します。
|
SFCError |
GetContentType(
SFXAnsiStringPtr mainType
, SFXAnsiStringPtr subType
, SFXPropertyConstHandle attribute
) メールメッセージの Content-Type の値を取得します。
|
SFXDate |
GetDateField( Void ) メールヘッダーの Date フィールドの値を取得します。
|
SFXAnsiString |
GetEpilogue(
Bool isDecoding = true
) マルチパートメッセージのエピローグテキスト(後置部分)を取得します。
|
SFXAnsiString |
GetField(
SFXAnsiStringConstRef name
, Bool isDecoding = true
, BoolPtr found = null
) 指定されたメールヘッダーのフィールドの値を取得します。
|
SFXPropertyConstRef |
GetFieldList( Void ) メールメッセージの全てのヘッダーフィールドを取得します。
|
SFXAnsiString |
GetFromField(
Bool isDecoding = true
) メールヘッダーの From フィールドの値を取得します。
|
SFXMailMessagePtr |
GetMultipartMessage(
SInt32 index
) マルチパートメッセージの指定された内部メッセージを取得します。
|
UInt32 |
GetMultipartSize( Void ) マルチパートメッセージの内部メッセージの個数を返します。
|
SFXAnsiString |
GetPreamble(
Bool isDecoding = true
) マルチパートメッセージのプリアンブルテキスト(前置部分)を取得します。
|
SFXAnsiString |
GetSubjectField(
Bool isDecoding = true
) メールヘッダーの Subject フィールドの値を取得します。
|
SFXAnsiString |
GetToField(
Bool isDecoding = true
) メールヘッダーの To フィールドの値を取得します。
|
Bool |
HasField(
SFXAnsiStringConstRef name
) 指定されたフィールドがメールメッセージのヘッダーに存在するかどうかを判定します。
|
Bool |
IsMultipart( Void ) マルチパートメッセージであるかどうかを判定します。
|
SFCError |
Parse(
ACharConstPtr message
) 指定されたテキストをメールメッセージとして読み込みます。
|
SFCError |
Parse(
SFXAnsiStringConstRef message
) 指定されたテキストをメールメッセージとして読み込みます。
|
SFCError |
Parse(
ACharConstPtr start
, ACharConstPtr end
) 指定されたテキストをメールメッセージとして読み込みます。
|
SFCError |
ParseHeaderOnly(
ACharConstPtr message
) 指定されたテキストについてヘッダー部分のみをメールメッセージとして読み込みます。
|
SFCError |
ParseHeaderOnly(
SFXAnsiStringConstRef message
) 指定されたテキストについてヘッダー部分のみをメールメッセージとして読み込みます。
|
SFCError |
ParseHeaderOnly(
ACharConstPtr start
, ACharConstPtr end
) 指定されたテキストについてヘッダー部分のみをメールメッセージとして読み込みます。
|
Void |
RemoveField(
SFXAnsiStringConstRef name
) メールメッセージのヘッダーから指定されたフィールドを削除します。
|
SFCError |
ReplaceBccField(
SFXAnsiStringConstRef bcc
) メールヘッダーの Bcc フィールドの値を指定された値で置き換えます。
|
SFCError |
ReplaceCcField(
SFXAnsiStringConstRef cc
) メールヘッダーの Cc フィールドの値を指定された値で置き換えます。
|
SFCError |
ReplaceField(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef value
) 指定されたメールヘッダーのフィールドの値を指定された値で置き換えます。
|
SFCError |
ReplaceToField(
SFXAnsiStringConstRef to
) メールヘッダーの To フィールドの値を指定された値で置き換えます。
|
SFCError |
SetBody(
SFXAnsiStringConstRef text
) 指定されたテキストをメールメッセージの本文として設定します。
|
SFCError |
SetContentType(
SFXAnsiStringConstRef mainType
, SFXAnsiStringConstRef subType
) メールメッセージの Content-Type を指定された値に設定します。
|
SFCError |
SetContentType(
SFXAnsiStringConstRef mainType
, SFXAnsiStringConstRef subType
, SFXPropertyConstRef attribute
) メールメッセージの Content-Type を指定された値に設定します。
|
SFCError |
SetEpilogue(
SFXAnsiStringConstRef text
) マルチパートメッセージのエピローグテキスト(後置部分)を設定します。
|
SFCError |
SetFromField(
SFXAnsiStringConstRef from
) メールヘッダーの From フィールドに指定された from: メールアドレスを設定します。
|
SFCError |
SetPreamble(
SFXAnsiStringConstRef text
) マルチパートメッセージのプリアンブルテキスト(前置部分)を設定します。
|
SFCError |
SetSubjectField(
SFXAnsiStringConstRef subject
) メールヘッダーの Subject フィールドに指定された件名を設定します。
|
SFXAnsiString |
Write(
Bool isEncoding = true
, UInt32 fieldMaxLen = 78
) メールメッセージをテキストとして書き出します。
|
型 |
---|
DocList メールメッセージの配列を表す型です。
|
[ public, explicit ] SFXMailMessage(Void);
[ public ] ~SFXMailMessage(Void);
このデストラクタは、 SFXMailMessage::Clear 関数を呼び出してメールメッセージの内容をクリアします。
[ public ] SFCError AddBccField( SFXAnsiStringConstRef bcc // [入力] bcc: メールアドレス );
bcc: メールアドレスを指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの Bcc フィールドに指定された bcc: メールアドレスを追加します。
Bcc フィールドの値が複数の bcc: メールアドレスで構成される場合、 個々の bcc: メールアドレスは "," で区切られます。
注意 | |
---|---|
bcc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
[ public ] SFCError AddCcField( SFXAnsiStringConstRef cc // [入力] cc: メールアドレス );
cc: メールアドレスを指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの Cc フィールドに指定された cc: メールアドレスを追加します。
Cc フィールドの値が複数の cc: メールアドレスで構成される場合、 個々の cc: メールアドレスは "," で区切られます。
注意 | |
---|---|
cc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
[ public ] SFCError AddField( SFXAnsiStringConstRef name // [入力] フィールド名 SFXAnsiStringConstRef value // [入力] 追加する値 );
メールヘッダーのフィールド名として有効な文字列を指定します。
追加する値を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、name 引数に指定されたメールヘッダーのフィールドに value 引数に指定された値を追加します。
フィールド名が有効であるかどうかは、 SFXMailUtility::IsValidFieldName 関数により判定されます (フィールド名は "0x3A"[=":"]を除く US-ASCII 値 "0x21" から "0x7E" の文字で構成されている必要があります)。
注意 | |
---|---|
フィールド値に含まれる日本語は、Shift_JIS コードでエンコードします。 |
注意 | |
---|---|
SFXMailMessage::ReplaceField 関数とは異なり、 name 引数に指定されたフィールドの既存の値を削除せずに指定された値を追加します。 From フィールドや Subject フィールドなど、 複数のデータが許されないメールヘッダーのフィールドでは SFXMailMessage::ReplaceField 関数を使用して フィールドの値を変更します。 一方、Received フィールドなどの複数のデータが許されているメールヘッダーのフィールドでは この関数を使用してフィールドの値を追加します。 |
SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName
[ public ] SFCError AddMultipartBody( SFXMailMessagePtr body // [入力] 追加するメールメッセージ );
追加するメールメッセージを指定します。
この関数は、マルチパートメッセージにメールメッセージを追加します。
注意 | |
---|---|
この関数を呼び出す前に、 SFXMailMessage::SetContentType 関数により Content-Type を "multipart" に設定する必要があります。 メールメッセージの Content-Type が "multipart" でない場合は、 SFERR_INVALID_STATE が返却されます。 |
SFXMailMessage::AttachFile | SFXMailMessage::GetMultipartMessage | SFXMailMessage::SetContentType | SFXMailMessage::IsMultipart | SFXMailMessage::DocList
[ public ] SFCError AddToField( SFXAnsiStringConstRef to // [入力] to: メールアドレス );
to: メールアドレスを指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの To フィールドに to: メールアドレスを追加します。
To フィールドの値が複数の to: メールアドレスで構成される場合、 個々の to: メールアドレスは "," で区切られます。
注意 | |
---|---|
to: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
[ public ] SFCError AttachFile( SFXBufferConstRef file // [入力] 添付するデータ SFXAnsiStringConstRef fileName // [入力] 添付ファイル名 SFXAnsiStringConstRef mainType = "application" // [入力] 添付するデータの Content-Type の type SFXAnsiStringConstRef subType = "octet-stream" // [入力] 添付するデータの Content-Type の subType );
添付するデータを指定します(任意のデータを添付できます)。
添付ファイルの名前を指定します。
注意 | |
---|---|
空文字列を指定すると、 データは添付(attachment)ではなく、 内蔵(inline)されるものとして処理されます。 |
添付するデータの Content-Type の type を指定します。 テキストなら "text"、JPEG 画像なら "image" を指定します。
注意 | |
---|---|
デフォルト値は "application" です。 |
添付するデータの Content-Type の subType を指定します。 テキストなら "plain"、JPEG 画像なら "jpeg" を指定します。
注意 | |
---|---|
デフォルト値は "octet-stream" です。 |
この関数は、メールメッセージにファイルを添付します。
メールメッセージへのファイル添付は以下のように処理されます。
注意 | |
---|---|
この関数を呼び出す前に、 SFXMailMessage::SetBody 関数によりメールメッセージを設定する必要があります。 この関数を呼び出した時点でマルチパート部を持たない場合、 このメールメッセージはマルチパート部を持つようになります。 添付するデータは、自動的に Base64 でエンコードされます。 |
以下は、テキストファイルを添付するコードです。
//SFXMailMessage msg に添付する場合 msg.SetBody("メッセージ本文"); //添付ファイルを添付する前に本文をセットする SFXBuffer buff1("abc", 3); //添付するテキストファイル( 1 つ目) SFXBuffer buff2("defghij", 7); //添付するテキストファイル( 2 つ目) msg.AttachFile(buff1, "filename1.txt", "text", "plain"); msg.AttachFile(buff2, "filename2.txt", "text", "plain");
SFXMailMessage::AddMultipartBody | SFXMailMessage::GetMultipartMessage | SFXMailMessage::IsMultipart | SFXMailMessage::DocList
[ public ] Void Clear(Void);
[ public, const ] SFCError GetAttachedFile( SInt32 index // [入力] 添付ファイルのインデックス SFXBufferPtr data // [出力] 添付データが格納された場所へのポインタ SFXAnsiStringPtr fileName // [出力] 添付ファイル名が格納された場所へのポインタ SFXAnsiStringPtr mainType = null // [出力] 添付データの Content-Type の type が格納された場所へのポインタ SFXAnsiStringPtr subType = null // [出力] 添付データの Content-Type の subType が格納された場所へのポインタ );
何番目の添付ファイルを取り出すかを指定します。
添付ファイルの個数は SFXMailMessage::GetMultipartSize 関数で取得できます。 index は 0 から始まります。
添付データが格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。
添付データのファイル名が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。
添付データの Content-Type の type が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。
添付データの Content-Type の subType が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。
この関数は、指定されたインデックスの添付ファイルを取得します。
注意 | |
---|---|
Base64 エンコードされたファイルは自動的にデコードされます。 |
添付ファイル名のエンコーディング | |
---|---|
RFC2231(MIME Parameter Value and Encoded Word Extensions)には対応していません。 |
SFXMailMessage::AttachFile | SFXMailMessage::AddMultipartBody | SFXMailMessage::IsMultipart | SFXMailMessage::GetMultipartSize
[ public, const ] SFXAnsiString GetBccField( Bool isDecoding = true // [入力] デコードするかどうか );
デコードするどうかを指定します。
true の場合、B エンコードまたは Q エンコードされた Cc フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。
デフォルトは true です。
Bcc フィールドの値。
この関数は、メールヘッダーの Bcc フィールドの値を取得します。
Bcc フィールドの値が複数の bcc: メールアドレスで構成される場合、 個々の bcc: メールアドレスは "," で区切られます。
注意 | |
---|---|
この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。 |
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::AddBccField | SFXMailMessage::ReplaceBccField | SFXMailMessage::GetField | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public, const ] SFXAnsiString GetBody( Bool isDecoding = true // [入力] JIS コードの日本語を Shift_JIS コードに変換するかどうか );
デコードするどうかを指定します。
true の場合、JIS コードの日本語を Shift_JIS コードに変換します。
デフォルトは true です。
メールメッセージの本文(マルチパートメッセージの場合は、空文字列)。
この関数は、メールメッセージの本文を取得します。
isDecoding 引数を true に設定すると、 JIS コードの日本語を Shift_JIS コードに変換します。
マルチパートメッセージの場合 | |
---|---|
マルチパートメッセージの場合、この関数は空文字列を返します。 マルチパートメッセージの本文を取得するには、 SFXMailMessage::GetMultipartMessage 関数を使います。 |
[ public, const ] SFXAnsiStringConstRef GetBodyRef(Void);
メールメッセージの本文への参照を返します(マルチパートメッセージの場合は、空文字列への参照)。
この関数は、メールメッセージの本文への参照を取得します。
注意 | |
---|---|
マルチパートメッセージの場合、この関数は空文字列への参照を返します。 この関数は、 メールメッセージの本文を効率的に処理したい場合に使用します。 |
[ public, const ] SFXAnsiString GetBodyText( Bool isDecoding = true // [入力] デコードを行うか );
デコードするどうかを指定します。
true の場合、 マルチパートメッセージは、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージの本体をデコードします。 非マルチパートメッセージは、JIS コードのメールメッセージの本体を Shift_JIS コードに変換します。
デフォルトは true です。
メールメッセージの本文(マルチパートメッセージの場合は、マルチパート部の最初のテキスト)。
この関数は、メールメッセージの本文を取得します。
マルチパートメッセージの場合 | |
---|---|
マルチパートメッセージの場合、 この関数はマルチパート部の最初のテキストを返します。 |
[ public, const ] SFXAnsiString GetCcField( Bool isDecoding = true // [入力] デコードするかどうか );
デコードするどうかを指定します。
true の場合、B エンコードまたは Q エンコードされた Cc フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。
デフォルトは true です。
Cc フィールドの値。
この関数は、メールヘッダーの Cc フィールドの値を取得します。
Cc フィールドの値が複数の cc: メールアドレスで構成される場合、 個々の cc: メールアドレスは "," で区切られます。
注意 | |
---|---|
この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。 |
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::AddCcField | SFXMailMessage::ReplaceCcField | SFXMailMessage::GetField | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public, const ] SFXAnsiString GetContentType(Void);
[ public, const ] SFCError GetContentType( SFXAnsiStringPtr mainType // [出力] Content-Type の type が格納された場所へのポインタ SFXAnsiStringPtr subType // [出力] Content-Type の subType が格納された場所へのポインタ SFXPropertyConstHandle attribute // [出力] 属性(パラメータリスト)が格納された場所へのハンドル );
この関数は、メールメッセージの Content-Type の値を取得します。
[ public, const ] SFXDate GetDateField(Void);
Date フィールドの値(SFXDate)。
[ public, const ] SFXAnsiString GetEpilogue( Bool isDecoding = true // [入力] JIS コードの日本語を Shift_JIS コードに変換するかどうか );
デコードするどうかを指定します。
true の場合、JIS コードの日本語を Shift_JIS コードに変換します。
デフォルトは true です。
マルチパートメッセージのエピローグテキスト(後置部分)、マルチパートメッセージでないときは空文字列。
この関数は、マルチパートメッセージのエピローグテキスト(後置部分)を取得します。
注意 | |
---|---|
エピローグテキスト(後置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最後に付加される文字列です。 |
SFXMailMessage::SetEpilogue | SFXMailMessage::GetPreamble | SFXMailMessage::SetPreamble | SFXMailMessage::IsMultipart
[ public, const ] SFXAnsiString GetField( SFXAnsiStringConstRef name // [入力] フィールド名 Bool isDecoding = true // [入力] デコードするかどうか BoolPtr found = null // [出力] フィールドが存在するかどうかが格納された場所へのポインタ );
メールヘッダーのフィールド名として有効な文字列を指定します。
デコードするどうかを指定します。
true の場合、B エンコードまたは Q エンコードされた Cc フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。
デフォルトは true です。
指定したフィールドが存在した場合、"true" が格納される場所へのポインタを指定します。 取得する必要がない場合は、null を指定します。
指定されたフィールドの値(指定されたフィールドが存在しない場合は、空文字列)。
この関数は、指定されたメールヘッダーのフィールドの値を取得します。
指定されたフィールドが存在しない場合は、空文字列を返却します。
注意 | |
---|---|
2 つ以上の値が同じフィールド名で保存されていた場合、最初の値だけを読み出します。 同じフィールド名を持つ全ての値を取得するには、SFXMailMessage::GetFieldList 関数を使います。 |
注意 | |
---|---|
EUC コードでエンコードされた日本語は、Shift_JIS コードに変換されません。 JIS コードでエンコードされた日本語だけが、Shift_JIS コードに変換されます。 |
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::RemoveField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public, const ] SFXPropertyConstRef GetFieldList(Void);
メールメッセージの全てのヘッダーフィールド(SFXProperty)。
この関数は、メールメッセージの全てのヘッダーフィールドを取得します。
注意 | |
---|---|
メールメッセージの全てのヘッダーフィールドは、 SFXProperty インスタンスとして返却されます。 フィールド値は、 B エンコードまたは Q エンコードに関するデコードは行われません。 また、日本語の文字コードの変換も行われません。 |
メールメッセージのヘッダー編集時の注意事項 | |
---|---|
戻り値の SFXProperty インスタンスを使用してメールメッセージのヘッダーを編集する場合、 フィールド名の正当性はチェックされませんので、以下の点に注意して編集する必要があります。
|
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::RemoveField | SFXMailMessage::HasField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXProperty | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public, const ] SFXAnsiString GetFromField( Bool isDecoding = true // [入力] デコードするかどうか );
デコードするどうかを指定します。
true の場合、B エンコードまたは Q エンコードされた From フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。
デフォルトは true です。
From フィールドの値。
この関数は、メールヘッダーの From フィールドの値を取得します。
注意 | |
---|---|
この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。 |
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::SetFromField | SFXMailMessage::GetField | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public ] SFXMailMessagePtr GetMultipartMessage( SInt32 index // [入力] 内部メッセージの番号 );
マルチパートメッセージの内部メッセージ(SFXMailMessage インスタンスへのポインタ)。
この関数は、マルチパートメッセージの指定された内部メッセージを取得します。
マルチパートメッセージでないとき、または index 引数に指定された値が範囲外のときは null が返却されます。
注意 | |
---|---|
マルチパートメッセージの場合、内部に複数のメッセージを SFXMailMessage インスタンスとして持ちます。 index 引数に指定したメッセージへのポインタを取得できます(メッセージのインデックスは 0 から始まります)。 |
以下は、マルチパートメッセージの内部メッセージをひとつずつ取得するコードです。
// msg にメールメッセージがある SInt32 i; SFXMailMessage msg; SFXMailMessagePtr mail; if (msg.IsMultipart()) { // multipart かどうかを判定する for (i = 0; i < msg.GetMultipartSize(); i++) { mail = msg.GetMultipartMessage(i); // mail に対する処理 ... } }
[ public, const ] UInt32 GetMultipartSize(Void);
マルチパートメッセージの内部メッセージの個数、マルチパート部を持たないときは 0。
この関数は、マルチパートメッセージの内部メッセージの個数を返します。
マルチパート部を持たないときは 0 が返却されます。
[ public, const ] SFXAnsiString GetPreamble( Bool isDecoding = true // [入力] JIS コードの日本語を Shift_JIS コードに変換するかどうか );
デコードするどうかを指定します。
true の場合、JIS コードの日本語を Shift_JIS コードに変換します。
デフォルトは true です。
マルチパートメッセージのプリアンブルテキスト(前置部分)、マルチパートメッセージでないときは空文字列。
この関数は、マルチパートメッセージのプリアンブルテキスト(前置部分)を取得します。
注意 | |
---|---|
プリアンブルテキスト(前置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最初に付加される文字列です。 "This is a multi-part message in MIME format." などの文字列が設定されます。 |
[ public, const ] SFXAnsiString GetSubjectField( Bool isDecoding = true // [入力] デコードするかどうか );
デコードするどうかを指定します。
true の場合、B エンコードまたは Q エンコードされた Subject フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。
デフォルトは true です。
Subject フィールドの値。
この関数は、メールヘッダーの Subject フィールドの値を取得します。
件名のエンコーディング | |
---|---|
RFC2231(MIME Parameter Value and Encoded Word Extensions) には対応していません。 |
注意 | |
---|---|
この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。 |
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::SetSubjectField | SFXMailMessage::GetField | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public, const ] SFXAnsiString GetToField( Bool isDecoding = true // [入力] デコードするかどうか );
デコードするどうかを指定します。
true の場合、B エンコードまたは Q エンコードされた To フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。
デフォルトは true です。
To フィールドの値。
この関数は、メールヘッダーの To フィールドの値を取得します。
To フィールドの値が複数の to: メールアドレスで構成される場合、 個々の to: メールアドレスは "," で区切られます。
注意 | |
---|---|
この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。 |
B エンコードについて | |
---|---|
B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。 B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。 |
Q エンコードについて | |
---|---|
Q エンコードは、RFC 2045 で定義されれいる Quoted-Printable エンコードの変形です。 Quoted-Printable エンコードと同様に表示できない US-ASCII 文字はその文字の 2 桁の 16 進数に置き換えられ、 その前に "=" が置かれます。ただ、Q エンコードでは、空白文字は "=20" の代わりに "_" 文字に置き換えることも可能です。 そのため、"_" 文字は "=5F" で符号化されます(Quoted-Printable エンコードでは、"_" 文字は符号化する必要はありません)。 Q エンコードの詳細については RFC2047: 4.2. The "Q" encoding を参照してください。 |
SFXMailMessage::AddToField | SFXMailMessage::ReplaceToField | SFXMailMessage::GetField | RFC2047: 4.1. The "B" encoding | RFC2047: 4.2. The "Q" encoding
[ public, const ] Bool HasField( SFXAnsiStringConstRef name // フィールド名 );
メールヘッダーのフィールド名として有効な文字列を指定します。
この関数は、指定されたフィールドがメールメッセージのヘッダーに存在するかどうかを判定します。
SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName
[ public, const ] Bool IsMultipart(Void);
この関数は、マルチパートメッセージであるかどうかを判定します。
注意 | |
---|---|
マルチパートメッセージであるかどうかの判定は、 Content-Type の type が "multipart" であるかどうかによって決定されます。 |
[ public ] SFCError Parse( ACharConstPtr message // [入力] 解析するテキストへのポインタ );
[ public ] SFCError Parse( SFXAnsiStringConstRef message // [入力] 解析するテキスト );
[ public ] SFCError Parse( ACharConstPtr start // [入力] 解析するテキストの先頭へのポインタ ACharConstPtr end // [入力] 解析するテキストの終端へのポインタ );
メールメッセージとして解析するテキストを指定します。
メールメッセージとして解析するテキストの先頭へのポインタを指定します。
メールメッセージとして解析するテキストの終端へのポインタを指定します。
この関数は、指定されたテキストをメールメッセージとして読み込みます。
メールを受信してからこの関数を実行することにより、 Get 系関数を使用してヘッダーの各フィールドの値、メール文体、プリアンブルテキスト、エピローグテキストを取得することが可能になります。
注意 | |
---|---|
この関数は、マルチパートメッセージにも対応しています。 |
[ public ] SFCError ParseHeaderOnly( ACharConstPtr message // [入力] 解析するテキストへのポインタ );
[ public ] SFCError ParseHeaderOnly( SFXAnsiStringConstRef message // [入力] 解析するテキスト );
[ public ] SFCError ParseHeaderOnly( ACharConstPtr start // [入力] 解析するテキストの先頭へのポインタ ACharConstPtr end // [入力] 解析するテキストの終端へのポインタ );
メールメッセージとして解析するテキストを指定します。
メールメッセージとして解析するテキストの先頭へのポインタを指定します。
メールメッセージとして解析するテキストの終端へのポインタを指定します。
この関数は、指定されたテキストについてヘッダー部分のみをメールメッセージとして読み込みます。
メールを受信してからこの関数を実行することにより、 Get 系関数を使用してヘッダーの各フィールドの値を取得することが可能になります。
[ public ] Void RemoveField( SFXAnsiStringConstRef name // [入力] 削除するフィールド名 );
メールヘッダーのフィールド名として有効な文字列を指定します。
この関数は、メールメッセージのヘッダーから指定されたフィールドを削除します。
注意 | |
---|---|
指定されたフィールドが存在しない場合は何も処理されません。 |
SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName
[ public ] SFCError ReplaceBccField( SFXAnsiStringConstRef bcc // [入力] 置き換える Bcc フィールドの値 );
置き換える Bcc フィールドの値を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの Bcc フィールドの値を指定された値で置き換えます。
bcc 引数には "," で区切られた複数の bcc: メールアドレスを指定することが可能です。 Bcc フィールドが存在しない場合は、 bcc 引数に指定された値をメールヘッダーの Bcc フィールドの値として設定します。
注意 | |
---|---|
bcc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
注意 | |
---|---|
この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。 |
[ public ] SFCError ReplaceCcField( SFXAnsiStringConstRef cc // [入力] 置き換える Cc フィールドの値 );
置き換える Cc フィールドの値を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの Cc フィールドの値を指定された値で置き換えます。
cc 引数には "," で区切られた複数の cc: メールアドレスを指定することが可能です。 Cc フィールドが存在しない場合は、 cc 引数に指定された値をメールヘッダーの Cc フィールドの値として設定します。
注意 | |
---|---|
cc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
注意 | |
---|---|
この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。 |
[ public ] SFCError ReplaceField( SFXAnsiStringConstRef name // [入力] フィールド名 SFXAnsiStringConstRef value // [入力] 置き換えるフィールドの値 );
メールヘッダーのフィールド名として有効な文字列を指定します。
置き換える値を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、指定されたメールヘッダーのフィールドの値を指定された値で置き換えます。
フィールド名が有効であるかどうかは、 SFXMailUtility::IsValidFieldName 関数により判定されます (フィールド名は "0x3A"[=":"]を除く US-ASCII 値 "0x21" から "0x7E" の文字で構成されている必要があります)。
注意 | |
---|---|
フィールド値に含まれる日本語は、Shift_JIS コードでエンコードします。 |
注意 | |
---|---|
指定したフィールドがないときは、その値で新たにフィールドを追加します。 指定したフィールドがひとつだけある場合、その値を指定した値で置き換えます。 同じフィールド名のフィールドが 2 つ以上がある場合、最初のフィールドの値だけを指定した値で置き換えます。 |
SFXMailMessage::ReplaceToField | SFXMailMessage::ReplaceCcField | SFXMailMessage::ReplaceBccField | SFXMailMessage::AddField | SFXMailMessage::HasField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName
[ public ] SFCError ReplaceToField( SFXAnsiStringConstRef to // [入力] 置き換える To フィールドの値 );
置き換える To フィールドの値を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの To フィールドの値を指定された値で置き換えます。
to 引数には "," で区切られた複数の to メールアドレスを指定することが可能です。 To フィールドが存在しない場合は、 to 引数に指定された値をメールヘッダーの To フィールドの値として設定します。
注意 | |
---|---|
to: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
注意 | |
---|---|
この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。 |
[ public ] SFCError SetBody( SFXAnsiStringConstRef text // [入力] メールメッセージの本文 );
メールメッセージの本文を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、指定されたテキストをメールメッセージの本文として設定します。
日本語の本文は、Shift_JIS コードでエンコードする必要があります。
マルチパートメッセージの場合 | |
---|---|
マルチパートメッセージの場合、この関数は SFERR_INVALID_STATE を返却します。 マルチパートメッセージへの本文の追加は、 SFXMailMessage インスタンスを新たに作成し、 そのインスタンスに本文を設定した後に、 SFXMailMessage::AddMultipartBody 関数を呼び出してマルチパートメッセージに追加することによって行います。 |
[ public ] SFCError SetContentType( SFXAnsiStringConstRef mainType // [入力] Content-Type の type SFXAnsiStringConstRef subType // [入力] Content-Type の subType );
[ public ] SFCError SetContentType( SFXAnsiStringConstRef mainType // [入力] Content-Type の type SFXAnsiStringConstRef subType // [入力] Content-Type の subType SFXPropertyConstRef attribute // [入力] 属性(パラメータリスト) );
この関数は、メールメッセージの Content-Type を指定された値に設定します。
注意 | |
---|---|
Content-Type の type が "multipart" の場合は、 マルチパートメッセージとして処理されます。 |
[ public ] SFCError SetEpilogue( SFXAnsiStringConstRef text // [入力] エピローグテキスト(後置部分) );
マルチパートメッセージのエピローグテキストを指定します (日本語は、Shift_JIS コードでエンコードします)。
この関数は、マルチパートメッセージのエピローグテキスト(後置部分)を設定します。
日本語のエピローグテキストは、Shift_JIS コードでエンコードする必要があります。
マルチパートメッセージでない場合、エピローグテキスト(後置部分)を設定しても無効です。
注意 | |
---|---|
エピローグ(後置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最後に付加される文字列です。 多くの実装では、エピローグ(後置部分)は空文字列が設定されます。 |
[ public ] SFCError SetFromField( SFXAnsiStringConstRef from // [入力] from: メールアドレス );
From フィールドの値を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの From フィールドに指定された from: メールアドレスを設定します。
from 引数には、送信元の from: メールアドレスを指定します。
注意 | |
---|---|
from: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。 |
注意 | |
---|---|
この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。 |
[ public ] SFCError SetPreamble( SFXAnsiStringConstRef text // [入力] プリアンブルテキスト(前置部分) );
マルチパートメッセージのプリアンブルテキストを指定します (日本語は、Shift_JIS コードでエンコードします)。
この関数は、マルチパートメッセージのプリアンブルテキスト(前置部分)を設定します。
日本語のプリアンブルテキストは、Shift_JIS コードでエンコードする必要があります。
マルチパートメッセージでない場合、プリアンブルテキスト(前置部分)を設定しても無効です。
注意 | |
---|---|
プリアンブル(前置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最初に付加される文字列です。 "This is a MIME multipart message." などの文字列が設定されます。 |
[ public ] SFCError SetSubjectField( SFXAnsiStringConstRef subject // [入力] 件名 );
件名を指定します。
日本語は、Shift_JIS コードでエンコードします。
この関数は、メールヘッダーの Subject フィールドに指定された件名を設定します。
日本語の件名は、Shift_JIS コードでエンコードする必要があります。
注意 | |
---|---|
この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。 |
[ public ] SFXAnsiString Write( Bool isEncoding = true // [入力] エンコードするかどうか UInt32 fieldMaxLen = 78 // [入力] ヘッダーの折り返し桁数(CRLF 文字は除く): 4 以上 998 以下の範囲にある数字を指定可能 );
エンコードするかどうかを指定します。
true をすると、以下のエンコードが行われます。
デフォルトでは true です。
ヘッダーの折り返し桁数(CRLF 文字は除く)を指定します。
fieldMaxLen 桁より大きな桁のヘッダーは自動的に折り返されます。 4 以上 998 以下の範囲にある数字を指定します。
デフォルトでは 78 です。
メールメッセージのテキスト。
この関数は、メールメッセージをテキストとして書き出します。
isEncode 引数に true を指定すると、 Shift_JIS の日本語は JIS コードに変換し、 ヘッダーのフィールド値は B エンコードしてメール送信可能なテキストに自動変換します。
件名や添付ファイル名のエンコーディング | |
---|---|
RFC2231(MIME Parameter Value and Encoded Word Extensions) には対応していません。 |
typedef SFXArray<SFXMailMessagePtr> DocList
メールメッセージの配列を表す型です。
この型は、マルチパートメッセージの内部表現です。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |