CurrentHeader関数についてNo.04383
WIZ さん 01/12/13 16:42
 
WIZです。質問&可能なら要望です。

CurrentHeader関数で複数行に跨るヘッダの取得を行ったんですが、
ヘッダと同じ行にある値しか取得できないのは、仕様でしょうか?
個人的には複数行のヘッダも改行付きで取得して欲しいです。もち
ろん、実装しにくい理由とかあれば、対応して欲しいとは言えない
んですが。既出かと思って探してみたんですが、ログを見つけきれ
ませんでした。もし既出なら、記事番号でも教えてもらえれば嬉し
いんです。


[ ]
RE:04383 CurrentHeader関数についてNo.04385
ひろ さん 01/12/13 17:33
 
 WIZ さん今日は、ひろです。
> CurrentHeader関数で複数行に跨るヘッダの取得を行ったんですが、
> ヘッダと同じ行にある値しか取得できないのは、仕様でしょうか?
 ヘッダに改行は含めないので、見かけ上の複数行ですよね。Windows98+鶴
亀 Ver.1.55 で試しましたが、問題ありませんでした。ただしあまりに長く
て 8191 文字以上はマクロの制限上無理です。
 または
From:hoge0
From:hoge1
の様に同じヘッダが複数ある場合は、CurrentHeader2 を使えばよいです。

[ ]
RE:04385 CurrentHeader関数についてNo.04387
ひろ さん 01/12/13 17:49
 
 皆さん今日は、ひろです。自己フォローです。
>  ヘッダに改行は含めない
 これは間違いです。

 WIZ さんへ
 差し支えなければ、問題の起きるヘッダのログをアップしていただくと、
早く解決すると思います。

[ ]
RE:04387 CurrentHeader関数についてNo.04389
WIZ さん 01/12/13 18:19
 
ひろ さん、こんにちは、WIZです。
> 差し支えなければ、問題の起きるヘッダのログをアップしていただくと、
>早く解決すると思います。
そうですね。全然差し支えないですよ。どんなヘッダでも、複数行に
渡ると、ヘッダと同じ行の値しか取得できないんで…。

例えば、
---------------------------------------------------
Content-Type: text/plain;
charset="iso-2022-jp"
---------------------------------------------------
と言うヘッダを以下のマクロで取得して、確認のために、取得した値
を設定すると、
---------------------------------------------------
X-Content-Type: text/plain;
---------------------------------------------------
と言う風になるんです。もしかしたら、使い方を間違ってるのかもし
れないんですが…。

マクロの内容(テスト用)
---------------------------------------------------
loaddll "TKInfo.dll";
$s = dllfuncstr( "CurrentHeader" , "Content-Type" );
$n = dllfuncstr( "SetHeader" , "X-Content-Type" , $s );
endmacro;
---------------------------------------------------

環境は、秀まるおさんには頭が痛いと思いますが、
NT4.0SV SP6a + IE5.5SP2
鶴亀 1.55


[ ]
RE:04389 CurrentHeader関数についてNo.04391
秀まるお さん 01/12/13 18:29
 
 調べてみたら、たしかにCurrentHeader関数は1行分しか取り出してません
でした。

 さっそく1ヘッダ全体を取り出すように修正させていただきます。

 ちなみにSetHeaderの方は改行&タブ入りでもちゃんと動くようです。

[ ]
RE:04389 CurrentHeader関数についてNo.04393
ひろ さん 01/12/13 18:55
 
 WIZ さん今日は、ひろです。
> Content-Type: text/plain;
> charset="iso-2022-jp"
この場合なら、
> X-Content-Type: text/plain;
となるのは正しいです。しかしよく見かける
Content-Type: text/plain;
              charset="iso-2022-jp"
という場合でも上手くいかないようですね。

[ ]
RE:04391 CurrentHeader関数についてNo.04394
WIZ さん 01/12/13 19:08
 
秀まるお さん、こん○○は、WIZです。

> 調べてみたら、たしかにCurrentHeader関数は1行分しか取り出してません
>でした。
>
> さっそく1ヘッダ全体を取り出すように修正させていただきます。
どうもありがとうございます。さすがにマクロの中でヘッダの
検索/値の取得をする処理を書いてて、メンテナンスが大変なん
で助かります。

> ちなみにSetHeaderの方は改行&タブ入りでもちゃんと動くようです。
SetHeader関数が出てきたんで、便乗いいです?
$n = dllfuncstr( "SetHeader" , "X-TEST" , " TEST" );
を繰り返して実行すると、"X-TEST:"の後の " " が増えていく
のと、
$n = dllfuncstr( "SetHeader" , "X-TEST" , "TEST" );
を実行したら、"X-TEST:TEST"(:の後に" "無し) になるのは、
意図された動きでしょうか。送信時にヘッダを付加した場合は問
題ないんですけど、受信したメールにヘッダを付加する時、外部
のバックアップ用に作ったPGと連動させようとして嵌まりかけた
もので…。


[ ]
RE:04393 CurrentHeader関数についてNo.04395
WIZ さん 01/12/13 19:11
 
ひろ さん、こん○○は、WIZです

>> Content-Type: text/plain;
>> charset="iso-2022-jp"
>この場合なら、
>> X-Content-Type: text/plain;
>となるのは正しいです。しかしよく見かける
TAB、カットされてるんですね。気が付きませんでした。
charset="iso-2022-jp"の前に TAB が入ってます。次
からTABはBLANKに置き換えるの忘れないようにしないと
だめですね。

>Content-Type: text/plain;
>              charset="iso-2022-jp"
>という場合でも上手くいかないようですね。
そうです、こちらのパターンのつもりでした。


[ ]
RE:04395 CurrentHeader関数についてNo.04396
ひろ さん 01/12/13 19:33
 
 WIZ さん今日は、ひろです。
> TAB、カットされてるんですね。気が付きませんでした。
 意図的ではなかったんですね。
 「エディタの設定」→「送信系」→「編集」の「送信/保存する時にタブ文
字を空白に変換する」を ON にすれば、「エディタの設定」→「送信系」
の「タブ文字の表示桁数」に応じた半角空白に置き換えるはずです。

[ ]
RE:04394 CurrentHeader関数についてNo.04404
秀まるお さん 01/12/14 10:27
 
>$n = dllfuncstr( "SetHeader" , "X-TEST" , " TEST" );
>を繰り返して実行すると、"X-TEST:"の後の " " が増えていく

 内容部分の先頭に空白があることは想定してないので、しいて仕様と言えば
仕様ですが、しいて直そうと思えば直せます。

 直すとしても、単に内容部分の先頭の空白を除去するだけですけど。それで
いいのやら?

>のと、
>$n = dllfuncstr( "SetHeader" , "X-TEST" , "TEST" );
>を実行したら、"X-TEST:TEST"(:の後に" "無し) になるのは、

 少なくとも画面上ではちゃんと空白が入るようですが、X-TESTじなくてX-
TESTTESTだと空白が入らないです。

 しいて、こういう場合は空白が1個だけ入る方がいいとは前から思っていた
ので、んじゃそういう風に直してみます。

 基本的に、コロンの後ろの空白の個数は鶴亀メール側が勝手に整形してしま
うので、マクロ側で制御するのは無理です。

[ ]
RE:04404 CurrentHeader関数についてNo.04405
WIZ さん 01/12/14 10:58
 
秀まるお さん、こんにちは、WIZです。

>>$n = dllfuncstr( "SetHeader" , "X-TEST" , " TEST" );
>>を繰り返して実行すると、"X-TEST:"の後の " " が増えていく
> 内容部分の先頭に空白があることは想定してないので、しいて仕様と言えば
>仕様ですが、しいて直そうと思えば直せます。
これが気になったのが、下の、「"X-TEST:TEST"(:の後に" "無し) になる」
と言うのを回避しようとして気が付いたことなんです。実際は、"ヘッダ:"の
長さの関係だったみたいですが…。

>>$n = dllfuncstr( "SetHeader" , "X-TEST" , "TEST" );
>>を実行したら、"X-TEST:TEST"(:の後に" "無し) になるのは、
> 少なくとも画面上ではちゃんと空白が入るようですが、X-TESTじなくてX-
>TESTTESTだと空白が入らないです。
あら、本当です。追加する "ヘッダ:" が10Byte未満だと "ヘッダ: 値" にな
るんですね。いろいろテストしながらマクロの書き換えやってたんで、再現
しないパターンで投稿しまったようです。

> しいて、こういう場合は空白が1個だけ入る方がいいとは前から思っていた
>ので、んじゃそういう風に直してみます。
私的には、こちらで対応していただけるのであれば、全然問題ないです。
宜しくお願いします。


[ ]
RE:04404 CurrentHeader関数についてNo.04420
WIZ さん 01/12/15 11:51
 
秀まるお さん、こんにちは、WIZです。

1.56にて確認させていただきました。対応ありがとうございます。


[ ]