こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

sp_send_dbmailでの戻り値について

メール送信処理において、
以下の実験を行った際、エラーとして処理したいのですが、
エラー値を取得する事が出来ず(Returnには常に0が入る)困っています。
また、【mailitemid】のヘルプを見ると送信が成功した場合、IDが入ってくると記載があったので、
Returnにセットしてみましたが、メール送信の成否に関わらず0でした。

ーーーーーー記ーーーーーー
1.プロファイル情報が正しく無い時(送信サーバアドレスが間違えてる等)
※当然メールは飛んできません

--------------------------メール送信プログラム開始--------------------------
ALTER PROCEDURE [dbo].[SEND_MAIL]
@pra_profile_name nvarchar(1000),
@pra_recipients nvarchar(1000),
@pra_subject nvarchar(1000),
@pra_body nvarchar(1000),
@pra_file_attachments nvarchar(1000)
AS
DECLARE @get_return int
DECLARE @mailitemid int
BEGIN TRY
exec @get_return = msdb.dbo.sp_send_dbmail
@profile_name = @pra_profile_name,
@recipients = @pra_recipients,
@subject = @pra_subject,
@body = @pra_body,
@file_attachments = @pra_file_attachments,
@mailitem_id = @mailitemid OUTPUT;
END TRY

-- 例外処理
BEGIN CATCH
RETURN ERROR_NUMBER()
END CATCH

Return @get_return
--------------------------メール送信プログラム終了--------------------------

以上、何卒宜しくお願い致します。

投稿日時 - 2014-04-22 15:55:58

QNo.8564575

困ってます

質問者が選んだベストアンサー

あまり詳しくはないのですが、

msdb.dbo.sp_send_dbmail
は、データベース メール キューに格納するところまでしか処理しなくって、
実際に、メールサーバとの接続をはじめとした送信処理は別のプログラムが動いているので
データベース メール キューに格納することができたら戻り値0で戻ってくる。
実際に、メールサーバとの接続をはじめとした送信処理はその後で動くはずです。

>【mailitemid】のヘルプを見ると送信が成功した場合、IDが入ってくる
のは、
mailitem_id パラメタ。OUTPUTをつけて変数をセットしておくとそこに値がはいるはず。
http://technet.microsoft.com/ja-jp/library/ms190307.aspx
より。

で、処理結果を知りたければ、上記のIDを元に
http://technet.microsoft.com/ja-jp/library/ms187646.aspx
あたりに載って入るViewを探してみるしかないです。
(どのviewを見ればいいかなどは試してみないとわからないので。)

投稿日時 - 2014-05-10 03:17:47

お礼

お礼が遅くなってしまい御免なさい
メールのカタログビューでる【sysmail_allitems 】を見て
判断する事に致しました。

有難う御座いました。

投稿日時 - 2014-05-19 11:24:06

このQ&Aは役に立ちましたか?

13人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-