Forums: 開発者 (Thread #20505)

smtp/pop (2008-11-12 03:20 by cielquis #39829)

メモ.

現在の実装だと,一旦データを全部もらってから送受信を行うので,(添付ファイルなどの関係で)メール本文のデータサイズが大きくなったときに困る.

なので,データの送受信が可能となった時点でソケット通信用のストリームを返して,データ部分の送受信はユーザに任せるようなインターフェースが必要か?

MIME のクラス設計としては,コンストラクタで送受信の準備の整ったソケットストリームを渡してもらって,あとはユーザがメール本文を追加するたびに,順次送っていくような形で実装するのが良いのか.

RE: smtp/pop (2008-11-12 11:48 by cielquis #39834)

ストリームを返す形だと,全部送り終わった後のサーバからのレスポンスを受け取るタイミングが難しいか.smtp だと,今の message 引数の部分を関数オブジェクトを取る形にするのが良いかもしれない.

template <class Functor>
basic_smtp& mail(const string_type& from, const string_type& to, Functor f);

送信相手が複数の場合は,

template <class MailingList, class Functor>
basic_smtp& mail(const string_type& from, const MailingList& to, Functor f);

こんな感じ.

ユーザは,Functor として,

class functor {
public:
template <class OutputIterator>
void operator()(OutputIterator& sout);
};

こんな形のクラス,または関数を定義して渡す.
Reply to #39829