いいね!数

1

閲覧数
157

初歩的な質問となり恐縮です。

現在、メールの送信前にメッセージボックスを表示させ、はいかいいえによりメールの送信を止めるかどうかを決めたいと考えています。

現在やったことは、コード>スクリプトライブラリ>[CoreEmailClassies_ja-JP]のQuerysendに以下のように追加をしました。

	Function QuerySend
		If Not m_calprofile Is Nothing Then
			If m_calprofile.hasitem("OnSendEnabled") Then
				If (m_calprofile.GetItemValue("OnSendEnabled")(0) = "1" )Then ' OnSend Enabled
				'////////////////////////////////ここから
					Dim answer As Integer
					answer = MessageBox("これらの宛先に送信します。よろしいですか?" & chr(10) _
							& "To : " & m_noteUIMemo.document.GetItemValue("EnterSendTo")(0)& Chr(10) _
							& "Cc : " & m_noteUIMemo.document.GetItemValue("EnterCopyTo")(0) & Chr(10)_
							& "Bcc : " & m_noteUIMemo.document.GetItemValue("EnterBlindCopyTo")(0) _	
 							,MB_YESNO, "送信前宛先最終確認")	
					 If(answer = IDNO) Then
						End
 					End If
					'////////////////////////////////ここまで追加
					m_MemoOnSendEnabled = True
					m_MemoBlankSubject = True
					m_MemoBlockOnSend = False

これでは、はいかいいえの分岐までは正常に動くのですが、そのあとのEndが実行されてもメールはそのまま実行されてしまいます。

Postsendというものが後に動いているということを有識者の方に教えていただいたのですが、アプリケーション全体で検索を書けても見つけることが出来ませんでした。

フォームに対する理解が浅く、式言語でQuerysendを呼び出している部分も見つけることができていない状況です。

Querysend上でメールの送信を中止する方法、もしくはPostsendの記述場所とメール送信を止める引数を渡す方法、または全く別の方法でもあれば知恵を貸してはいただけないでしょうか。

サーバー情報:10 | クライアント情報:Windows1010 | 
カテゴリ:Notes - その他 | タグ:
  | 質問日時:2022/04/21 18:28:16

回答・コメント

いいね!数

2

新規に作成するメールは「メール(_M)」という名前のフォームが使われます。※バージョン12の名前。バージョンによっては「メモ」かもしれません

Domino Designer を使ってこの名前のフォームを開き、下図のように「オブジェクト」タブで(図では隠れてしまっていますが)「Memo(フォーム)」を展開すると QuerySend や PostSend が現れます。(※検索しても PostSend がヒットしなかったのは、PostSend にコードが無いからと思います)

上の図の QuerySend イベントの中にある、選択した文字列の(黒い背景の)箇所「Call cMemoObject.QuerySend()」で taketo さんが修正したスクリプトライブラリがコールされています。ここでコールされたスクリプトライブラリ内の QuerySend が終わってフォームの QuerySend に戻ってくると、コールした部分の下にある残りのコードが実行されます。

 

一旦スクリプトライブラリへ追加した処理を削除して、その代わりに「メール(_M)」フォーム内の QuerySend イベントで、最上部あたりに次のコードを追加してみてはいかがでしょうか。MessageBox で No をクリックすると、Continue = False をセットしていますが、フォームの Querysend イベントが終わるときに Continue = False がセットされていると送信が行われない仕組みです。

'////////////////////////////////ここから
Dim answer As Integer
answer = MessageBox("これらの宛先に送信します。よろしいですか?" & chr(10) _
& "To : " & Source.Document.GetItemValue("EnterSendTo")(0)& Chr(10) _
& "Cc : " & Source.Document.GetItemValue("EnterCopyTo")(0) & Chr(10) _
& "Bcc : " & Source.Document.GetItemValue("EnterBlindCopyTo")(0) _
,MB_YESNO, "送信前宛先最終確認")	

If(answer = IDNO) Then
    Continue = False
    Exit Sub
End If
'////////////////////////////////ここまで追加

 

回答日時:2022/04/22 6:05:53

いいね!数

1

迅速で分かりやすい回答ありがとうございます。非常に助かりました。

当初想像していた通りの動きを組み込むことができたと同時に、フォームとイベント周りについて自分なりに少し理解することが出来ました。

回答日時:2022/04/22 10:45:39