差し込みメール生成マクロ誤動作?No.00038
いのしし さん 16/06/15 15:02
 
CSVファイルの各項目に「"」が含まれていると、その項目が反映されず空白になって
しまいました。

たとえば、「引用符"を含む」というふうになっている項目は、CSVファイル内の表現
では

"引用符""を含む"

となるようですが、<<カラム1>>などとして差し込もうとしても、その項目がすっぽ
り抜けてしまいます。

[ ]
RE:00038 差し込みメール生成マクロ誤動作No.00039
秀まるお2 さん 16/06/15 18:44
 
 テストしてみたら、たしかにダメでした。

 実はこのマクロでのCSVファイルの読み込み関係の処理は、秀丸メールの提供
してる関数(tkinfo.dllの関数)を呼び出して処理してまして、たぶんそっちが
バグってるんだと思います。

 そっちの方、つまり秀丸メールの方で修正予定とさせていただきます。

 次のVersion 6.54β15にて修正させていただきます。

[ ]
RE:00038 差し込みメール生成マクロ誤動作No.00041
いのしし さん 16/06/16 08:12
 
関係があるかもしれないので同じスレッドに書きます。

"AAA""B""C" <a@b.cc>,X

という内容のCSVファイルで
To: <<カラム1>>
と指定し、本文を
<<カラム1>> <<カラム2>>
としておくと、「このメールには宛先が指定されていません。」というエラーメッ
セージが出て「1通のメールを未送信フォルダに生成しました。」と出ますが、メー
ルは生成されていません。

さらに、このときテンプレートのBcc:に何かアドレスを指定しておくと、エラーメッ
セージが出ずメールが生成されますが、その宛先はFrom:に指定していた宛先がコ
ピーされています。本文は
  <a@b.cc>
となっているので、CSVファイルの中のアドレス部分は<<カラム2>>と解釈されている
ようにも思えます。

[ ]
RE:00041 差し込みメール生成マクロ誤動作No.00042
いのしし さん 16/06/16 08:47
 
修正します。
>"AAA""B""C" <a@b.cc>,X
というのは書式として間違っていました。
"AAA""B""C <a@b.cc>",X
が正しいようです。

これだと、
>としておくと、「このメールには宛先が指定されていません。」というエラーメッ
>セージが出て「1通のメールを未送信フォルダに生成しました。」と出ますが、メー
>ルは生成されていません。
>
>さらに、このときテンプレートのBcc:に何かアドレスを指定しておくと、エラーメ
>ッセージが出ずメールが生成されますが、その宛先はFrom:に指定していた宛先がコ
>ピーされています。

というところは一緒ですが、本文は
 X
となっていましたので、<<カラム1>>は空白、<<カラム2>>はX、と解釈されているよ
うです。

[ ]
RE:00042 差し込みメール生成マクロ誤動作No.00044
秀まるお2 さん 16/06/16 10:47
 
 宛先が空のメールだとエラーになる(未送信フォルダに保存できない)のは、
これはしょうがないかなぁと思います。ただ、その場合にマクロが特にエラーを
検知してなくて、最終的に「n通のメールを未送信フォルダに生成しました」と
出るのはおかしいと思います。

 マクロの中で、

    #n = dllfunc("SendLater");

 としてるんですが、その返り値がエラーかどうか見てないのが良くないです。
その辺修正してまたアップロードしなおしさせていただきます。

> となっていましたので、<<カラム1>>は空白、<<カラム2>>はX、と解釈されているよ
> うです。

 ""で囲んだカラムか空扱いになってしまうのは秀丸メールの方のバグなので、
これは次のβ版にて修正させていただきます。

 マクロの修正版も含めて今日中にアップロードさせていただきます。

[ ]
RE:00044 差し込みメール生成マクロ誤動作No.00046
いのしし さん 16/06/16 11:42
 
>さらに、このときテンプレートのBcc:に何かアドレスを指定しておくと、エラーメ
>ッセージが出ずメールが生成されますが、その宛先はFrom:に指定していた宛先がコ
>ピーされています。

についても、よろしく。

[ ]
RE:00046 差し込みメール生成マクロ誤動作No.00047
秀まるお2 さん 16/06/16 12:15
 
>さらに、このときテンプレートのBcc:に何かアドレスを指定しておくと、エラーメ
>ッセージが出ずメールが生成されますが、その宛先はFrom:に指定していた宛先がコ
>ピーされています。

 すみません。見逃してました。

 今改めてテストしてみたんですけども、Bcc:ヘッダが勝手に書き換わるはずは
無いような気がします。

 とりあえずテストとして、

From: from@hogehoge.com
To:   <<カラム1>>
Bcc:  bcc@hogehoge.com

<<カラム2>>

 のようなメール(@は実際には半角の@)を作って、CSV形式ファイルとして、

,aaa
,bbb

 のようなのを作ってテストしたんですが、それで生成されたメールは、To:
ヘッダが空で、Bcc:ヘッダは「bcc@hogehoge.com」のままになるようでした。

 Bcc:ヘッダに<<カラム1>>とか何か書いたのであればそこは書き換え対象にな
りますが、固定文字列が入ってるだけだと何も書き換えるはずは無いような気が
します。

 ちょっと分からないので、とりあえず今アップロードした最新版で一回テスト
してみて欲しいです。

32bit版:
http://hide.maruo.co.jp/software/bin3/hmmail654b15_signed.exe

64bit版:
http://hide.maruo.co.jp/software/bin3/hmmail654b15_x64_signed.exe

 マクロも直しました。

http://hide.maruo.co.jp/lib/tkmacro/insertionmail-v101.html

 それでもダメでしたら、例えばマクロの中の、

    $template = gettext( #xsel, #ysel, x, y );

 となってる所の直後に、

    message $template;

 とか入れてみて、マクロがテンプレートとして認識してる文字列がどうなって
るか確認してみる(Bcc:ヘッダが書き換わってないか確認してみる)とかって作
戦でどうでしょうか。

 あるいは、

        insertfix $template;

 とやった直後に「endmacro;」を入れてみて、そこのメールのBcc:ヘッダが書
き換わってないか確認するとか、あとは、

        #n = dllfunc("SendLater");

 の直前にendmacroを入れてマクロを止めてみて、「あとで送信」を実行する直
前のメール内容がどうなってるか確認してみるとか・・・。

[ ]
RE:00047 差し込みメール生成マクロ誤動作No.00048
いのしし さん 16/06/16 12:49
 
>>さらに、このときテンプレートのBcc:に何かアドレスを指定しておくと、エラーメ
>>ッセージが出ずメールが生成されますが、その宛先はFrom:に指定していた宛先がコ
>>ピーされています。

> 今改めてテストしてみたんですけども、Bcc:ヘッダが勝手に書き換わるはずは
>無いような気がします。

Bcc:が書き換わるのではありません。「その宛先」というのはTo:のことで、
To: <<カラム1>>
としていた場合、CSVファイルのカラム1に引用符があってエラーになるような場合、
Bcc:があるとエラーメッセージが出るべきところですが出ずに、To:のあて先がFrom:
の内容(つまり自分自身)になってしまうということです。

新しいバージョンではそもそもCSVファイルを正しく読み込むはずなので、こういう
異常は出ないでしょうが、起きるべきでないことが起きていたのは何か期待と違う動
作をするコードがあったはずなので、調べておいていただくほうが良いのではないか
と思います。

[ ]
RE:00047 差し込みメール生成マクロ誤動作No.00049
いのしし さん 16/06/16 12:58
 
お示しいただいた例を使って説明すると、

> とりあえずテストとして、
>
>From: from@hogehoge.com
>To:   <<カラム1>>
>Bcc:  bcc@hogehoge.com
>
><<カラム2>>
>
> のようなメール(@は実際には半角の@)を作って、CSV形式ファイルとして、
>
>,aaa
>,bbb
>
> のようなのを作ってテストしたんですが、

CSV形式ファイルとして

"AAA""B""C <a@b.cc>",X

でマクロを実行すると、
To: from@hogehoge.com
になるという意味です。

[ ]
RE:00048 差し込みメール生成マクロ誤動作No.00050
秀まるお2 さん 16/06/16 13:17
 
 よく理解してなくてすみません。状況理解しました。

 実は、秀丸メールでは、To:やCc:の宛先が空っぽでBcc:ヘッダだけで宛先指定
されたメールを送信しようとすると、それはよろしくないってことで、2種類の
選択肢を提示する作りにしています。

 1つは、今回起きてる「To:にFrom:のメールアドレスを入れてしまう」って方
法で、もう1つは「To: Undisclosed-recipients:;」ってヘッダを入れてしまう
方法になります。

 例えばOutlook ExpressでBcc:のみのメールを送ると、後者の「Undisclosed-
Recipients:;」ってヘッダがTo:にセットされます。

 マクロのSendLater関数で送信しようとすると、この問い合わせが出ずに、前
者の動作固定になるようです。これはちょっとよろしくないので、SendLater関
数を使った場合でも問い合わせが出るように修正させていただきます。(また次
のβ版で)

[ ]