MAPIインターフェースについてNo.10793
いっぷく さん 04/06/14 09:34
 
こんにちは、いっぷくです
OEで動いているルーチンが、鶴亀では動かなくて困っています。
こちらの環境は、
Windows XP SP2 + VB6 SP6 + 鶴亀Ver3.57β7
コンポーネント  Microsoft MAPI Controls 6.0  MSMAPI32.ocx
鶴亀の設定では、上級者向け設定の中の
MAPIによる外部アプリケーションからのメールの参照を許可する
にチェックを入れています。


下記のルーチンで、OEでは問題ないですが、鶴亀ではエラーになります。
エラー内容は、

エラー 32014
受信者が見つかりません。

回避方法など心当たりがございましたら教えてください。
今は、通常使うメーラーをOEにしてしのいでいますが、非常に不便です。
よろしくお願いいたします。



Private Sub Command1_Click()
    Dim mailAddress As String
    Dim Subject     As String
    Dim message     As String
   
    mailAddress = "xxx@yyyyyy.co.jp"
    Subject = "こんにちは。"
    message = "これは本文です"
   
    MAPISession1.DownLoadMail = False
    MAPISession1.LogonUI = True
    MAPISession1.NewSession = True
    MAPISession1.SignOn
    With MAPIMessages1
        .SessionID = MAPISession1.SessionID
        .Compose                   '新しいメッセージを作成します。
        .MsgSubject = Subject
        .MsgNoteText = message
        If mailAddress <> "" Then
            .RecipIndex = 0
            .RecipAddress = mailAddress  '←宛先
            .RecipType = 1
            .RecipType = mapToList       'cc:=mapCcList
            .ResolveName     '<<<★★★ここでエラーがでます
        End If
        .Send True       'True=送信ダイアログが出る False=即送信
    End With
    MAPISession1.SignOff
End Sub

[ ]
RE:10793 MAPIインターフェースについてNo.10797
秀まるお さん 04/06/14 13:12
 
 MAPIResolveNameという関数を鶴亀メール側で実装しつつも、その関数が、
MAPI_E_UNKNOWN_RECIPIENTというエラーコードを返す作りになってまして、それ
が原因でダメだったようです。

 アドレス帳を使って名前解決するのが適当なのかもしれませんが、それはそれ
で修正が困難なので、とりあえず名前無しのまま適当に正常終了させたらうまく
動作しました。

 ということで、次のバージョンにて対応することにさせていただきます。

 他にも探せば問題が出てくる可能性はあります。何か不都合な点が見つかった
ら連絡ください。

[ ]
RE:10797 MAPIインターフェースについてNo.10798
いっぷく さん 04/06/14 13:45
 
さっそくの対応、ありがとうございます。
今までずっと困り果てていたので、大変助かります。
ほかにそのような報告がなかったので、僕だけの固有の問題だろうと思ってい
ました。・・・ということは、同じ使い方をされている方がいなかったという
ことですね・・
(実は、これができなかったら、鶴亀をやめなければならない状況まで来てい
ました)

> アドレス帳を使って名前解決するのが適当なのかもしれませんが、それはそれ
>で修正が困難なので、
そうですね。
アドレスは保障されたアドレスとして渡しているので、僕は、かまいません。

> ということで、次のバージョンにて対応することにさせていただきます。
心待ちにしていますので、よろしくお願いいたします。

[ ]
RE:10798 MAPIインターフェースについてNo.10799
秀まるお さん 04/06/14 14:00
 
 先ほどアップロードしたV3.57正式版にて対応しました。そろそろアップロー
ドしようかなぁと思ってた所にぎりぎり間に合いました。

 ということでお願いします。

[ ]
RE:10799 MAPIインターフェースについてNo.10803
いっぷく さん 04/06/14 14:28
 

> 先ほどアップロードしたV3.57正式版にて対応しました。そろそろアップロー
>ドしようかなぁと思ってた所にぎりぎり間に合いました。
光速の対応ですね! ありがとうございました。

さて、さっそく試してみました。
結果的には、ちゃんと動いて満足ですが、僕自身も、ちょっと誤解しているこ
とに気が付いてしまいまして、後続の方のために報告しておきます。

まず、以前に .ResolveName の場所でエラーが出るので、そこをコメントアウ
トすると、新規メール作成ダイアログが出なくて即送信されちゃいました。
ダイアログを出すか即送信かは、
.Send True       'True=送信ダイアログが出る False=即送信
という文で指定してるので、「これは .ResolveName がエラーを返しているせ
いなんだろう」と思い込んでしまっていたんですが、じつは、即送信は鶴亀の
設定に従うということが今回わかりました。

ということは、ダイアログか、即送信かはプログラムからは制御できないこと
になっていますが、これはこれでちょっと困るかもしれません。
今のプログラムは、新規作成ダイアログを出すようにしているものだけですが、
将来は、即送信も使うかもしれません。

このあたりの判断は作者様にゆだねることとしますが、いずれ出てくる要望か
もしれません。

以上、よろしくお願いいたします。

[ ]
RE:10803 MAPIインターフェースについてNo.10805
秀まるお さん 04/06/14 14:45
 
 改めてMAPISendMailの説明を見てみたら、flFlagsというパラメータに
MAPI_DIALOG フラグがセットされてるかどうかによって、「今すぐ送信」か「新
規メールのウィンドウを出すだけ」か切り替えないといけないんですね。

 そのようなパラメータがあることなんぞすっかり知らずに、「全般的な設定・
上級者向け・送信要求されたメールの処理方法」なんて設定まで作ってしまいま
した。

 なんとか対応します。(次のV3.59βにて)

[ ]
RE:10805 MAPIインターフェースについてNo.10806
いっぷく さん 04/06/14 15:15
 
さっそくの返信ありがとうございます。
これに絡んで気が付いたことで質問です。
上級者向け・MAPI の中の

□MAPIによる外部アプリケーションからのメールの参照を許可する

にチェックを入れても、はずしてもメールは送られちゃいますが、
これは仕様ですか?
もしそうなら、上記設定はどのような効果があるんでしょうか?

僕は、ウィルス対策で、僕が作っているようなプログラムからは送信できない
ようになるのかと思っていましたが・・・・

[ ]
RE:10806 MAPIインターフェースについてNo.10808
秀まるお さん 04/06/14 15:29
 
> にチェックを入れても、はずしてもメールは送られちゃいますが、
> これは仕様ですか?

 これは仕様です。あくまで参照を許可/禁止するかどうかの指定だけです。

 MAPIを使って自身をばらまくウィルスは、MAPIを使ってメールを片っ端から取
得して、そこの中のメールアドレス宛に自分自身をばらまくそうなので、それだ
け禁止できるようにしました。しかし、最近はMAPIを使うタイプよりも、ハード
ディスクを片っ端からなめまわすタイプが多いようなので、ここのオプションは
あまり意味がなさそうです。

 Shuriken Proみたいにメールアドレスを偽装してファイルに保存するようにす
れば、万が一ウィルス完成してもウィルスがばらまかれなくて済みそうではあり
ますが、そういう修正はデータ形式の根幹に関わるので、今のところ手を出さな
いでいます。(万が一レベルダウンしたら怖いので)

[ ]
RE:10808 MAPIインターフェースについてNo.10809
秀まるお さん 04/06/14 15:40
 
> れば、万が一ウィルス完成しても

 ウィルス感染の間違いです。

[ ]
RE:10808 MAPIインターフェースについてNo.10810
いっぷく さん 04/06/14 15:41
 
お世話になります。

> MAPIを使って自身をばらまくウィルスは、MAPIを使ってメールを片っ端から取
>得して、そこの中のメールアドレス宛に自分自身をばらまくそうなので、それだ
>け禁止できるようにしました。

なるほど、よくわかりました。
また何かありましたら報告いたしますので、よろしくお願いいたします。

どうもありがとうございました。

[ ]
RE:10808 MAPIインターフェースについてNo.10814
いっぷく さん 04/06/15 13:45
 
お世話になっています。
MAPIへの対応ありがとうございます。

Ver3.59β1 を試してみました。

以前にも書いたように、プログラム中からは、

 MAPIMessages1.Send True    'True=送信ダイアログが出る False=即送信

としています。

フラグが True の場合は鶴亀の設定とは関係なくダイアログが出ます。
しかし、False (即送信) を指定すると、鶴亀の設定が優先されるようです。
ちなみに、VBでは、指定しないと False となるようです。
このままでは、即送信をプログラムから制御できません。

鶴亀側で False と 指定なし が区別できないとなると、
僕個人としては、鶴亀の設定はもう必要ないように思うんですが・・
ただし、送信トレイへ移動はMAPIのオプションにはないので、
誰かには有益?かもしれませんが・・


たびたびお手を煩わせて申し訳ありません。
ご確認お願いいたします。

[ ]
RE:10814 MAPIインターフェースについてNo.10815
秀まるお さん 04/06/15 14:41
 
> しかし、False (即送信) を指定すると、鶴亀の設定が優先されるようです。
> ちなみに、VBでは、指定しないと False となるようです。
> このままでは、即送信をプログラムから制御できません。

 「即送信」を、鶴亀メール側で抑止できるという意味になりますが、これはこ
れで、意図した動作のつもりです。つまり、MAPI経由で勝手にメールが送られて
しまうのを防ぐ目的に使えるということになります。

 「今すぐ送信」に設定しておけば問題ないので、別に困ることは無いと思いま
すが…。

[ ]
RE:10815 MAPIインターフェースについてNo.10816
いっぷく さん 04/06/15 18:26
 
お世話になっています。

> 「即送信」を、鶴亀メール側で抑止できるという意味になりますが、これはこ
>れで、意図した動作のつもりです。
わかりました。『仕様』ということですね。
なんとかこちらのほうで対応します。

いろいろとありがとうございました。

[ ]
RE:10816 MAPIインターフェースについてNo.10817
秀まるお さん 04/06/15 18:43
 
> なんとかこちらのほうで対応します。

 ということは、鶴亀メールの設定に関係なく無理矢理「今すぐ送信」させる手
段が必要ってことですかね?。

 一応、可能といえば可能ですが…。方法が必要でしたら連絡ください。

[ ]
RE:10817 MAPIインターフェースについてNo.10818
いっぷく さん 04/06/15 20:03
 
どうも、お世話になります。
> ということは、鶴亀メールの設定に関係なく無理矢理「今すぐ送信」させる手
>段が必要ってことですかね?。


今度作ろうと思っているのは、監視用のプログラムのようなもので、あるタイ
ミングでメールを送るというものです。
ただメールを送るだけならば、それなりのコンポーネント(basp21などなど)
を使えば、メールを確認なしで送ることができますが、送ったメールを、ほか
のメールと一緒に鶴亀で管理したいと思うと、MAPIが手軽でいいと思ったんで
す。とにかく、鶴亀の情報管理機能は強力ですからね。

でも、必要ですかとたずねられれば、必要ですと答えたいです。

個人的にはMAPIでは、『即送信』機能があるので、そのとおりに動いてくれる
のがうれしいわけですが、このあたりは、まるおさんの考えもあることでしょ
うし、無理にとは言いません。それを制限することを仕様にしていただいても、
一向に構いません。後は、ユーザーの裁量で考えることかもしれませんから。

ご検討、よろしくお願いいたします。

[ ]
RE:10818 MAPIインターフェースについてNo.10819
秀まるお さん 04/06/15 22:08
 
 鶴亀メールの動作環境を書き換えてからMAPI呼び出しすればいいです。

 秀丸マクロで言うと、

    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregnum "MapiSend", 0;
    closereg;

 という形になります。VBでの書き方はよく分かりません。

 上記のようにレジストリを書き換えてから送信すれば、「今すぐ送信」となり
ます。秀丸マクロでの「EnvChanged」を実行する必要はなく、単にレジストリを
書き換えるだけでいいです。

 MAPIを使わずに、いっそのことturukame.exeをコマンドライン付きで起動する
手もあるにはあります。メールソフトを鶴亀に限定しないということなら、その
方が手っ取り早いかもしれません。エラー発生を検出することも出来るし。

 うちの会社の過去ログサイトも、何らかの異常が発生したらコマンドラインか
らメールを送るように作ってあります。コマンドラインを登録可能なソフトなら
なんでも使えて便利です。VBでソフト作る手間もいりません。

 例えば、

 turukame.exe sendnow to=xxxxxxx@maruo.co.jp subject=Error-report body=
error

 とか、そういうコマンドラインを指定しておくだけです。Windows2000/XPでの
「タスク」にも登録できます。

[ ]
RE:10819 MAPIインターフェースについてNo.10820
いっぷく さん 04/06/15 22:29
 
いろいろとありがとうございます。
”僕のほうで対応”と書いたときに頭に浮かんだのがちょうどおっしゃっている
2つの方法でした。レジストリの書き換えも、コマンドラインでの実行も簡単な
ことなので検討してみようと思っていたところです。
その路線で考えますので、今回は、これで満足です。
MAPIを使っておられる方が少ない中、お付き合いくださって本当にありがとうご
ざいました。さらにいいメーラーになるように期待しています。


(独り言です)
#秀丸がCOMインターフェースを持つとすごいだろうな・・と思う今日この頃です。

[ ]
RE:10820 MAPIインターフェースについてNo.10821
アルビレオ さん 04/06/16 06:47
 
鶴亀ユーザーのアルビレオです。

独り言への反応なので聞き流してもらってもけっこうですが、個人的な意見を。

>(独り言です)
>#秀丸がCOMインターフェースを持つとすごいだろうな・・と思う今日この頃です。

Outlook Expressがよく問題になるのは、実装そのものよりもCOMコンポーネント
としての柔軟性がさまざまな穴になってしまっている気がします。
そういうリスクがあるのでCOMインターフェイスにはあまり賛成したくありませ
ん。
(鶴亀側から外部コンポーネントを呼び出さなければあまり気にする必要はない
のかもしれませんが)

COMコンポーネントとして限定された使い方をするならOutlook Expressはなかな
か便利でよくできたソフトだと思います。
送信専用ならOutlook Expressでも危険性はほとんどないだろうし、目的によっ
て使い分けるのも悪くはない選択肢ではないでしょうか。
自分自身のアカウントにもCCを送信しておいて、その受信は鶴亀で行えば一元管
理もできますから。

[ ]
RE:10821 MAPIインターフェースについてNo.10822
秀まるお さん 04/06/16 09:58
 
 念のためコメントしておきますが、COMインタフェースを実装する予定はあり
ません。

[ ]