中断可能なメール受信機能を実現するには
カスタムオペレーションの使用をおすすめ致します
サンプルはこちらをご参照ください
http://exwarp.com/member/useroperations.html
他の方法として、一度に全てのメールを処理しないオプションも用意されています
pop3client.setProperty(“RetrLimit”,1);
というコードを受信処理の前に追加すると
サーバーのメール件数に関わりなく1件の受信で処理が完了します
その他、緊急対応としては
pop3client.Socket
でソケットを取得し、ソケットを閉じることも出来ます。
この方法は通信を遮断するため、適切に例外をハンドリングしてください
最新版をダウンロードしてください。
確認された日付2007/8/24
アセンブリ名Exwarp.Net.dll
バージョン1.0.352.*以前のすべてのライブラリ
種類バグ
状態次期バージョンにて修正済み
対処1.0.359.*以降のバージョンにバージョンアップしてください。
]]>送信処理中にエラーが発生する場合、Exwarp.Net.Mail.MailMessageのSendResultカスタムプロパティにExwarp.Net.Smtp.SendResult.Failedがセットされ、送信に成功した場合、Exwarp.Net.Smtp.SendResult.Completeがセットされます。
この値をチェックすることで正常にメールが送信されたかどうかを判断できます。
この機能は1.0.339.*以上のライブラリで利用可能です。
また、この機能は実際にメールが受信者まで送信されたかどうかを識別するものではありません。SMTPホストが送信メールを正常に受け付けたかどうかを判断するだけですので、QUITコマンドが送信される前に接続が切断された場合などは、SendResultカスタムプロパティの値に関係なく、メールの送信が行われない場合もありますのでご注意ください。
Exwarp MailKitを利用すると、HMAC-MD5も簡単に実行できます。
HMAC-MD5を実行するために、Exwarp.Security.EncryptTransform.HMACMD5Transformのインスタンスを生成します。このクラスのコンストラクタには、暗号化に使用するキーを表す文字列をセットします。
Encode()メソッドを使用して、暗号化を実行します。パラメータは暗号化されるバイト列をセットします。
このメソッドは暗号化されたバイト列を戻り値として返します。
カスタムヘッダーフィールドの設定は、SetHeaderFieldBody()メソッドを使用します。
一つ目のパラメータはカスタムヘッダーフィールド名,
二つ目のパラメータはカスタムヘッダーフィールドの値を表す文字列です。
三つ目のパラメータは、このヘッダーフィールドが存在しない場合に新しくヘッダーフィールドを作成するかどうかを表します。今回は新規に追加するため、trueを設定します。この値にfalseが設定されると、指定された名前のヘッダーフィールドが見つからない場合に例外が発生します。
POP3_HOSTはPOP3ホストのホスト名、
SMTP_HOSTはSMTPホストのホスト名を表す文字列、
USERはPOP3ホストのユーザー名、
PASSWORDはPOP3ホストのパスワードを表す文字列、
MAILは送信メールを表すExwarp.Net.Mail.MailMessageの初期化済みインスタンスです。
PopBeforeSmtp認証を実行するために、Exwarp.Net.Pop3.Pop3ClientのPopBeforeSmtpカスタムオペレーションを実行します。このカスタムオペレーションはPOP3ホストへの認証処理のみ実行します。事前にユーザー名とパスワードをPop3Clientインスタンスに設定しておく方法と、PopBeforeSmtpカスタムオペレーションのパラメータとして、ユーザー名とパスワードを設定する二つの方法があります。(サンプルコードにてコメントアウトしている方法が後者です。)
PopBeforeSmtpカスタムオペレーションはカスタムオペレーション内で、ホストへの接続、切断処理を行いますので、Connect()、Close()メソッドを呼び出す必要はありません。(仮にこれらのメソッドをコールしても無視されます。)
PopBeforeSmtp認証が完了すると、メールの送信が通常どおり行えます。
]]>clientはExwarp.Net.Smtp.SmtpClientのインスタンスを表します。
MAILは初期化済みのExwarp.Net.Mail.MailMessageクラスのインスタンスを表します。
送信前に、SmtpClientのLocalHostプロパティにメール送信ホスト名を設定します。
このプロパティに値が設定されると、SmtpClientは、HELO/EHLOコマンド送信時に、メール送信ホスト名を通知します。
このプロパティの値が未設定の場合、SmtpClientは、HELO/EHLOコマンド送信時にメール送信ホスト名を通知しません。たいていの場合、メール送信ホスト名は省略できますので、このプロパティを設定する必要はありません。
この機能は、 1.0.311.*以上のバージョンで使用できます。
]]>clientは、Exwarp.Net.Smtp.SmtpClientのインスタンスを表します。
MAIL1,MAIL2はExwarp.Net.Mail.MailMessageの初期化済みインスタンスを表します。
一度の接続で送信したいメールメッセージをコレクションに追加します。System.Collections.ArrayListだけでなく、System.Collections.IEnumerableインターフェースを実装したクラスのインスタンスなら何でも構いません。
メールを追加したコレクションをSmtpClientのSendReceive()メソッドにパラメータとして渡すと、SmtpClientは一度の接続で、コレクションに含まれるすべてのメッセージを送信します。
この機能は1.0.311.*以上のバージョンで利用できます。Tryoutバージョンでは、一度に連続送信できるメッセージの数は3件に制限されます。コレクションに4件以上追加しても最初の3件しか送信されませんのでご注意ください。
]]>主な変更点は以下のとおりです。
Exwarp.ObjectBaseから派生したクラスはすべて、プロパティ名を自由に変更できます。
任意のプロパティに、Exwarp.Global.GlobalizedPropertyName属性と、Exwarp.Global.GlobalizedPropertyDescription属性を使用して実際に表示したいプロパティ名やプロパティの説明を設定します。
このクラスのインスタンスをPropertyGridに表示すると、プロパティ名は"プロパティ名"、プロパティの説明は、"プロパティの説明"となります。
この機能は1.0.309.*以上のバージョンで利用できます。
]]>本バージョンはTryoutであるため、幾つかの機能制限が設けられています。詳しい情報はExwarp MailKitのページで確認してください。
本バージョンの公開により、ベータ版の公開は終了いたします。また、近日中に製品版をリリースいたします。
]]>HOST_NAMEはSMTPホスト名、
USERはユーザー名、
PASSはパスワードを表す文字列です。
MAILは送信するメールメッセージを表すExwarp.Net.Mail.MailMessageのインスタンスです。
Exwarp.Net.Smtp.SmtpClientのインスタンスを生成します。
SMTP-AUTHに使用するユーザー名とパスワードを設定します。
SmtpClientのUseESMTPプロパティをtrueに設定すると、SMTPクライアントはESMTPモードで動作します。SMTP-AUTHの認証方法を切り替えたい場合、SmtpClientのAuthTypeプロパティに使用したい認証方法を表すExwarp.Net.Smtp.SmtpAuthTypeのいずれかの値を設定します。
ホストに接続し、SendReceive()メソッドを使用して、メールメッセージを送信します。
この機能は、1.0.308.*以上のバージョンで使用することができます。
]]>ESMTPモードに切り替えるUseESMTPプロパティが追加されています。このプロパティをtrueに設定すると、SMTPクライアントはセッション開始時に、EHLOコマンドを送信します。ホストが250 AUTH応答を返す場合、SMTPクライアントはSMTP-AUTHを使用してログイン処理を行います。250 AUTH応答が含まれない場合、ログイン処理は行われません。
]]>このようにダミーの宛先を設定する場合、SetProperty("_To",***)を使用します。
Toヘッダーにダミーの宛先を設定します。
実際の送信先は、文字列型の配列に格納し、MailMessageのSetProperty()メソッドを使用して_Toカスタムプロパティに設定します。_Toカスタムプロパティがメールメッセージに設定されている場合、SMTPクライアントはこの値をメールの送信先と認識します。
同じ原理で_Cc、_Bccカスタムプロパティも使用できます。
この機能の実行には、Exwarp MailKit バージョン1.0.307.*以上が必要です。
]]>このソースには、Visual Studio .NET 2002形式のソリューションやリソースファイルなどもすべて含まれています。開発言語はC#ですが、VB.Netプログラマでもほとんどのコードはご理解いただけるはずです。新たにMIMEエンコーディングコンバータも追加した特別エディションです。
]]>以前のバージョンとの大きな違いは次のとおりです。
本バージョンの公開は短期間で終了いたします。その後製品版の公開となり、無料バージョンは機能制限のついたトライアル版へ移行いたします。
]]>Exwarp.Net.RFC.MIME.MIMEContext.IStringGeneratorインターフェースを実装した新しいクラスを定義します。IStringGeneratorインターフェースには、Create()メソッドが定義されています。このメソッドに任意の文字列を返すよう記述することで、メッセージIDをカスタマイズできます。(パラメータseedは使用しません。)
上記のように定数を記述すると、常に同じ値のメッセージIDが生成されるため、望ましくありません。実際は常に一意な値が生成されるように実装してください。
このクラスをExwarp.Net.Mail.MailContextのMessageIdGeneratorプロパティにセットします。
本機能の実装に伴い、Exwarp.Transform.HMACMD5Transformクラスが追加されています。このクラスはキー付きのMD5ダイジェスト生成をサポートします。
これらの機能は、1.0.300.*より後のバージョンで提供されます。
1.0.300.*は最終ベータの予定でしたが、リリース後多くの機能が追加されたため、再度最終ベータExwarp MailKit 1.0 Beta rc2をリリースする予定です。
]]>Exwarp.ByteBufferのストリームサポートExwarp.ByteBufferは、内部的にバイト配列を使用していましたが,次期バージョンから任意のSystem.IO.Streamを内部バッファとして使用することができます。
これはサイズの大きなメッセージのメモリ消費対策の一環です。今後さらに対策強化してゆきます。
Exwarp.Net.RFC.MIME.MIMEHeaderFieldのRFC2231対応これまでのバージョンのMIMEHeaderFieldはRFC2311に対応していませんでしたが,次期バージョンから対応します。例えば次のようなヘッダーフィールドを認識できます。
これらの機能は1.0.300.2より後のバージョンで提供されます。
]]>Exwarp Mailkit 1.0.291.0 のバグを修正し、微細な仕様変更が加えられています。同時に公開された Pop3Consoleを動作させるためには、この最新バージョンが必要となります。
Pop3Consoleは、Pop3プロトコルを手軽に操作できる、フリーソフトです。POP3リクエストに対する応答を確認できます。
RETR,TOPコマンド送信時には、メール本文の確認や、添付ファイルの保存も行なうことができます。こちらからダウンロードしてご使用ください。
]]>MIMEデコードを実行するために、MIMETransformのインスタンスを生成します。コンストラクタは、MIMEエンコードに適用される文字セットを表すSystem.Text.Encodingを受け取ります。デコードの場合、デコード時に対象バイト列から自動的に文字セットが取得されますので、どんな文字セットで初期化しても構いません。一般的にはiso-2022-jpが使用されます。
MIMETransformのDecode()メソッドを使用して、デコードを実行します。パラメータにデコード対象のバイト列を設定します。System.Text.Encoding.ASCII.GetBytes()メソッドを使用するとMIMEエンコードされた文字列を簡単にバイト列に変換できます。Decode()メソッドはMIMEデコードされたバイト列を返します。
Decode()メソッドを実行すると、MIMETransformのEncodingプロパティは、デコード時に取得した、文字セットを表すSystem.Text.Encodingを返すようになります。同様にMIMEEncodingプロパティは、デコード時に解析した、MIMEエンコーディングの種類を表すExwarp.Net.RFC.MIME.MIMEEncodingを返します。
上のコードの後に次のように記述すると、デコードされた内容を確認できます。sには、"この文字列をMIMEエンコードします。"という文字列が代入されます。
MIMEエンコードの際に1行の文字数を設定したいこともよくあります。例えばメールメッセージは1行が78文字を超えないことが推奨されています。Exwarpはこうした処理もとても簡単に実現します。
MIMETransformについての解説はこちらを参照してください。
MIMETransformのEncode()メソッドの2番目のパラメータに1行の文字数を設定します。今回は、50に設定しています。
上のコードを実行するとencodedには下のようなバイト列が代入されます。設定された文字数を超えないように自動的にフォールディング処理(RFC準拠の改行処理)されます。
MIMEエンコードを実行するために、Exwarp.Net.RFC.MIME.MIMETransformのインスタンスを作成します。コンストラクタはMIMEエンコードに適用される文字セットを表すSystem.Text.Encodingを受け取ります。通常iso-2022-jpが使用されます。
Encode()メソッドを使用して、MIMEエンコードを実行します。Encode()メソッドはエンコードされる前の文字列のバイト列を受け取ります。System.Text.EncodingオブジェクトのGetBytes()メソッドを使用して、このバイト列を生成します。Encode()メソッドはMIMEエンコードされたバイト列を返します。
このコードを実行するとencodedには次のようなバイト列が代入されます。
BINDATAはバイナリデータを表すByte配列を表します。
MailMessageの新しいインスタンスを作成します。コンストラクタは、メッセージに適用される文字セットを表すSystem.Text.Encodingを受け取ります。通常iso-2022-jpが使用されます。
次にメールにテキストの本文を追加します。MailMessageのBodyプロパティに本文を表す文字列を設定します。
特殊な本文をカプセル化するために、Exwarp.Net.RFC.MIME.MIMEContentMessageのインスタンスを作成します。コンストラクタはこのメッセージに適用される文字セットを表すSystem.Text.Encodingを受け取ります。バイナリ形式の本文のため,基本的に文字セットは関係ありませんので、US-ASCII(ASCII)を設定します。
次にバイナリ形式の本文を設定します。BinaryBodyプロパティにバイナリデータを表すByte配列をセットします。通常の設定では、自動的にBase64エンコード処理されます。バイナリデータを設定したら,AddMailMessageカスタムオペレーションを使用して,メールに本文を追加します。このカスタムオペレーションは本文のコンテンツを表すExwarp.Net.RFC.MIME.MIMEContentMessageを受け取ります。
MailMessageのMessageSourceプロパティを参照すると、次のようなバイト列を確認できます。(*****は削除してあります。)
このような特殊なメッセージボディをメールに含めても、メールを受信する側のエージェント(メーラー)では正しく表示できないことがほとんどですが、PDFやPostScriptなどの一部の形式はメール本文としては適切かも知れません。
]]>
確認された日付2006/7/4
アセンブリ名Exwarp.Net.Pop3.dll
バージョン1.0.291.0
種類バグ
状態次期バージョンにて修正済み
対処1.0.300.2以降のバージョンにバージョンアップしてください。
補足情報1.0.291.0より後のバージョンのReceiveAllMessageカスタムオペレーションに、メールメッセージ受信時に発生したエラーのログを記録するロジックを追加しました。Pop3Client.GetProperty("Errors")を呼び出すことで,エラーが発生したメールのメッセージ番号、UID、エラーメッセージを確認できます。
]]>msgはExwarp.Net.RFC.RFCMessage及びその派生クラスのインスタンスを表します。このインスタンスの生成方法についてはこちらを参照してください。
RFCMessageのGetCustomHeaderField()メソッドは、メッセージに追加されているヘッダーフィールドを取得するメソッドです。一つ目のパラメータに取得したいヘッダーフィールド名を受け取ります。戻り値としてRFCHeaderFieldオブジェクトを返します。該当するヘッダーフィールドが追加されていない場合、nullが返されます。
Dateヘッダーフィールドは、RFCDateTimeHeaderFieldオブジェクトとしてカプセル化されるので、GetCustomHeaderField()メソッドの戻り値をRFCDateTimeHeaderField型にキャストすることで、日付ヘッダー固有の値を取得することができます。RFCDateTimeHeaderFieldのRFCDateTimeプロパティは、RFCの日付をカプセル化するExwarp.Net.RFC.Entities.RFCDateTimeオブジェクトを返します。このオブジェクトのToDateTime()メソッドを呼び出すと、RFCの日付を.Net BCLのDateTimeに変換することができます。
このフォーラムを通じて、より多くのカスタムオペレーションをExwarpユーザーの皆さんに作成していただき、それをできるだけ多くの方に使っていただきたいと考えております。
ここでは、自作カスタムオペレーションのソースを公開します。便利だと思うものがあれば、自分のアプリケーションに組み込んですぐに使うことができます。サンプルとして、
たくさんのカスタムオペレーションを作成して投稿してください。
]]>
確認された日付2006/6/27
アセンブリ名Exwarp.Net.RFC.MIME.dll
バージョン1.0.291.0
種類バグ
状態次期バージョンにて修正済み
対処1.0.300.2以降のバージョンにバージョンアップしてください。
]]>確認された日付2006/6/26
アセンブリ名Exwarp.Net.Pop3.dll
バージョン1.0.291.0
種類バグ
状態次期バージョンにて修正済み
対処1.0.300.2以降のバージョンにバージョンアップしてください。
]]>