今時BASP21 DLL(フリー版)でメール受信してどうのこうので困ってる人が世の中にどのくらいいるかどうかわからないけど、今日嵌ってググってもまともな答えが出てこなくて途方にくれたのでポイントをメモっておく。
BASP21 DLLのRcvMailメソッドでPOP3サーバから受信してReadMailメソッドでメールの内容を取得すると、一部のメールが送信者や添付ファイル名が文字化けして正常に取得できない。これはBASP21 DLLのReadMailメソッドが最近普通に送信されるUTF-8のメールに対応していないため。
RcvMailで受信したファイルをReadMailで読み込む前に直接開き、Base64エンコードされたUTF-8の文字があったらデコードしてJISに変換してBase64エンコードして保存する。その処理したファイルをReadMailで取り扱うようにする。全部BASP21の機能でできる。
BASP21のKconvメソッドの第1引数のinstrに文字列を渡せるのはUnicode UCS-2のみの場合だけらしく、UTF-8の文字列を渡しても正常に動作しない。なので、一旦テンポラリファイルに書き出しKconvFileメソッドを使用して変換を行う必要がある。っていまドキュメント眺めてたら文字列をバイト配列にするByteArrayというメソッドがあるみたいなのでこれをを使えばできるかもしれない。けどもう正直いじりたくないよ…。
BASP21がいまだに使われていることに驚いた・・・