前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXMailMessage
メールメッセージを処理するためのクラスです。
#include <SFXMailMessage.h.hpp>
class SFXMailMessage;
SFMTYPEDEFCLASS(SFXMailMessage)

協調図

SFXMailMessage クラスの協調図

解説

SFXMailMessage クラスは、 RFC2822 に基づき、 送信メールメッセージを作成したり、受信メールメッセージを取得するためのクラスです。 文字コードの変換や、Base64 や Quoted-Printable のエンコードとデコードはこのクラス内で自動的に行われます。

このクラスは、マルチパートメッセージと添付ファイルに対応しています。

[Caution] 件名や添付ファイル名のエンコーディング

件名や添付ファイル名は、 RFC2231: MIME Parameter Value and Encoded Word Extensions に対応していません。

[Note] 注意

このクラスは、SFXMailUtility クラスと SFXMailField クラスを使用して実装されています。

送信メールメッセージの処理手順

  1. SFXMailMessage インスタンスを作成します。
  2. Subject フィールドは SFXMailMessage::SetSubjectField 関数で設定します。
  3. From フィールドは SFXMailMessage::SetFromField 関数で設定します。
  4. To フィールドは SFXMailMessage::AddToField 関数で設定します。 複数の宛先を設定するにはこの関数を複数回呼び出します。
  5. 必要に応じて SFXMailMessage::AddCcField 関数や SFXMailMessage::AddBccField 関数で Cc フィールドや Bcc フィールドを設定します。
  6. その他のフィールドを設定する場合は SFXMailMessage::AddField 関数を呼び出します。
  7. 本文は SFXMailMessage::SetBody 関数で設定します。
  8. 添付ファイルがある場合は、SFXMailMessage::AttachFile 関数を呼び出します。
  9. 最後に SFXMailMessage::Write 関数を呼び出して送信メールメッセージを作成します。

例 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("fromaddress@example.com");

    // メールヘッダーに To アドレスを追加する
    message.AddToField("toaddress1@example.com");
    message.AddToField("toaddress2@example.com");
    
    // メールヘッダーに Cc アドレスを追加する
    message.AddCcField("toaddress3@example.com");
    
    // メールヘッダーに Bcc アドレスを追加する
    message.AddBccField("toaddress4@example.com");
    
    // メールヘッダーに  メッセージ本文の種類を追加する
    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);
    }
}

受信メールメッセージの処理手順

  1. SFXMailMessage インスタンスを作成します。
  2. 受信メールメッセージを SFXMailMessage::Parse 関数で解析します。
  3. Subject フィールド、From フィールド、 To フィールド、Cc フィールド、Bcc フィールド、Date フィールドを、 SFXMailMessage::GetSubjectField / SFXMailMessage::GetFromField / SFXMailMessage::GetToField / SFXMailMessage::GetCcField / SFXMailMessage::GetBccField / SFXMailMessage::GetDateField 関数で取得します。
  4. 本文は SFXMailMessage::GetBody / SFXMailMessage::GetBodyText 関数で取得します。
  5. 添付ファイルは SFXMailMessage::GetAttachedFile 関数で取得します。
[Note] マルチパートメッセージの処理

SFXMailMessage::IsMultipart 関数を使用してマルチパート部の有無を判定して処理します。

例 834. 受信メールメッセージの解析

// 受信したメールメッセージ
SFXAnsiString receivedString =
    "From: Albert Einstein <einstein@example.com>\r\n"
    "To: Isaac Newton <newton@example.com>\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 <einstein@example.com>" になる
SFXAnsiString fromString = message.GetFromField();

// メールヘッダーの To フィールドを取得する
// toString は "Isaac Newton <newton@example.com>" になる
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
メールメッセージの配列を表す型です。

SFXMailMessage::SFXMailMessage
SFXMailMessage クラスのコンストラクタです。
[ public, explicit ]
SFXMailMessage(Void);

SFXMailMessage::~SFXMailMessage
SFXMailMessage クラスのデストラクタです。
[ public ]
~SFXMailMessage(Void);

解説

このデストラクタは、 SFXMailMessage::Clear 関数を呼び出してメールメッセージの内容をクリアします。

参照

SFXMailMessage::Clear


SFXMailMessage::AddBccField
メールヘッダーの Bcc フィールドに指定された bcc: メールアドレスを追加します。
[ public ]
SFCError AddBccField(
    SFXAnsiStringConstRef bcc   // [入力] bcc: メールアドレス
);

引数

bcc

bcc: メールアドレスを指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの Bcc フィールドに指定された bcc: メールアドレスを追加します。

Bcc フィールドの値が複数の bcc: メールアドレスで構成される場合、 個々の bcc: メールアドレスは "," で区切られます。

[Note] 注意

bcc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

参照

SFXMailMessage::GetBccField | SFXMailMessage::ReplaceBccField | SFXMailMessage::AddField


SFXMailMessage::AddCcField
メールヘッダーの Cc フィールドに指定された cc: メールアドレスを追加します。
[ public ]
SFCError AddCcField(
    SFXAnsiStringConstRef cc   // [入力] cc: メールアドレス
);

引数

cc

cc: メールアドレスを指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの Cc フィールドに指定された cc: メールアドレスを追加します。

Cc フィールドの値が複数の cc: メールアドレスで構成される場合、 個々の cc: メールアドレスは "," で区切られます。

[Note] 注意

cc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

参照

SFXMailMessage::GetCcField | SFXMailMessage::ReplaceCcField | SFXMailMessage::AddField


SFXMailMessage::AddField
指定されたメールヘッダーのフィールドに指定された値を追加します。
[ public ]
SFCError AddField(
    SFXAnsiStringConstRef name    // [入力] フィールド名
    SFXAnsiStringConstRef value   // [入力] 追加する値
);

引数

name

メールヘッダーのフィールド名として有効な文字列を指定します。

value

追加する値を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • フィールド名または値が有効でないとき: SFERR_INVALID_PARAM
  • 書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、name 引数に指定されたメールヘッダーのフィールドに value 引数に指定された値を追加します。

フィールド名が有効であるかどうかは、 SFXMailUtility::IsValidFieldName 関数により判定されます (フィールド名は "0x3A"[=":"]を除く US-ASCII 値 "0x21" から "0x7E" の文字で構成されている必要があります)。

[Note] 注意

フィールド値に含まれる日本語は、Shift_JIS コードでエンコードします。

[Note] 注意

SFXMailMessage::ReplaceField 関数とは異なり、 name 引数に指定されたフィールドの既存の値を削除せずに指定された値を追加します。

From フィールドや Subject フィールドなど、 複数のデータが許されないメールヘッダーのフィールドでは SFXMailMessage::ReplaceField 関数を使用して フィールドの値を変更します。 一方、Received フィールドなどの複数のデータが許されているメールヘッダーのフィールドでは この関数を使用してフィールドの値を追加します。

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName


SFXMailMessage::AddMultipartBody
マルチパートメッセージにメールメッセージを追加します。
[ public ]
SFCError AddMultipartBody(
    SFXMailMessagePtr body   // [入力] 追加するメールメッセージ
);

引数

body

追加するメールメッセージを指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • Content-Type が "multipart" でないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、マルチパートメッセージにメールメッセージを追加します。

[Caution] 注意

この関数を呼び出す前に、 SFXMailMessage::SetContentType 関数により Content-Type を "multipart" に設定する必要があります。

メールメッセージの Content-Type が "multipart" でない場合は、 SFERR_INVALID_STATE が返却されます。

参照

SFXMailMessage::AttachFile | SFXMailMessage::GetMultipartMessage | SFXMailMessage::SetContentType | SFXMailMessage::IsMultipart | SFXMailMessage::DocList


SFXMailMessage::AddToField
メールヘッダーの To フィールドに to: メールアドレスを追加します。
[ public ]
SFCError AddToField(
    SFXAnsiStringConstRef to   // [入力] to: メールアドレス
);

引数

to

to: メールアドレスを指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの To フィールドに to: メールアドレスを追加します。

To フィールドの値が複数の to: メールアドレスで構成される場合、 個々の to: メールアドレスは "," で区切られます。

[Note] 注意

to: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

参照

SFXMailMessage::GetToField | SFXMailMessage::ReplaceToField | SFXMailMessage::AddField


SFXMailMessage::AttachFile
メールメッセージにファイルを添付します。
[ public ]
SFCError AttachFile(
    SFXBufferConstRef file                           // [入力] 添付するデータ
    SFXAnsiStringConstRef fileName                   // [入力] 添付ファイル名
    SFXAnsiStringConstRef mainType = "application"   // [入力] 添付するデータの Content-Type の type
    SFXAnsiStringConstRef subType = "octet-stream"   // [入力] 添付するデータの Content-Type の subType
);

引数

file

添付するデータを指定します(任意のデータを添付できます)。

fileName

添付ファイルの名前を指定します。

[Note] 注意
空文字列を指定すると、 データは添付(attachment)ではなく、 内蔵(inline)されるものとして処理されます。
mainType

添付するデータの Content-Type の type を指定します。 テキストなら "text"、JPEG 画像なら "image" を指定します。

[Note] 注意
デフォルト値は "application" です。
subType

添付するデータの Content-Type の subType を指定します。 テキストなら "plain"、JPEG 画像なら "jpeg" を指定します。

[Note] 注意
デフォルト値は "octet-stream" です。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールメッセージにファイルを添付します。

メールメッセージへのファイル添付は以下のように処理されます。

  1. 添付データ用に新しいメールメッセージを作成します。
  2. 作成したメールメッセージのヘッダーの Content-Type フィールドには mainType / subType 引数に指定した文字列、 Content-Transfer-Encoding フィールドには 「base64」、 Content-Disposition フィールドには 「attachment; filename = "fileName 引数に指定したファイル名"」 を設定します。
  3. file 引数に指定されたデータを Base64 エンコードし、作成したメールメッセージの本文にします。
  4. 元のメッセージがマルチパート部を持たない場合は Content-Type を「multipart/mixed」に変更し、 現在セットされている本文テキストをマルチパートメッセージの最初のメッセージ(Content-Type は 「text/plain」)とします。
  5. SFXMailMessage::AddMultipartBody 関数を呼び出して作成したメールメッセージをマルチパートメッセージの multipart body として追加します。
[Note] 注意

この関数を呼び出す前に、 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


SFXMailMessage::Clear
メールメッセージの内容をクリアします。
[ public ]
Void Clear(Void);

解説

この関数は、メールメッセージの内容をクリアします。

[Note] 注意

この関数は、内部的に SFXMailMessage::~SFXMailMessage デストラクタから呼び出されます。

参照

SFXMailMessage::~SFXMailMessage


SFXMailMessage::GetAttachedFile
指定されたインデックスの添付ファイルを取得します。
[ public, const ]
SFCError GetAttachedFile(
    SInt32 index                       // [入力] 添付ファイルのインデックス
    SFXBufferPtr data                  // [出力] 添付データが格納された場所へのポインタ
    SFXAnsiStringPtr fileName          // [出力] 添付ファイル名が格納された場所へのポインタ
    SFXAnsiStringPtr mainType = null   // [出力] 添付データの Content-Type の type が格納された場所へのポインタ
    SFXAnsiStringPtr subType = null    // [出力] 添付データの Content-Type の subType が格納された場所へのポインタ
);

引数

index

何番目の添付ファイルを取り出すかを指定します。

添付ファイルの個数は SFXMailMessage::GetMultipartSize 関数で取得できます。 index は 0 から始まります。

data

添付データが格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

fileName

添付データのファイル名が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

mainType

添付データの Content-Type の type が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

subType

添付データの Content-Type の subType が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 書式が間違っているとき: SFERR_INVALID_FORMAT
  • index が範囲外のとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • メッセージがマルチパート部を持たないとき: SFERR_FAILED

解説

この関数は、指定されたインデックスの添付ファイルを取得します。

[Note] 注意

Base64 エンコードされたファイルは自動的にデコードされます。

[Caution] 添付ファイル名のエンコーディング

RFC2231(MIME Parameter Value and Encoded Word Extensions)には対応していません。

参照

SFXMailMessage::AttachFile | SFXMailMessage::AddMultipartBody | SFXMailMessage::IsMultipart | SFXMailMessage::GetMultipartSize


SFXMailMessage::GetBccField
メールヘッダーの Bcc フィールドの値を取得します。
[ public, const ]
SFXAnsiString GetBccField(
    Bool isDecoding = true   // [入力] デコードするかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、B エンコードまたは Q エンコードされた Cc フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

Bcc フィールドの値。

解説

この関数は、メールヘッダーの Bcc フィールドの値を取得します。

Bcc フィールドの値が複数の bcc: メールアドレスで構成される場合、 個々の bcc: メールアドレスは "," で区切られます。

[Note] 注意

この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。

[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::GetBody
メールメッセージの本文を取得します。
[ public, const ]
SFXAnsiString GetBody(
    Bool isDecoding = true   // [入力] JIS コードの日本語を Shift_JIS コードに変換するかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、JIS コードの日本語を Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

メールメッセージの本文(マルチパートメッセージの場合は、空文字列)。

解説

この関数は、メールメッセージの本文を取得します。

isDecoding 引数を true に設定すると、 JIS コードの日本語を Shift_JIS コードに変換します。

[Note] マルチパートメッセージの場合

マルチパートメッセージの場合、この関数は空文字列を返します。

マルチパートメッセージの本文を取得するには、 SFXMailMessage::GetMultipartMessage 関数を使います。

参照

SFXMailMessage::SetBody | SFXMailMessage::GetMultipartMessage | SFXMailMessage::GetBodyText


SFXMailMessage::GetBodyRef
メールメッセージの本文への参照を取得します。
[ public, const ]
SFXAnsiStringConstRef GetBodyRef(Void);

戻り値

メールメッセージの本文への参照を返します(マルチパートメッセージの場合は、空文字列への参照)。

解説

この関数は、メールメッセージの本文への参照を取得します。

[Note] 注意

マルチパートメッセージの場合、この関数は空文字列への参照を返します。

この関数は、 メールメッセージの本文を効率的に処理したい場合に使用します。

参照

SFXMailMessage::SetBody | SFXMailMessage::GetBody | SFXMailMessage::GetBodyText


SFXMailMessage::GetBodyText
メールメッセージの本文を取得します。
[ public, const ]
SFXAnsiString GetBodyText(
    Bool isDecoding = true   // [入力] デコードを行うか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、 マルチパートメッセージは、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージの本体をデコードします。 非マルチパートメッセージは、JIS コードのメールメッセージの本体を Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

メールメッセージの本文(マルチパートメッセージの場合は、マルチパート部の最初のテキスト)。

解説

この関数は、メールメッセージの本文を取得します。

[Note] マルチパートメッセージの場合

マルチパートメッセージの場合、 この関数はマルチパート部の最初のテキストを返します。

参照

SFXMailMessage::SetBody | SFXMailMessage::GetMultipartMessage | SFXMailMessage::GetBody


SFXMailMessage::GetCcField
メールヘッダーの Cc フィールドの値を取得します。
[ public, const ]
SFXAnsiString GetCcField(
    Bool isDecoding = true   // [入力] デコードするかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、B エンコードまたは Q エンコードされた Cc フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

Cc フィールドの値。

解説

この関数は、メールヘッダーの Cc フィールドの値を取得します。

Cc フィールドの値が複数の cc: メールアドレスで構成される場合、 個々の cc: メールアドレスは "," で区切られます。

[Note] 注意

この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。

[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::GetContentType
メールメッセージの Content-Type の値を取得します。
[ public, const ]
SFXAnsiString GetContentType(Void);
[ public, const ]
SFCError GetContentType(
    SFXAnsiStringPtr mainType          // [出力] Content-Type の type が格納された場所へのポインタ
    SFXAnsiStringPtr subType           // [出力] Content-Type の subType が格納された場所へのポインタ
    SFXPropertyConstHandle attribute   // [出力] 属性(パラメータリスト)が格納された場所へのハンドル
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールメッセージの Content-Type の値を取得します。

参照

SFXMailMessage::SetContentType


SFXMailMessage::GetDateField
メールヘッダーの Date フィールドの値を取得します。
[ public, const ]
SFXDate GetDateField(Void);

戻り値

Date フィールドの値(SFXDate)。

解説

この関数は、メールヘッダーの Date フィールドの値を取得します。

[Note] 注意

この関数は、内部で SFXMailUtility::ParseDate 関数を呼び出します。

参照

SFXMailUtility::ParseDate | SFXDate


SFXMailMessage::GetEpilogue
マルチパートメッセージのエピローグテキスト(後置部分)を取得します。
[ public, const ]
SFXAnsiString GetEpilogue(
    Bool isDecoding = true   // [入力] JIS コードの日本語を Shift_JIS コードに変換するかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、JIS コードの日本語を Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

マルチパートメッセージのエピローグテキスト(後置部分)、マルチパートメッセージでないときは空文字列。

解説

この関数は、マルチパートメッセージのエピローグテキスト(後置部分)を取得します。

[Note] 注意

エピローグテキスト(後置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最後に付加される文字列です。

参照

SFXMailMessage::SetEpilogue | SFXMailMessage::GetPreamble | SFXMailMessage::SetPreamble | SFXMailMessage::IsMultipart


SFXMailMessage::GetField
指定されたメールヘッダーのフィールドの値を取得します。
[ public, const ]
SFXAnsiString GetField(
    SFXAnsiStringConstRef name   // [入力] フィールド名
    Bool isDecoding = true       // [入力] デコードするかどうか
    BoolPtr found = null         // [出力] フィールドが存在するかどうかが格納された場所へのポインタ
);

引数

name

メールヘッダーのフィールド名として有効な文字列を指定します。

isDecoding

デコードするどうかを指定します。

true の場合、B エンコードまたは Q エンコードされた Cc フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。

デフォルトは true です。

found

指定したフィールドが存在した場合、"true" が格納される場所へのポインタを指定します。 取得する必要がない場合は、null を指定します。

戻り値

指定されたフィールドの値(指定されたフィールドが存在しない場合は、空文字列)。

解説

この関数は、指定されたメールヘッダーのフィールドの値を取得します。

指定されたフィールドが存在しない場合は、空文字列を返却します。

[Note] 注意

2 つ以上の値が同じフィールド名で保存されていた場合、最初の値だけを読み出します。

同じフィールド名を持つ全ての値を取得するには、SFXMailMessage::GetFieldList 関数を使います。

[Caution] 注意

EUC コードでエンコードされた日本語は、Shift_JIS コードに変換されません。

JIS コードでエンコードされた日本語だけが、Shift_JIS コードに変換されます。

[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::GetFieldList
メールメッセージの全てのヘッダーフィールドを取得します。
[ public, const ]
SFXPropertyConstRef GetFieldList(Void);

戻り値

メールメッセージの全てのヘッダーフィールド(SFXProperty)。

解説

この関数は、メールメッセージの全てのヘッダーフィールドを取得します。

[Note] 注意

メールメッセージの全てのヘッダーフィールドは、 SFXProperty インスタンスとして返却されます。

フィールド値は、 B エンコードまたは Q エンコードに関するデコードは行われません。 また、日本語の文字コードの変換も行われません。

[Caution] メールメッセージのヘッダー編集時の注意事項

戻り値の SFXProperty インスタンスを使用してメールメッセージのヘッダーを編集する場合、 フィールド名の正当性はチェックされませんので、以下の点に注意して編集する必要があります。

  • ヘッダーのフィールド名には、アルファベットとハイフン以外は使えない。
  • ヘッダーのフィールド名は Case-Insensitive である(Case-Sensitive ではない)。
[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::GetFromField
メールヘッダーの From フィールドの値を取得します。
[ public, const ]
SFXAnsiString GetFromField(
    Bool isDecoding = true   // [入力] デコードするかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、B エンコードまたは Q エンコードされた From フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

From フィールドの値。

解説

この関数は、メールヘッダーの From フィールドの値を取得します。

[Note] 注意

この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。

[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::GetMultipartMessage
マルチパートメッセージの指定された内部メッセージを取得します。
[ public ]
SFXMailMessagePtr GetMultipartMessage(
    SInt32 index   // [入力] 内部メッセージの番号
);

戻り値

マルチパートメッセージの内部メッセージ(SFXMailMessage インスタンスへのポインタ)。

解説

この関数は、マルチパートメッセージの指定された内部メッセージを取得します。

マルチパートメッセージでないとき、または index 引数に指定された値が範囲外のときは null が返却されます。

[Note] 注意

マルチパートメッセージの場合、内部に複数のメッセージを 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 に対する処理
        ...

    }
}

参照

SFXMailMessage::AddMultipartBody | SFXMailMessage::AttachFile | SFXMailMessage::DocList


SFXMailMessage::GetMultipartSize
マルチパートメッセージの内部メッセージの個数を返します。
[ public, const ]
UInt32 GetMultipartSize(Void);

戻り値

マルチパートメッセージの内部メッセージの個数、マルチパート部を持たないときは 0。

解説

この関数は、マルチパートメッセージの内部メッセージの個数を返します。

マルチパート部を持たないときは 0 が返却されます。

参照

SFXMailMessage::GetMultipartMessage | SFXMailMessage::GetAttachedFile


SFXMailMessage::GetPreamble
マルチパートメッセージのプリアンブルテキスト(前置部分)を取得します。
[ public, const ]
SFXAnsiString GetPreamble(
    Bool isDecoding = true   // [入力] JIS コードの日本語を Shift_JIS コードに変換するかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、JIS コードの日本語を Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

マルチパートメッセージのプリアンブルテキスト(前置部分)、マルチパートメッセージでないときは空文字列。

解説

この関数は、マルチパートメッセージのプリアンブルテキスト(前置部分)を取得します。

[Note] 注意

プリアンブルテキスト(前置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最初に付加される文字列です。

"This is a multi-part message in MIME format." などの文字列が設定されます。

参照

SFXMailMessage::SetPreamble | SFXMailMessage::SetEpilogue | SFXMailMessage::IsMultipart


SFXMailMessage::GetSubjectField
メールヘッダーの Subject フィールドの値を取得します。
[ public, const ]
SFXAnsiString GetSubjectField(
    Bool isDecoding = true   // [入力] デコードするかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、B エンコードまたは Q エンコードされた Subject フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

Subject フィールドの値。

解説

この関数は、メールヘッダーの Subject フィールドの値を取得します。

[Note] 件名のエンコーディング

RFC2231(MIME Parameter Value and Encoded Word Extensions) には対応していません。

[Note] 注意

この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。

[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::GetToField
メールヘッダーの To フィールドの値を取得します。
[ public, const ]
SFXAnsiString GetToField(
    Bool isDecoding = true   // [入力] デコードするかどうか
);

引数

isDecoding

デコードするどうかを指定します。

true の場合、B エンコードまたは Q エンコードされた To フィールドの値をデコードします。 更に、日本語は Shift_JIS コードに変換します。

デフォルトは true です。

戻り値

To フィールドの値。

解説

この関数は、メールヘッダーの To フィールドの値を取得します。

To フィールドの値が複数の to: メールアドレスで構成される場合、 個々の to: メールアドレスは "," で区切られます。

[Note] 注意

この関数は、内部で SFXMailMessage::GetField 関数を呼び出します。

[Note] B エンコードについて

B エンコードは、RFC 2045 で定義されれいる Base64 エンコードと同じです。

B エンコードの詳細については RFC2047: 4.1. The "B" encoding を参照してください。

[Note] 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


SFXMailMessage::HasField
指定されたフィールドがメールメッセージのヘッダーに存在するかどうかを判定します。
[ public, const ]
Bool HasField(
    SFXAnsiStringConstRef name   // フィールド名
);

引数

name

メールヘッダーのフィールド名として有効な文字列を指定します。

戻り値

  • 指定されたフィールドが存在するとき: true
  • そうでないとき: false

解説

この関数は、指定されたフィールドがメールメッセージのヘッダーに存在するかどうかを判定します。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName


SFXMailMessage::IsMultipart
マルチパートメッセージであるかどうかを判定します。
[ public, const ]
Bool IsMultipart(Void);

戻り値

  • マルチパートメッセージであるとき: true
  • そうでないとき: false

解説

この関数は、マルチパートメッセージであるかどうかを判定します。

[Note] 注意

マルチパートメッセージであるかどうかの判定は、 Content-Type の type が "multipart" であるかどうかによって決定されます。

参照

SFXMailMessage::SetContentType


SFXMailMessage::Parse
指定されたテキストをメールメッセージとして読み込みます。
[ public ]
SFCError Parse(
    ACharConstPtr message   // [入力] 解析するテキストへのポインタ
);
[ public ]
SFCError Parse(
    SFXAnsiStringConstRef message   // [入力] 解析するテキスト
);
[ public ]
SFCError Parse(
    ACharConstPtr start   // [入力] 解析するテキストの先頭へのポインタ
    ACharConstPtr end     // [入力] 解析するテキストの終端へのポインタ
);

引数

message

メールメッセージとして解析するテキストを指定します。

start

メールメッセージとして解析するテキストの先頭へのポインタを指定します。

end

メールメッセージとして解析するテキストの終端へのポインタを指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start / end 引数の値が null であるとき、または start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたテキストをメールメッセージとして読み込みます。

メールを受信してからこの関数を実行することにより、 Get 系関数を使用してヘッダーの各フィールドの値、メール文体、プリアンブルテキスト、エピローグテキストを取得することが可能になります。

[Note] 注意

この関数は、マルチパートメッセージにも対応しています。

参照

SFXMailMessage::Write | SFXMailMessage::ParseHeaderOnly


SFXMailMessage::ParseHeaderOnly
指定されたテキストについてヘッダー部分のみをメールメッセージとして読み込みます。
[ public ]
SFCError ParseHeaderOnly(
    ACharConstPtr message   // [入力] 解析するテキストへのポインタ
);
[ public ]
SFCError ParseHeaderOnly(
    SFXAnsiStringConstRef message   // [入力] 解析するテキスト
);
[ public ]
SFCError ParseHeaderOnly(
    ACharConstPtr start   // [入力] 解析するテキストの先頭へのポインタ
    ACharConstPtr end     // [入力] 解析するテキストの終端へのポインタ
);

引数

message

メールメッセージとして解析するテキストを指定します。

start

メールメッセージとして解析するテキストの先頭へのポインタを指定します。

end

メールメッセージとして解析するテキストの終端へのポインタを指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start / end 引数の値が null であるとき、または start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたテキストについてヘッダー部分のみをメールメッセージとして読み込みます。

メールを受信してからこの関数を実行することにより、 Get 系関数を使用してヘッダーの各フィールドの値を取得することが可能になります。

参照

SFXMailMessage::Parse | SFXMailMessage::Write


SFXMailMessage::RemoveField
メールメッセージのヘッダーから指定されたフィールドを削除します。
[ public ]
Void RemoveField(
    SFXAnsiStringConstRef name   // [入力] 削除するフィールド名
);

引数

name

メールヘッダーのフィールド名として有効な文字列を指定します。

解説

この関数は、メールメッセージのヘッダーから指定されたフィールドを削除します。

[Note] 注意

指定されたフィールドが存在しない場合は何も処理されません。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName


SFXMailMessage::ReplaceBccField
メールヘッダーの Bcc フィールドの値を指定された値で置き換えます。
[ public ]
SFCError ReplaceBccField(
    SFXAnsiStringConstRef bcc   // [入力] 置き換える Bcc フィールドの値
);

引数

bcc

置き換える Bcc フィールドの値を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの Bcc フィールドの値を指定された値で置き換えます。

bcc 引数には "," で区切られた複数の bcc: メールアドレスを指定することが可能です。 Bcc フィールドが存在しない場合は、 bcc 引数に指定された値をメールヘッダーの Bcc フィールドの値として設定します。

[Note] 注意

bcc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

[Note] 注意

この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。

参照

SFXMailMessage::AddBccField | SFXMailMessage::GetBccField | SFXMailMessage::ReplaceField


SFXMailMessage::ReplaceCcField
メールヘッダーの Cc フィールドの値を指定された値で置き換えます。
[ public ]
SFCError ReplaceCcField(
    SFXAnsiStringConstRef cc   // [入力] 置き換える Cc フィールドの値
);

引数

cc

置き換える Cc フィールドの値を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの Cc フィールドの値を指定された値で置き換えます。

cc 引数には "," で区切られた複数の cc: メールアドレスを指定することが可能です。 Cc フィールドが存在しない場合は、 cc 引数に指定された値をメールヘッダーの Cc フィールドの値として設定します。

[Note] 注意

cc: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

[Note] 注意

この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。

参照

SFXMailMessage::AddCcField | SFXMailMessage::GetCcField | SFXMailMessage::ReplaceField


SFXMailMessage::ReplaceField
指定されたメールヘッダーのフィールドの値を指定された値で置き換えます。
[ public ]
SFCError ReplaceField(
    SFXAnsiStringConstRef name    // [入力] フィールド名
    SFXAnsiStringConstRef value   // [入力] 置き換えるフィールドの値
);

引数

name

メールヘッダーのフィールド名として有効な文字列を指定します。

value

置き換える値を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • フィールド名または値が有効でないとき: SFERR_INVALID_PARAM
  • 書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたメールヘッダーのフィールドの値を指定された値で置き換えます。

フィールド名が有効であるかどうかは、 SFXMailUtility::IsValidFieldName 関数により判定されます (フィールド名は "0x3A"[=":"]を除く US-ASCII 値 "0x21" から "0x7E" の文字で構成されている必要があります)。

[Note] 注意

フィールド値に含まれる日本語は、Shift_JIS コードでエンコードします。

[Note] 注意

指定したフィールドがないときは、その値で新たにフィールドを追加します。

指定したフィールドがひとつだけある場合、その値を指定した値で置き換えます。

同じフィールド名のフィールドが 2 つ以上がある場合、最初のフィールドの値だけを指定した値で置き換えます。

参照

SFXMailMessage::ReplaceToField | SFXMailMessage::ReplaceCcField | SFXMailMessage::ReplaceBccField | SFXMailMessage::AddField | SFXMailMessage::HasField | SFXMailMessage::RemoveField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList | SFXMailUtility::IsValidFieldName


SFXMailMessage::ReplaceToField
メールヘッダーの To フィールドの値を指定された値で置き換えます。
[ public ]
SFCError ReplaceToField(
    SFXAnsiStringConstRef to   // [入力] 置き換える To フィールドの値
);

引数

to

置き換える To フィールドの値を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの To フィールドの値を指定された値で置き換えます。

to 引数には "," で区切られた複数の to メールアドレスを指定することが可能です。 To フィールドが存在しない場合は、 to 引数に指定された値をメールヘッダーの To フィールドの値として設定します。

[Note] 注意

to: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

[Note] 注意

この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。

参照

SFXMailMessage::AddToField | SFXMailMessage::GetToField | SFXMailMessage::ReplaceField


SFXMailMessage::SetBody
指定されたテキストをメールメッセージの本文として設定します。
[ public ]
SFCError SetBody(
    SFXAnsiStringConstRef text   // [入力] メールメッセージの本文
);

引数

text

メールメッセージの本文を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • マルチパートメッセージであるとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたテキストをメールメッセージの本文として設定します。

日本語の本文は、Shift_JIS コードでエンコードする必要があります。

[Note] マルチパートメッセージの場合

マルチパートメッセージの場合、この関数は SFERR_INVALID_STATE を返却します。

マルチパートメッセージへの本文の追加は、 SFXMailMessage インスタンスを新たに作成し、 そのインスタンスに本文を設定した後に、 SFXMailMessage::AddMultipartBody 関数を呼び出してマルチパートメッセージに追加することによって行います。

参照

SFXMailMessage::GetBody | SFXMailMessage::AddMultipartBody | SFXMailMessage::IsMultipart


SFXMailMessage::SetContentType
メールメッセージの Content-Type を指定された値に設定します。
[ 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    // [入力] 属性(パラメータリスト)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールメッセージの Content-Type を指定された値に設定します。

[Note] 注意

Content-Type の type が "multipart" の場合は、 マルチパートメッセージとして処理されます。

参照

SFXMailMessage::GetContentType | SFXMailMessage::IsMultipart


SFXMailMessage::SetEpilogue
マルチパートメッセージのエピローグテキスト(後置部分)を設定します。
[ public ]
SFCError SetEpilogue(
    SFXAnsiStringConstRef text   // [入力] エピローグテキスト(後置部分)
);

引数

text

マルチパートメッセージのエピローグテキストを指定します (日本語は、Shift_JIS コードでエンコードします)。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、マルチパートメッセージのエピローグテキスト(後置部分)を設定します。

日本語のエピローグテキストは、Shift_JIS コードでエンコードする必要があります。

マルチパートメッセージでない場合、エピローグテキスト(後置部分)を設定しても無効です。

[Note] 注意

エピローグ(後置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最後に付加される文字列です。

多くの実装では、エピローグ(後置部分)は空文字列が設定されます。

参照

SFXMailMessage::GetEpilogue | SFXMailMessage::SetPreamble | SFXMailMessage::IsMultipart


SFXMailMessage::SetFromField
メールヘッダーの From フィールドに指定された from: メールアドレスを設定します。
[ public ]
SFCError SetFromField(
    SFXAnsiStringConstRef from   // [入力] from: メールアドレス
);

引数

from

From フィールドの値を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの From フィールドに指定された from: メールアドレスを設定します。

from 引数には、送信元の from: メールアドレスを指定します。

[Note] 注意

from: メールアドレスに含まれる日本語のディスプレイネームは、Shift_JIS コードでエンコードします。

[Note] 注意

この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。

参照

SFXMailMessage::GetFromField | SFXMailMessage::ReplaceField


SFXMailMessage::SetPreamble
マルチパートメッセージのプリアンブルテキスト(前置部分)を設定します。
[ public ]
SFCError SetPreamble(
    SFXAnsiStringConstRef text   // [入力] プリアンブルテキスト(前置部分)
);

引数

text

マルチパートメッセージのプリアンブルテキストを指定します (日本語は、Shift_JIS コードでエンコードします)。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、マルチパートメッセージのプリアンブルテキスト(前置部分)を設定します。

日本語のプリアンブルテキストは、Shift_JIS コードでエンコードする必要があります。

マルチパートメッセージでない場合、プリアンブルテキスト(前置部分)を設定しても無効です。

[Note] 注意

プリアンブル(前置部分)とは、 RFC2046 (MIME Part Two : Media Types Text) で定義される マルチパートメッセージの最初に付加される文字列です。

"This is a MIME multipart message." などの文字列が設定されます。

参照

SFXMailMessage::GetPreamble | SFXMailMessage::SetEpilogue | SFXMailMessage::IsMultipart


SFXMailMessage::SetSubjectField
メールヘッダーの Subject フィールドに指定された件名を設定します。
[ public ]
SFCError SetSubjectField(
    SFXAnsiStringConstRef subject   // [入力] 件名
);

引数

subject

件名を指定します。

日本語は、Shift_JIS コードでエンコードします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メールヘッダーの Subject フィールドに指定された件名を設定します。

日本語の件名は、Shift_JIS コードでエンコードする必要があります。

[Note] 注意

この関数は、内部で SFXMailMessage::ReplaceField 関数を呼び出します。

参照

SFXMailMessage::GetSubjectField | SFXMailMessage::ReplaceField


SFXMailMessage::Write
メールメッセージをテキストとして書き出します。
[ public ]
SFXAnsiString Write(
    Bool isEncoding = true    // [入力] エンコードするかどうか
    UInt32 fieldMaxLen = 78   // [入力] ヘッダーの折り返し桁数(CRLF 文字は除く): 4 以上 998 以下の範囲にある数字を指定可能
);

引数

isEncoding

エンコードするかどうかを指定します。

true をすると、以下のエンコードが行われます。

  • ヘッダー部分: フィールド値に含まれる Shift_JIS コードの日本語は JIS コード("ISO-2022-JP")に変換し、更に B エンコードします。
  • 本体部分: Shift_JIS コードの日本語を JIS コード("ISO-2022-JP")に変換します。
  • ※マルチパートメッセージの場合は、各パートのヘッダー部分と本体部分について上記のエンコードを行います。 プリアンブルテキストとエピローグテキストのエンコードは本体部分と同様です。

デフォルトでは true です。

fieldMaxLen

ヘッダーの折り返し桁数(CRLF 文字は除く)を指定します。

fieldMaxLen 桁より大きな桁のヘッダーは自動的に折り返されます。 4 以上 998 以下の範囲にある数字を指定します。

デフォルトでは 78 です。

戻り値

メールメッセージのテキスト。

解説

この関数は、メールメッセージをテキストとして書き出します。

isEncode 引数に true を指定すると、 Shift_JIS の日本語は JIS コードに変換し、 ヘッダーのフィールド値は B エンコードしてメール送信可能なテキストに自動変換します。

[Caution] 件名や添付ファイル名のエンコーディング

RFC2231(MIME Parameter Value and Encoded Word Extensions) には対応していません。

参照

SFXMailMessage::Parse


SFXMailMessage::DocList
メールメッセージの配列を表す型です。
typedef SFXArray<SFXMailMessagePtr> DocList

解説

メールメッセージの配列を表す型です。

この型は、マルチパートメッセージの内部表現です。

参照

SFXMailMessage::AddMultipartBody | SFXMailMessage::GetMultipartMessage | SFXMailMessage::AttachFile