前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFXMailMessage
メールメッセージを処理するためのクラスです。
#include <SFXMailMessage.h.hpp>
class SFXMailMessage;
SFMTYPEDEFCLASS(SFXMailMessage)

協調図

SFXMailMessage クラスの協調図

解説

RFC2822 ( Internet Message Format )で定義されるメールメッセージを処理するクラスです。メールメッセージを作成、変更、書き出し、解析します。マルチパート メッセージ、添付ファイルも扱えます。

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

  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 関数で送信メールメッセージを作成します。

例 770. メールメッセージ作成

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_FUNCTION(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 関数を使ってマルチパート部の有無を判定して処理します。

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

// 受信したメールメッセージ
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>\r\n になる
SFXAnsiString toString = message.GetToField();

// メールヘッダーの Subject フィールドを取得する
// subjectStringは untitled になる
SFXAnsiString subjectString = message.GetSubjectField();

// メールヘッダーの Date フィールドを SFXDate クラスのインスタンスとして取得する
SFXDate date = message.GetDateField();

// メール本文を取得する
// bodyString は This is a mail body.\r\n になる
SFXAnsiString bodyString = message.GetBody();

参照

SFXMailUtility | SFXMailField

メンバ

コンストラクタ/デストラクタ
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 )
Parse( ACharConstPtr start , ACharConstPtr end )
Parse( SFXAnsiStringConstRef message )
テキストを解析して、メールメッセージとして読み込みます。
SFCError ParseHeaderOnly( ACharConstPtr message )
ParseHeaderOnly( ACharConstPtr start , ACharConstPtr end )
ParseHeaderOnly( SFXAnsiStringConstRef message )
テキストを解析して、ヘッダー部分のみをメールメッセージとして読み込みます。
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 )
SetContentType( SFXAnsiStringConstRef mainType , SFXAnsiStringConstRef subType , SFXPropertyConstRef attribute )
メールメッセージの Content-Type を設定します。
SFCError SetEpilogue( SFXAnsiStringConstRef text )
マルチパート メッセージのエピローグ( 後置部分 )を設定します。
SFCError SetFromField( SFXAnsiStringConstRef 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 クラスを破棄します。 内部で保持していたサブドキュメントも全て削除します。


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

引数

bcc

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

引数

cc

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

引数

name

value

追加するフィールドの値を指定します。

戻り値

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

解説

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

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

引数

body

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

戻り値

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

解説

SFXMailMessage::AddMultipartBody 関数を使う前に、SFXMailMessage::SetContentType 関数を使って Content-Type を "multipart" に設定します。

参照

SFXMailMessage::AttachFile | SFXMailMessage::SetContentType | SFXMailMessage::IsMultipart


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

引数

to

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

引数

file

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

fileName

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

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

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

[Note] 注意
mainType 引数を指定しない場合のデフォルト値は "application" です。
subType

添付するデータの Content-Sub-Type を指定します。Jpeg 画像ならば mainType に "image"、subType に "jpeg" を指定します。

[Note] 注意
subType 引数を指定しない場合のデフォルト値は "octet-stream" です。

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 添付ファイル名が有効でないとき : SFERR_INVALID_PARAM
  • 添付するデータの Content-Type が間違っているとき : SFERR_INVALID_STATE
  • 書式が間違っているとき : SFERR_INVALID_FORMAT
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 失敗したとき : SFERR_FAILED

解説

メール本文は、SFXMailMessage::AttachFile 関数を呼び出す前に、SFXMailMessage::SetBody 関数を使って設定します。 SFXMailMessage::AttatchFile 関数を呼び出した時点で、元のメッセージがマルチパート部を持たない場合でもそのメールメッセージはマルチパート部を持つようになります。

添付するデータは自動的に Base64 でエンコードされます。

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

  1. 添付データのヘッダーの Content-Type は指定した文字列を、Content-Transfer-Encoding には Base64 とし、Content-Disposition に inline か attachment を指定してファイル名を filename アトリビュートとして設定します。
  2. 添付データを Base64 エンコードします。
  3. 元のメッセージがマルチパート部を持たない場合は Content-Type を multipart/mixed に変更し、 現在セットされている本文テキストをマルチパート メッセージの最初のメッセージ ( Content-Type は text/plain )とします。
  4. 添付データをマルチパート メッセージの multipart body として追加します。

使用例

テキスト ファイルを添付します。

//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::IsMultipart


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

SFXMailMessage::GetAttachedFile
添付ファイルを取得します。
[ public, const ]
SFCError GetAttachedFile(
    SInt32 index                       // ファイル番号
    SFXBufferPtr data                  // 添付データ
    SFXAnsiStringPtr fileName          // 添付ファイル名
    SFXAnsiStringPtr mainType = null   // 添付データの Content-Type
    SFXAnsiStringPtr subType = null    // 添付データの Content-Sub-Type 
);

引数

index

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

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

data

添付データの出力先を指定します。取得する必要がない場合は null を指定します。

fileName

添付データのファイル名の出力先を指定します。取得する必要がない場合は null を指定します。

mainType

添付データの Content-Type の出力先を指定します。取得する必要がない場合は null を指定します。

subType

添付データの Content-Sub-Type の出力先を指定します。取得する必要がない場合は null を指定します。

戻り値

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

解説

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

参照

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


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

Bcc フィールドの値を返します。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

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

マルチパート メッセージの場合、空文字列となります。

解説

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

参照

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


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

戻り値

メールメッセージの本文への参照を返します。

マルチパート メッセージの場合は、空文字列への参照となります。

解説

SFXMailMessage::GetBodyRef 関数は、メールメッセージの本文を効率よく処理するのに使います。

参照

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


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

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

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

参照

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


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

Cc フィールドの値を返します。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


SFXMailMessage::GetContentType
メールメッセージの Content-Type の値を取得します。
[ public, const ]
SFXAnsiString GetContentType(Void);
[ public, const ]
SFCError GetContentType(
    SFXAnsiStringPtr mainType          // Content-Type 
    SFXAnsiStringPtr subType           // Content-Sub-Type 
    SFXPropertyConstHandle attribute   // 属性
);

戻り値

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

参照

SFXMailMessage::SetContentType


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

戻り値

Date フィールドの値を SFXDate 形式で返します。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


SFXMailMessage::GetEpilogue
マルチパート メッセージのエピローグ( 後置部分 )を取得します。
[ public, const ]
SFXAnsiString GetEpilogue(
    Bool isDecoding = true   // デコードするかどうか
);

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

マルチパート メッセージのエピローグ( 後置部分 )を返します。

マルチパート メッセージでないときは空文字列を返します。

解説

エピローグ( 後置部分 )とは、 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 の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

found

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

戻り値

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

解説

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

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

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


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

戻り値

メールメッセージの全てのヘッダー フィールドを SFXProperty クラスのインスタンスとして返します。

解説

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

取得した SFXProperty クラスのインスタンスを使ってメールメッセージのヘッダーを編集する場合、 フィールド名の正当性はチェックされません。

そのため、以下の点に注意して編集する必要があります。

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

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetField | SFXMailMessage::HasField | SFXProperty


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

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

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


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

戻り値

マルチパート メッセージの内部メッセージ( SFXMailMessage クラスのインスタンス ) へのポインタを返します。

解説

マルチパート メッセージの場合、内部に複数のメッセージを SFXMailMessage クラスのインスタンスとして持ちます。

index を指定することで、index 番目のメッセージへのポインタを取得できます( index は 0 から始まります)。

マルチパート メッセージでないとき、或いは index が範囲外のときは null を返します。

使用例

マルチパート メッセージの内部メッセージをひとつずつ取得します。

// msg にメールメッセージがある
SInt32 i;
SFXMailMessage msg;
SFXMailMessagePtr mail;

if (msg.IsMultipart()) { // multipart かどうかを判定する
    for (i = 0; i < msg.GetMultipartSize(); i++) {
        mail = msg.GetMultipartMessage(i);
        // mail に対する処理
        ...
    }
}

参照

SFXMailMessage::IsMultipart | SFXMailMessage::AddMultipartBody | SFXMailMessage::GetMultipartMessage


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

戻り値

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

メッセージがマルチパート部を持たないときは 0 を返します。

参照

SFXMailMessage::GetMultipartMessage | SFXMailMessage::GetAttachedFile


SFXMailMessage::GetPreamble
マルチパート メッセージのプリアンブル( 前置部分 )を取得します。
[ public, const ]
SFXAnsiString GetPreamble(
    Bool isDecoding = true   // デコードするかどうか
);

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

マルチパート メッセージのプリアンブル( 前置部分 )を返します。

マルチパート メッセージでないとき、空文字列を返します。

解説

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

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

参照

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


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

Subject フィールドの値を返します。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


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

引数

isDecoding

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

true の場合、Quoted-Printable エンコードまたは Base64 エンコードされたメールメッセージをデコードします。日本語は Shift-JIS コードに変換します。

デフォルトは true です。

戻り値

To フィールドの値を返します。

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetFieldList | SFXMailMessage::HasField


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

引数

name

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

戻り値

  • 指定したフィールドがあるとき : true
  • 指定したフィールドがないとき : false

参照

SFXMailMessage::AddField | SFXMailMessage::ReplaceField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

戻り値

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

解説

Content-Type の mainType が "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
  • 解析するテキストが不正なとき : SFERR_INVALID_PARAM
  • 書式が間違っているとき : SFERR_INVALID_FORMAT
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

マルチパート メッセージにも使えます。

参照

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
  • 解析するテキストが不正なとき : SFERR_INVALID_PARAM
  • 書式が間違っているとき : SFERR_INVALID_FORMAT
  • メモリ不足のとき : SFERR_NO_MEMORY

参照

SFXMailMessage::Write | SFXMailMessage::Parse


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

解説

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


SFXMailMessage::ReplaceBccField
メールヘッダーの Bcc フィールドを置き換えます。
[ public ]
SFCError ReplaceBccField(
    SFXAnsiStringConstRef bcc   // Bcc
);

引数

bcc

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


SFXMailMessage::ReplaceCcField
メールヘッダーの Cc フィールドを置き換えます。
[ public ]
SFCError ReplaceCcField(
    SFXAnsiStringConstRef cc   // Cc
);

引数

cc

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

引数

name

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

value

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

戻り値

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

解説

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

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

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

参照

SFXMailMessage::HasField | SFXMailMessage::AddField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


SFXMailMessage::ReplaceToField
メールヘッダーの To フィールドを置き換えます。
[ public ]
SFCError ReplaceToField(
    SFXAnsiStringConstRef to   // To
);

引数

to

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


SFXMailMessage::SetBody
メールメッセージの本文を設定します。
[ public ]
SFCError SetBody(
    SFXAnsiStringConstRef text   // メールメッセージの本文
);

引数

text

メールメッセージの本文です。

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メッセージがマルチパート部を持たないとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

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

マルチパート メッセージの場合、SFXMailMessage::SetBody 関数は失敗します。

マルチパート メッセージに本文を追加するには、SFXMailMessage クラスのインスタンスを新たに作成し、 そのインスタンスに本文を設定して、SFXMailMessage::AddMultipartBody 関数を使って そのインスタンスをマルチパート メッセージに追加します。

参照

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


SFXMailMessage::SetContentType
メールメッセージの Content-Type を設定します。
[ public ]
SFCError SetContentType(
    SFXAnsiStringConstRef mainType   // メインタイプ
    SFXAnsiStringConstRef subType    // サブタイプ
);
[ public ]
SFCError SetContentType(
    SFXAnsiStringConstRef mainType   // メインタイプ
    SFXAnsiStringConstRef subType    // サブタイプ
    SFXPropertyConstRef attribute    // 属性
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が不正なとき : SFERR_INVALID_PARAM
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 失敗したとき : SFERR_FAILED

解説

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

参照

SFXMailMessage::GetContentType | SFXMailMessage::IsMultipart


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

戻り値

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

解説

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

マルチパート メッセージでない場合、設定しても無効です。

参照

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


SFXMailMessage::SetFromField
メールヘッダーに From フィールドを設定します。
[ public ]
SFCError SetFromField(
    SFXAnsiStringConstRef from   // 差出人
);

引数

from

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

戻り値

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

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


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

戻り値

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

解説

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

"This is a MIME multipart message." などの文字列を設定します。

マルチパート メッセージがでない場合、設定しても無効です。

参照

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


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

引数

subject

件名を指定します。

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 件名が有効でないとき : SFERR_INVALID_PARAM
  • 書式が間違っているとき : SFERR_INVALID_FORMAT
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 失敗したとき : SFERR_FAILED

参照

SFXMailMessage::ReplaceField | SFXMailMessage::HasField | SFXMailMessage::GetField | SFXMailMessage::GetFieldList


SFXMailMessage::Write
メールメッセージをテキストとして書き出します。
[ public ]
SFXAnsiString Write(
    Bool isEncoding = true    // エンコードするかどうか
    UInt32 fieldMaxLen = 78   // ヘッダーの折り返し桁数
);

引数

isEncoding

エンコーディングするかどうかを指定します。

true にすると、Shift-JIS コードでエンコードされたヘッダーは Base64 エンコードされて書き出されます。 また、メールメッセージの本文は JIS コード ( ISO-2022-JP ) でエンコードされます。

デフォルトでは true です。

fieldMaxLen

ヘッダーの折り返し桁数( CR と LF は除く)を指定します。

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

戻り値

メールメッセージをテキストで返します。

解説

メールメッセージをテキストとして書き出します。isEncode パラメータを true に設定すると、メール送信に適した文字コードに自動変換します。

参照

SFXMailMessage::Parse


SFXMailMessage::DocList
メールメッセージの配列を表すプロトタイプです。
typedef SFXArray<SFXMailMessagePtr> DocList