Votre approche est OK, mais votre wrapper proc doit être dans la base de données msdb.Ensuite, vous exécutez "EXEC msdb.dbo._TestSendMail"
Cela laisse toujours le problème des permissions sur dbo._TestSendMail dans msdb.Mais public/EXECUTE suffira :il n'expose que les 3 paramètres dont vous avez besoin.
En cas de doute, ajoutez AVEC CRYPTAGE. C'est assez bon pour empêcher toute personne sans droits d'administrateur système de voir le code
USE msdb
GO
CREATE PROCEDURE [dbo].[_TestSendMail]
(
@To NVARCHAR(1000),
@Subject NVARCHAR(100),
@Body NVARCHAR(MAX)
)
-- not needec WITH EXECUTE AS OWNER
AS
BEGIN
EXEC dbo.sp_send_dbmail @profile_name = N'myProfile',
@recipients = @To, @subject = @Subject, @body = @Body
END