• Great article I found after searching for long time in Internet about impersonation and cross database accessing.

    I got one simple solution perticularly for database mail.

    Simply give execute permission on the sp "sp_send_dbmail" to the role "public" in the database "msdb".

    Any call to this sp from other database/sp/function/.. with impersination (or without impersination I hope) will be take care.

    You can get rid of the most annoying error "The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'"